HR & hiring
Job Application Screening
Screens applications, scores the fit, and drafts the next-step email - even when you're hiring solo.
How the data flows
Requests move between your backend and the AI workflows automatically. Here's the exact path a request takes.
AI workflow
application_triage_workflow
Scores the application and starts screening
Backend event
application_received
Backend event
response_ready
AI workflow
application_response_workflow
Decides next steps and drafts the candidate email
What you get
Every template is built from two kinds of pieces: Workflows and Response Formats.
Workflow
application_triage_workflow
Scores the application and starts screening
Workflow
application_response_workflow
Decides next steps and drafts the candidate email
Response format
application_triage_response
Fit score and notes from the application
Response format
application_response_response
Screen decision and next-step email
Details
The full specification of each workflow, with plain-English explanations. Everything below is set in the downloaded file and can be changed after import.
application_triage_workflow
Scores the application and starts screening
The primary model plus automatic fallback models if the primary is unavailable.
The structured JSON this workflow returns. Fields are defined by you and enforced by ModelRiver.
Fields you include in each request so the workflow can personalise its answer.
Identical requests are answered from memory within this window, which is faster and cheaper.
Steps that run automatically around this workflow, in order.
Runs live against your connected AI provider.
application_response_workflow
Decides next steps and drafts the candidate email
The primary model plus automatic fallback models if the primary is unavailable.
The structured JSON this workflow returns. Fields are defined by you and enforced by ModelRiver.
Fields you include in each request so the workflow can personalise its answer.
Runs live against your connected AI provider.
How to use it
- 1
Download the template
The file is a portable JSON bundle - safe to share and easy to read.
- 2
Open a project in ModelRiver
Sign in, pick a project, and make sure the AI providers used by this template are connected. You can connect them from the Providers section.
- 3
Import it
Open the Import button in your project, paste or upload the file, review the preview, and confirm. Everything is created atomically, so nothing is overwritten. How import & export works
Template file
Technical users can inspect the raw bundle below.
View full template JSON
{
"version": 1,
"structures": [
{
"name": "application_triage_response",
"description": "Fit score and notes from the application",
"example": {
"role_match_score": 78,
"key_skills": [
"python",
"rest apis",
"postgres"
],
"experience_years": 4,
"red_flags": [
"no relevant portfolio"
]
},
"schema": {
"type": "object",
"properties": {
"role_match_score": {
"type": "number"
},
"key_skills": {
"type": "array",
"items": {
"type": "string"
}
},
"experience_years": {
"type": "number"
},
"red_flags": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"role_match_score",
"key_skills",
"experience_years",
"red_flags"
],
"additionalProperties": false
}
},
{
"name": "application_response_response",
"description": "Screen decision and next-step email",
"example": {
"screen_decision": "advance",
"next_steps": "Invite the candidate to a 30-minute intro call",
"candidate_email": "Thanks for applying - we'd love to schedule a quick call."
},
"schema": {
"type": "object",
"properties": {
"screen_decision": {
"type": "string",
"enum": [
"advance",
"on_hold",
"decline"
]
},
"next_steps": {
"type": "string"
},
"candidate_email": {
"type": "string"
}
},
"required": [
"screen_decision",
"next_steps",
"candidate_email"
],
"additionalProperties": false
}
}
],
"workflows": [
{
"name": "application_triage_workflow",
"description": "Scores the application and starts screening",
"provider": "openai",
"model": "gpt-5.6-terra",
"backups": [
{
"provider": "anthropic",
"model": "claude-haiku-4-5-20251001"
}
],
"request_type": "chat",
"system_instructions": "Screen the job application: score how well the candidate matches the role, list their key skills, estimate years of relevant experience, and flag any red flags. Stay factual and fair.",
"structure": "application_triage_response",
"customer_fields": [
"candidate_name",
"resume_text",
"job_role"
],
"test_mode": false,
"cache_window_seconds": 900,
"backend_pipeline": {
"enabled": true,
"events": [
{
"name": "application_received"
},
{
"name": "screen_and_respond",
"target_workflow": "application_response_workflow"
},
{
"name": "response_ready"
}
]
}
},
{
"name": "application_response_workflow",
"description": "Decides next steps and drafts the candidate email",
"provider": "openai",
"model": "gpt-5.6-terra",
"backups": [
{
"provider": "anthropic",
"model": "claude-haiku-4-5-20251001"
}
],
"request_type": "chat",
"system_instructions": "Based on the screening score, choose the next step: advance strong candidates to an interview, hold borderline ones, or decline weak matches. Draft a polite, professional email for the candidate.",
"structure": "application_response_response",
"customer_fields": [
"candidate_name",
"resume_text",
"job_role"
],
"test_mode": false
}
]
}Looking for something else?
More templates are on the way. In the meantime, you can build your own workflows from scratch in the ModelRiver console.