HR & hiring

2 Workflows2 Response Formats3 Backend Steps

Job Application Screening

Screens applications, scores the fit, and drafts the next-step email - even when you're hiring solo.

Works with

Primary
Backup

Pick your providers and models. The download is customized to your selections.

Best for

  • Small businesses hiring
  • Startups
  • Solo founders

How the data flows

Requests move between your backend and the AI workflows automatically. Here's the exact path a request takes.

Customer request arrives

AI workflow

application_triage_workflow

Scores the application and starts screening

Backend event

application_received

screen_and_respond fires, then starts application_response_workflow

Backend event

response_ready

AI workflow

application_response_workflow

Decides next steps and drafts the candidate email

Customer receives the response

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

role_match_scorekey_skillsexperience_yearsred_flags

Response format

application_response_response

Screen decision and next-step email

screen_decisionnext_stepscandidate_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

Model & backupsLearn more
openai · gpt-5.6-terraBackup 1: anthropic · claude-haiku-4-5-20251001

The primary model plus automatic fallback models if the primary is unavailable.

Response formatLearn more
application_triage_responseReturns a structured object instead of free-form text.

The structured JSON this workflow returns. Fields are defined by you and enforced by ModelRiver.

Customer data it usesLearn more
candidate_nameresume_textjob_role

Fields you include in each request so the workflow can personalise its answer.

Memory windowLearn more
15 minutes

Identical requests are answered from memory within this window, which is faster and cheaper.

Automated pipelineLearn more
application_receivedscreen_and_respondstarts application_response_workflowresponse_ready
How multi-step pipelines work

Steps that run automatically around this workflow, in order.

Production mode

Runs live against your connected AI provider.

application_response_workflow

Decides next steps and drafts the candidate email

Model & backupsLearn more
anthropic · claude-haiku-4-5-20251001Backup 1: openai · gpt-5.6-terra

The primary model plus automatic fallback models if the primary is unavailable.

Response formatLearn more
application_response_responseReturns a structured object instead of free-form text.

The structured JSON this workflow returns. Fields are defined by you and enforced by ModelRiver.

Customer data it usesLearn more
candidate_nameresume_textjob_role

Fields you include in each request so the workflow can personalise its answer.

Production mode

Runs live against your connected AI provider.

How to use it

  1. 1

    Download the template

    The file is a portable JSON bundle - safe to share and easy to read.

  2. 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. 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
modelriver-job-application-screening-template-v1.json3.8 KB
{
  "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.