Handoff Doc — Internal

The ATS Agent

What it is, how it works, and how your team talks to it.

Built 2026-07-14 · hardened 2026-07-15 · for Anthony
TL;DR

What it is, in one paragraph

The ATS Agent is a standing recruiting agent, built on the same framework as Pam (your CS agent). It works two jobs at once: an ATS director that advises you on hiring decisions (funnel metrics, req priorities, offers, compliance), and a recruiting manager/interviewer that helps the team execute (screening, interview prep, candidate comms). It reports to Toby, the same way a recruiting coordinator would report to your HR manager. It has its own memory, learns from feedback your team gives it, and every rule it learns is proven before it ships, not just accepted on faith.

How your team talks to it

The only thing Jose and Homer need to know: talk to Toby. They never need to know the ATS Agent exists by name, or that Toby is relaying to it behind the scenes.

When Jose or Homer ask Toby a recruiting question in Slack, Toby does not answer from his own memory. He is required to hand the question to the ATS Agent, get its answer, and relay it back like a manager would. This was a deliberate build choice: Toby already talks to every employee with no restrictions, and the Vegas AM search running through the ATS Agent right now is confidential. Piping the question through a locked door (see below) means Toby can serve everyone else normally while this one topic stays fenced.

Jose / Homer --Slack DM--> Toby --identity-gated tool--> ATS Agent ^ | |________ relays the answer ______| Anthony / Jose (panel) -------------------> ATS Agent Vegas page (teach, approve, flags)

Where you and Jose reach it directly

The shared ATS page (Vegas Hiring tab) is where you and the panel work with it hands-on:

FeatureWhoWhat it does
Teach boxYou + Jose onlyFree-form notes that become candidate rules for the agent's memory. Locked to the hiring panel as of today; Homer gets a friendly redirect to the bug button instead.
Thumbs up/down + flag answersEveryone with page accessLightweight signal, stays open to Homer too, feeds the same learning loop without letting him author rules directly.
Approve / Reject proposalsYou + Jose onlyA drafted rule only becomes real once one of you approves it, and only after it proves itself (below).
Bug buttonEveryone with page accessHomer's path for anything wrong. Goes to a separate report queue, not the KB.

How it actually learns (not just "we told it something")

A note in the teach box does not become policy just because someone approved it. Before a taught rule ships to the agent's live memory, it has to answer 2-3 real past cases it was never shown, and an independent grader checks its answers against what actually happened. Pass, and the rule ships tagged with proof (like learned 3/3). Fail, and it comes back to the Today page with the case it missed, so you can see exactly where the lesson didn't stick. This is the difference between "I taught it" and "it generalized," and it is the part of the build most likely to quietly break if anyone ever touches the code without re-running the proof.

What changed in yesterday's hardening pass

A full two-model code review (two different AI model families, so blind spots do not overlap) found 8 real problems in the build. All are fixed and re-verified live:

Where things live (for whoever touches this next)

~/cron-launchers/ats-bot/Agent home: brain, memory, tools, logs
AGENT.md / SOUL.md / RULES.mdYour instructions to the agent (not its memory)
data/kb/ats-learned.mdThe agent's own memory, written by the feedback loop
vegas-hiring/index.htmlThe shared ATS page (ATS Agent tab)
tools/ats_connectors.pyThe locked door Toby uses to reach the agent
data/logs/build-ledger.jsonlProof log: every build/hardening step and what verified it

Still outstanding

One thing only you can close: send Toby a real recruiting question in Slack. Every other part of the loop has been tested end to end; this is the one link no human has actually exercised yet.

Smaller, optional items: the Chargeback Agent (a separate, unrelated build) has a cron that never got loaded, unrelated to anything here. And two open questions from the original build review are still unanswered: whether flags should also ping Slack, and whether the agent should triage the Vegas hiring inbox daily.