Cardona CT LabAI Tooling · Design & Accessibility
CT Lab · Agentic AI Tooling

Resume Targeting Agent

A Five-Step Agentic Pipeline for Role-Specific Resume Adaptation


Executive Summary

This is a five-step agentic pipeline that fetches a job description, extracts the role's signals, scores the current resume's fit, rewrites the copy to match the role's language, and produces a diff of exactly what changed. Generic resumes fail because they don't speak the role's language; this tool makes targeted adaptation repeatable and fast. It's a Flask app on Railway using the Anthropic API: claude-haiku for structured extraction, claude-sonnet for reasoning.

The central design decision is five discrete, visible steps, not a black box and not a single "submit" button, so the user understands and trusts what the agent is doing.

Problem Statement

Job seekers submit the same resume to every role, and both ATS systems and hiring managers penalize generic applications. Manual tailoring is slow and inconsistent: most people swap surface words without extracting the role's actual signal vocabulary. Chat tools can help, but they require the user to prompt correctly, manage context, and eyeball the output. There's no structure, no rubric, no diff. The gap: nothing makes the signal-extraction step explicit and the rewrite verifiable.

Pipeline Architecture

Five sequential steps, each visible in the UI:

Step 1 · Fetch JD

Accepts a URL or pasted text. The URL path fetches the live posting, strips boilerplate, and extracts role-relevant content; the paste path is the fallback.

Step 2 · Signal extraction

claude-haiku extracts a structured signal object: required and preferred skills, the role's exact vocabulary, seniority indicators, culture signals, shown to the user to verify before the rewrite.

Step 3 · Fit score

claude-sonnet scores the resume against the signals (0–10) with a per-signal breakdown and an explicit gap list, displayed before any rewrite.

Step 4 · Targeted rewrite

claude-sonnet reframes bullets and summary copy in the role's vocabulary, under an explicit constraint never to add skills or experience absent from the source.

Step 5 · Diff view

An inline diff of original vs. rewritten copy, changed phrases highlighted, so the user can selectively accept or reject each rewrite.

Every run is logged in session (timestamp, role, score, export link). Export is JSON: JD text, signals, fit score, original + rewritten copy, and the diff. Token use is tuned: claude-haiku for extraction, claude-sonnet for reasoning, JD HTML aggressively truncated, schema-constrained JSON prompts, with httpx==0.27.0 pinned alongside anthropic.

Design Decisions

Five visible steps, not a black box

When an AI rewrites your resume, trust is the primary UX concern, not speed. Making each step visible, and showing the extracted signals before the rewrite runs, gives the user a checkpoint to verify the agent understood the role before committing to the adaptation.

Signal extraction as its own step

Most tools jump straight from JD to rewrite. Separating extraction makes the agent's interpretation auditable and produces a reusable artifact: the signal JSON could feed an interview-prep generator or a cover-letter agent.

Fit score before rewrite

Scoring the existing resume first establishes a baseline. A jump from 4.2 to 7.8 is a concrete output, not just "here's some new copy."

Never fabricate

The no-fabrication constraint lives in the system prompt: the agent reframes existing experience in the role's language, it does not invent credentials. This is a design decision with ethical weight, and it is the correct one for a tool used in real job applications. The diff is what makes it checkable: the user reviews a specific set of changes, not a black box.

What This Demonstrates

Agentic pipeline design (five sequential steps with visible state and user checkpoints), system- prompt engineering (constraint design, structured extraction, multi-model routing), UX judgment (transparency and trust as constraints, not just speed), and token optimization (haiku for extraction, sonnet for reasoning, aggressive truncation). It's dogfooded, built for my own job search, not speculative.

Live Tool

Build
Flask · Railway
AI
Anthropic · haiku + sonnet