Favorite Staffing PRD_ Qualification Agent Favorite · 8 nodes · Hiring In production Checks everything the candidate said over SMS against the resume as ground truth, issues the final qualification verdict, and writes it into HubSpot. — 506 tasks (505 completed, 1 failed) in the 30 days to 2026-08-10; 290 tasks in the 14 days to 2026-07-13
PRD_ Qualification Agent Favorite2.50 credits = $0.25 per candidate 1 Validate the candidate's SMS replies against resume and summary — resume is the source of truth on conflict 2 Compress the running summary to under 2,000 characters 3 Update the HubSpot contact with the qualification verdict 4 Trigger the downstream scoring workflow Where the money goes · per run Step type Count Rate Subtotal Code / integration steps 3 $0.025 $0.075 Model calls · standard tier 2 $0.1 $0.2 Other 3 — $0 Rate-card estimate (standard tier) $0.275
Whole graph: 3 integration nodes (2x hubspot-update-contact, 1x CustomApiTool_TriggerScoringWorkflow), 2 std-tier prompt nodes (Candidate Validation and Qualification 27,705-ch; Summary Compressor Tool 1,781-ch), 0 code, 0 parse, plus entry, condition and exit. Path: Entry -> Validate ($0.10) -> Update Contact ($0.025) -> Trigger Scoring ($0.025) -> condition on summary_length: <2000 -> exit, giving intake $0.025 + $0.15 = $0.175 (1.75 credits); >=2000 -> Compress ($0.10) -> second Update Contact ($0.025), giving $0.30 (3.0 credits). Measured (catalog): 2.50 credits = $0.25, 'exact menu match' (qualify-from-reply $0.225 + intake $0.025; menu.json /lines[1]/modules[3] calibration agrees). $0.25 sits between the two branch totals — consistent with std tier and the compress branch firing on roughly 60% of runs. No tier gap: mid tier on the validator alone would make even the short path $0.275 and the long path $0.50, both above the measurement.
Measured: 2.50 credits = $0.25 per candidate, exact menu match ('Qualify from the reply' $0.225 + intake $0.025) (credit-rail measured)
Models seen in the graph: preferredModel GEMINI_3_FLASH on both prompt nodes and all integration nodes (fallbacks GPT4_1_MINI/GPT4_1/CLAUDE_4_SONNET on the prompts, GEMINI_3_PRO/GPT4_1/CLAUDE_4_SONNET elsewhere); condition node on GEMINI_3_FLASH
Graph read: ama-solution/04-agents/favorite-staffing/prd-qualification-agent-favorite/agent.json (8 nodes, graph.agent.name 'PRD_ Qualification Agent Favorite'; flags disregarded per probe rule). Variants: 04-agents/favorite-staffing-us/qualification-agent-favorite/ and 04-agents/favorite-staffing-eu-public/3-qualification-agent/.
What a copycat build should know Resume is ground truth: the single 27,705-char validation prompt reconciles everything the candidate said over SMS against the CV and summary, resolving conflicts toward the resume — this one node is what the menu prices as 'Qualify from the reply'. Cost control by graph shape: the second model call (Summary Compressor) is gated by a deterministic edge condition (summary_length >= 2000 -> compress; summary_content < 2000 -> exit), keeping it off short-summary runs instead of prompting for brevity. Trigger Scoring Workflow fires before the compression check, so downstream priority scoring never waits on the compress branch. At 8 nodes it is the smallest of the three graphs because it is a pure verdict writer — no SMS channel, no code nodes; it exists as a separate agent only because the journey is split, which is what generates the re-entry-trigger overhead the catalog quantifies at $0.15/candidate. Lessons from the client record 2 of this agent's 3 HubSpot writes were part of the 2026-08-26 migration off Pipedream after silent value drops; a new qualification build should write the verdict via direct custom API and verify field persistence, not node status (ACTIVITY_LOG.md). The atomic-PATCH enum trap (CLI-5913) hits exactly this agent's verdict fields: facility_confirmed / license_confirmed configured with capital 'Unknown' while the agent emits lowercase — one bad enum now 400s the whole contact update and blocks the downstream trigger node. Pre-migration verification discipline worth copying: tested against a dummy contact that the properties wrapper is mandatory and that omitted params are omitted rather than sent as empty strings — so a 19-property tool does not clear fields a node leaves blank (live run wrote 4, preserved 13/13 untouched). Qualification volume runs at roughly half of screening (506 vs 1,028 tasks/30d) — the funnel drop between screening and qualification is normal shape, not failure (agent-catalog volumes; ~290 tasks/two weeks per menu.json). Reusable fragments cut from this agent hr Validate Candidate Reply, Resume and Summary 03-projects/26-hr/02-resources/module-library/08-资格判定.md#1hr Compress Summary Content To Less Than 2000 03-projects/26-hr/02-resources/module-library/06-生成交付物.md#4Qualify from the reply HubSpot custom scoring workflow API
ama-solution/04-agents/favorite-staffing/prd-qualification-agent-favorite/agent.json · solution-intelligence/content/agent-catalog.json (id favorite-qualification) · solution-intelligence/content/menu.json (qualify-from-reply, price_per_item 0.225, calibration 2.50 credits) · sol-favorite-staffing/ACTIVITY_LOG.md · sol-favorite-staffing/CLIENT.md · ama-solution/03-projects/26-hr/02-resources/module-library/08-资格判定.md