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-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 Case | Pattern | Nodes Used | Latency |
|---|
| Field renaming / reformatting | Schema Mapping | Liquid only | < 1ms |
| AI enrichment (skills, classification) | Branch & Merge | AI + JSON Merge | 1–5s |
| SEO generation with context prep | Prepare → Transform → Merge | Liquid + AI + JSON Merge | 1–5s |
| Multi-field extraction | Parallel AI | Multiple AI + JSON Merge | 1–5s (parallel) |