Skip to main content

Extract Requirements & Responsibilities

Parse job descriptions to extract structured requirements and responsibilities using AI, then merge back with the original data.

Flow

Configuration

AI Node:
  • Model: google/gemini-2.0-flash-001
  • System Prompt: “You are a job data extraction assistant. Extract requirements (must-have and preferred) and key responsibilities from the job description. Always respond with valid JSON.”
  • User Prompt: “Extract requirements and responsibilities from this job posting:\n\n{{input}}”
  • Output Schema:
{
  "type": "object",
  "properties": {
    "requirements": {
      "type": "object",
      "properties": {
        "must_have": { "type": "array", "items": { "type": "string" } },
        "preferred": { "type": "array", "items": { "type": "string" } }
      }
    },
    "responsibilities": { "type": "array", "items": { "type": "string" } }
  }
}
JSON Merge Node:
  • Strategy: Deep
  • Conflict Resolution: Patch Wins

Result

The original job object is enriched with structured requirements and responsibilities fields extracted by AI. All original fields (title, company, location, etc.) are preserved through the merge.

Generate SEO Metadata

Generate SEO-optimized titles, meta descriptions, slugs, and keywords for job postings. Uses a Liquid node to prepare a focused context first, reducing AI token usage.

Flow

Configuration

Liquid Node — prepares a concise context for the AI:
{
  "title": "{{ data.title }}",
  "company": "{{ data.company.name }}",
  "location": "{{ data.location.city }}, {{ data.location.country }}",
  "is_remote": {{ data.is_remote }},
  "description_preview": "{{ data.description | strip_html | truncate_words: 100 }}"
}
AI Node:
  • Model: google/gemini-2.0-flash-001
  • System Prompt: “Generate SEO metadata for a job posting. Respond with valid JSON only.”
  • User Prompt: “Generate SEO-optimized metadata for this job:\n\n{{input}}”
  • Output Schema:
{
  "type": "object",
  "properties": {
    "seo_title": { "type": "string", "description": "Max 60 characters" },
    "meta_description": {
      "type": "string",
      "description": "Max 155 characters"
    },
    "slug": { "type": "string", "description": "URL-safe slug" },
    "keywords": {
      "type": "array",
      "items": { "type": "string" },
      "description": "5-10 keywords"
    }
  }
}
JSON Merge Node:
  • Strategy: Deep
  • Conflict Resolution: Patch Wins

Result

The original job object gains SEO fields (seo_title, meta_description, slug, keywords) while preserving all original data. Ready for search engine indexing.

Schema Mapping

Use a Liquid node to remap job fields to match your database schema. No AI needed — this is a pure Liquid transformation that runs in sub-millisecond time.

Flow

Configuration

Liquid Node — remaps Jobo’s schema to your internal database schema:
{
  "external_id": "{{ data.id }}",
  "job_title": "{{ data.title }}",
  "employer_name": "{{ data.company.name }}",
  "employer_logo": "{{ data.company.logo }}",
  "employer_url": "{{ data.company.url }}",
  "city": "{{ data.location.city }}",
  "state": "{{ data.location.state }}",
  "country": "{{ data.location.country }}",
  "remote_allowed": {{ data.is_remote }},
  "description_html": "{{ data.description | json_escape }}",
  "apply_link": "{{ data.apply_url }}",
  "date_posted": "{{ data.published_at | date: '%Y-%m-%d' }}",
  "slug": "{{ data.title | slugify }}-{{ data.company.name | slugify }}-{{ data.id | slice: 0, 8 }}",
  "tags": [{% for tag in data.tags %}"{{ tag }}"{% unless forloop.last %}, {% endunless %}{% endfor %}]
}

Result

Each job is remapped from Jobo’s standard schema to your custom database schema. Because this uses only Liquid (no AI), it runs in under 1 millisecond per job and produces 100% deterministic results.
Schema mapping is the simplest pipeline pattern and a great starting point. If you only need to rename fields and format dates, you don’t need AI at all.

When to Use Each Pattern

Use CasePatternNodes UsedLatency
Field renaming / reformattingSchema MappingLiquid only< 1ms
AI enrichment (skills, classification)Branch & MergeAI + JSON Merge1–5s
SEO generation with context prepPrepare → Transform → MergeLiquid + AI + JSON Merge1–5s
Multi-field extractionParallel AIMultiple AI + JSON Merge1–5s (parallel)