Templates/HR Tech & Recruiting/Resume screening + ranking

Resume screening + ranking

Per-candidate fit-score + recommendation (advance / hold / reject). Always-human reviewer-gate on REJECT decisions per AI Act Art. 14 + Schufa-aware Art. 22 meaningful-intervention.

Category: classifier·Reviewer-gate: always-human·For HR Tech & Recruiting·Use-case page →

What this template is

Pattern: classifier producing a tri-state recommendation + numeric fit-score against a job profile. Always-human reviewer-gate fires specifically on reject decisions — the high-stakes negative outcome. Closed-enum recommendation prevents free-text drift; specHash binds the rubric version so silent rubric changes are detectable. Each L12 entry's reviewerVerdict gives the empirical evidence underneath disparate-impact analyses + Art. 22 challenges.

The template

TypeScript · BSL-1.1 · License

import { RuntimeAISpec } from '@promethean/runtime-ai';

export const resumeScreenerSpec: RuntimeAISpec = {
  specId: 'resume-screener-v1',
  displayName: 'Resume screening + ranking',
  description:
    'Candidate-to-job-opening fit scoring with closed-enum recommendation.',
  category: 'classifier',
  schemaVersion: 'promethean-runtime-ai-spec-1.0',
  canonicalForm: 'v1',

  inputSchema: {
    fields: [
      { name: 'applicationId', type: 'string', required: true,
        redaction: 'hash-only' },
      { name: 'jobOpeningId', type: 'string', required: true },
      // Resume content is PII; never enters the chain raw.
      { name: 'resumeText', type: 'string', required: true,
        maxLength: 15_000, redaction: 'hash-only' },
      { name: 'jobProfileKey', type: 'string', required: true,
        maxLength: 64 },
    ],
  },

  outputSchema: {
    fields: [
      { name: 'recommendation', type: 'enum', required: true,
        enumValues: ['advance', 'hold', 'reject'] },
      { name: 'fitScore', type: 'number', required: true,
        min: 0, max: 100 },
      { name: 'evidenceCount', type: 'number', required: true,
        min: 0, max: 50 },
      { name: 'confidence', type: 'number', required: true,
        min: 0, max: 1 },
    ],
  },

  promptTemplate: {
    system:
      'You score candidate-resume fit against the job-opening profile. ' +
      'Output advance / hold / reject + numeric fit-score + ' +
      'evidence count (countable concrete items in the resume that match). ' +
      'Be neutral; do not infer protected-class attributes. ' +
      'A human reviewer will see every reject before it reaches the candidate.',
    user:
      'Application {{applicationId}} for job opening {{jobOpeningId}}. ' +
      'Profile: {{jobProfileKey}}. ' +
      'Resume: {{resumeText}}.',
  },

  modelIdentity: {
    provider: 'anthropic',
    model: 'claude-sonnet-4-5',
    version: '20250929',
  },

  reviewerGate: 'always-human',
  maxLatencyMs: 5000,
  fallbackBehavior: 'queue-for-review',
};

Regulations addressed

This template's configuration choices map to specific regulatory obligations. The substrate doesn't certify compliance — but the spec hash + reviewer-verdict + modelIdentity per L12 entry give you the evidence layer for these citations:

  • ·EU AI Act Annex III §4 — employment + workers management
  • ·GDPR Art. 22 — solely-automated decisions
  • ·EEOC technical assistance on AI in hiring (2023)
  • ·NYC Local Law 144 — annual bias audit

See citations index for official source URLs →

Installation + usage

  1. Create a free Dev-tier workspace — API key + Ed25519 signing key issued instantly.
  2. Install the SDK: npm install https://promethean.software/runtime-ai/latest.tgz.
  3. Paste the template above into your codebase. Adjust modelIdentity + prompt for your context.
  4. Call runConstrainedAI(spec, input, { client, receiptLogPath, productId, signingKey }) from your service code. For local testing pass createMockRuntimeAIClient(spec); for production, an Anthropic / OpenAI / Azure adapter.
  5. Verify the chain with the Apache-2.0 verifier.