Changelog
What shipped, by version. Currently running v1.52.1.
Upload a resume to someone on the bench
- ›The file is stored and its text read, the same way applicant resumes are, so
- ›The app then suggests skills from it, each with the line of the resume it
- ›The card's Resume link opens the stored copy.
The plugin works in claude.ai
Scorecards save again
Two steps in the general process are optional
- ›Step 5, Criteria Corp — decided during Role Setup. Where it is used it
- ›Step 7, Round 3 — renamed from "Round 3: Hiring Manager" to **Final
Ask the assistant who to interview first
The assistant counts open jobs
See where each applicant came from
- ›Applied via on each candidate's page: ZipRecruiter, Indeed, LinkedIn,
- ›The candidate list shows it under each name, for example "via ZipRecruiter".
The process section says what changed
The home page opens with where hiring stands
Only admins can change scoring weights
Strengths read as sentences again
The overview sheet, rebuilt as an infographic
Scoring and MCP tokens are reachable
Set up a role's interview questions in the app
- ›Draft from the job description. Claude drafts the decision question, the
- ›Edit anything, then Approve. Guides stay off until a person approves,
- ›The hiring manager is filled in from the role request when the app can match
Interview guide buttons say what they are
A one-page overview you can send to anyone
Score every new applicant in one click
Resumes are read again
"Open in Recooty" opens the candidate
Scoring still waits for a click
New applicants show up again
New jobs appear on their own
A failed sync says so
The JD generator works again
Open an archived resume from a search result
Archive results are readable again
Act on a candidate without leaving the page
Recent applicants come first
Narrow a search without leaving the box
- ›
since:2024- applied that year or later - ›
in:michigan- city or state, quote it if it has a space - ›
role:"data scientist"- the role they applied for - ›
exp:5- at least that many years of experience
Search everyone we have ever seen, from the pipeline page
The assistant can search resumes, and knows what we hold
The assistant is on the pipeline page
Archive results say who someone is, not just that a word matched
Every archive result carries its date
Ask who knows a skill, in Claude
Search by the jobs people have held
Find people by where they worked, and where they are
Searching stays fast as the archive grows
Answers that admit what they did not search
The archive now holds every old resume, and counts them honestly
Search inside resumes, not just names
Three thousand old resumes, searchable
Compare candidates side by side
The site fits on a phone
- ›The home page header put the wordmark and four buttons in one row that
- ›The changelog was widened by long file paths in code spans, which are a
- ›Staffing Requests squeezed its title, filter tabs, the request button and
- ›Ask about hiring shrinks to its icon on a phone. At full width the pill
- ›"Before You Start" and its subtitle shared one line and collided.
Open roles on the home page
Both actions existed but lived inside the edit form, two clicks behind a button labelled Edit, which sounds like it is for changing someone's details. They sit on the row itself now, next to the wait that tells you whether the check-in is due. Keep warm drafts the email and records the contact in one go. Recording it separately is the step people skip, which is how a check-in cadence quietly stops meaning anything.
Recruitment Analysis no longer asks anyone to refresh anything
Checklist bullets that look clickable now are
The CGO candidates are findable again
Who needs what account
Quote a bill rate range, not a single number
The assistant remembers what it was asked
Newer models where the work is judgement
The assistant answers from live data
- ›Who on the bench knows Zoho? Bench people by skill, with hours available,
- ›Who are the top scoring candidates? Pipeline candidates with their score,
- ›Where does hiring stand? Counts by job and stage.
What it will not do
- ›No scoring, no guide generation. Both cost real money and both have
- ›No salary or internal cost rates. Bench rate is what we would bill, and
- ›No inventing. If a resume is not stored here it says so. Most bench
The bench tells you who to chase
Searching the bench by what people actually do
Sign-in required
Report a bug from wherever you found it
Fill in every rate in one pass
Cost and margin, for admins only
The bench tells you what to do about it
Edit without leaving the page
A list, not twenty cards
Sort, and find who needs chasing
Keep-warm in one click
The process guide reads as one process again
- ›The steps are numbered from 1 again. The General Process opened at step 3,
- ›"Before You Start" is said once, not three times. The section now carries
- ›The request form is a link. The card that tells you every hire starts with
The process guide matches the 2026 process document
- ›Role Setup comes before Sourcing. The app had it the other way round. You
- ›The public posting decision is stated once, in Sourcing and Entry Points,
Ask about hiring, back on the home page
Interview guides open with a brief, not a score
The rubric belongs to the role
Questions say what a weak answer sounds like
Guides say what they are and link to their sources
Closing the round
The talent bench lives in the app
- ›Augusto people with spare capacity — Mike Perry, Aaron Brander, David
- ›Strong interviews waiting for the right work — Brent Scarafone, Reece
- ›People added by hand, who exist in no other system
The process guide matches the process
Four stages that were missing
- ›How a Role Gets Opened — the recruiting request. Every hire starts here,
- ›Sourcing and Entry Points — bench first, then referrals, then a public
- ›Offer, Onboarding, Close-the-Loop — including turning the posting off
- ›Bench and Keep-Warm — the keep-warm message and the 4-to-6 week check-in
Action buttons appeared on the wrong stages
Freshteam is out of the app
- ›Live job postings is gone from the home page. It listed Freshteam
- ›The chat box is gone from the home page and the four pipeline pages. It
- ›
FRESHTEAM_API_KEYis no longer read by anything.
Connecting Claude, written down
The Google Doc export works
Test submissions can be kept out of the pipeline
Recooty base URL
The Google Doc export actually works
Create the Google Doc without scrolling
Failed exports say what to do about them
Sections are easier to find
Word resumes are read properly
- ›**Candidates who sent a
.docxwere being scored as if they had submitted a - ›Both have been re-read from the copies already in storage and re-scored.
- ›A resume in a format we still cannot read says so in the log rather than
Housekeeping
- ›Removed
/api/debug-freshteam, a debug endpoint that was reachable in - ›
scripts/score-all.tsaccepts candidate names, so a fix affecting two people
Guides and JDs now land in the Recruiting shared drive
- ›Calls to Drive now pass
supportsAllDrives. Without it Drive leaves - ›The service account has to be a member of the shared drive, not merely
The candidate page tells you where things stand
How good is this score, really?
Interview guides go to Google Drive
Fathom recordings are visible, and you can go find them
Easier to read
- ›The page is wider — 1400px, matching the job pipeline — so evidence lines stop
- ›Section headers show their points as a share of what was available:
Connect Claude to recruiting
- ›
/connect— setup instructions written for someone who has not added an MCP - ›
/admin/mcp— who has connected, what they have called, and a revoke button - ›Admin is an email allowlist in
ADMIN_EMAILS— an env var so the list changes
Interview guides close the loop
- ›Scorecards are captured in the app — rate against the same CV1–CV5 rubric
- ›Tick questions off as you ask them, and the guide shows how much was covered
- ›Later rounds know what earlier ones asked. A deep-dive guide generated
- ›Shareable interviewer link — a clean URL with the guide and scorecard only,
augusto-interview skill
- ›New skill for the
augusto-toolsmarketplace. Uses the MCP server for live
MCP server
- ›Five tools: search candidates, get full candidate detail with evidence,
- ›OAuth 2.1 with PKCE, per the MCP specification. Clients register
- ›Augusto-branded consent screen naming the client and exactly what it will
- ›Every tool call is attributed to a person and a client, so an action on
- ›Nothing here spends ATS credits: tools read stored data and can re-score, but
Tune scoring weights from the UI
- ›Sliders on
/pipeline/scoringwith a live preview showing exactly how - ›The preview rescores from stored evidence, so dragging a slider costs
- ›Saving creates a new profile version. Existing scores keep the weights
Scoring from the UI
- ›A candidate with no score now has a Score this candidate button on their
- ›When details have not been fetched, the button says so and names the cost:
Scheduled sync
- ›Corrected: Cloudflare Pages has no Cron Triggers — they are a Workers
Scheduled sync
- ›
POST /api/cron/sync— pulls the roster and replays pending webhooks. - ›Roster sync is free, so it can run every 15 minutes. Candidate detail stays
Webhook visibility
- ›Duplicate deliveries are now counted rather than silently discarded, and the
Webhooks no longer lose events
- ›Unmatched events now stay pending instead of being marked processed
- ›Every roster sync replays them, so a candidate ingested later still picks up
- ›Replay records a transition only when the stage actually differs, so it never
Webhook hardening
- ›Secret token in the URL. Register the webhook as
- ›Workspace check. Events whose
team.idis not Augusto's are rejected — - ›Event allow-list. Only subscribed types drive state changes; anything
- ›Structural limits. POST only, JSON only, 256 KB cap — so one large POST
Security
- ›Every API route now verifies the caller. Cloudflare Access signs a JWT on
- ›12 tests covering the ways verification could be fooled: forged signatures,
- ›Verification is skipped when
CF_ACCESS_TEAM_DOMAIN/CF_ACCESS_AUDare
Interviews on the candidate profile
- ›Linked recordings with date, length, and a link to watch, plus the AI summary
- ›Score movement shown side by side — on paper vs. after interview, with the
- ›"Re-score with interviews" button
Interview transcripts as scoring evidence
- ›Fathom recordings are matched to candidates and their transcripts stored
- ›Scores now carry a phase —
pre_interview(resume and assessments) or - ›The JD dimension no longer requires a resume: a transcript alone is enough
Matching
- ›A recording links automatically only when the candidate's email is in the
Interview guides
- ›Generate a guide per candidate for the Scan, Deep dive or Final round
- ›Built from the candidate's own score: the gaps scoring could not verify
- ›Core values questions target the values with weak evidence, drawn from the
- ›Every question carries a "listen for" so a non-expert interviewer can judge
- ›Time-boxed to the round, with a rationale explaining why each section is
- ›Printable, with ruled space for notes and a 1–5 scorecard covering role fit
Candidate profile
- ›Verdict summary at the top — strongest and weakest dimensions, the most
- ›Sections are now collapsible cards with tinted headers, so a long profile
- ›Dividers between dimension blocks inside each section
Pipeline
- ›Rank markers replace the plain grey numerals — the top three read as filled
- ›The Augusto wordmark now links home from every pipeline page
- ›Recruiting assistant available on all pipeline pages, not just the guide
Readability
- ›Larger type throughout the pipeline — names, titles, evidence and score bars
- ›Brighter evidence colors: green
+for what earned points, red−for gaps,
Candidate profile
- ›Grouped into sections — Role fit, Culture & values, Background, Assessments —
- ›Core values grouped by value, each headed by its name and statement, with the
- ›Skills from the ATS parse, with JD matches promoted and the rest collapsed.
New
- ›
/pipeline/scoring— what each dimension measures, where its evidence comes
Pipeline UI
- ›
/pipeline— open roles with applicant counts, scored counts and flags - ›
/pipeline/[jobId]— candidates ranked by score, filterable to scored or - ›
/pipeline/candidate/[appId]— per-dimension breakdown with the evidence and - ›Coverage is shown beside every score, and flagged when thin: a high composite
- ›Unscored candidates sort last rather than as zeros — unknown is not bad
- ›"Sync from ATS" pulls the roster only, so it never spends candidate credits
Fixes
- ›Rubrics are inlined at build time (
npm run build:rubrics). Reading them with - ›
scores.coverageis stored rather than re-derived at read time, where a real
Foundation for the ATS rebuild. Libraries and schema only — no change to existing pages, so the live app behaves as before.
Database
- ›Supabase Postgres schema: 15 tables, row-level security on every one, 28 policies
- ›Scoring weights live in
scoring_profilesas data, so one engine serves - ›Scores record model, rubric, weights and JD version, so results stay
- ›Interviewers cannot read composite scores — seeing one before interviewing
ATS integration
- ›Provider-agnostic
ATSAdapterinterface with declaredcapabilities() - ›Recooty adapter, verified against the live API: jobs, paginated
- ›Webhook receiver for Job Created / Application Received / Parsed / Moved —
- ›Stage transition history, since the ATS has no stage API to replay from
- ›
ats_detail_fetchedguards Recooty's per-candidate view credit
Scoring engine
- ›CGO-Job's model ported from Python to TypeScript
- ›9 deterministic dimensions (location, leadership, AI depth, core values,
- ›3 AI dimensions via Claude with structured output — JD match, ICP alignment,
- ›Every dimension returns evidence and gaps, never a bare number
- ›Missing data is not bad data: a dimension with no input is excluded from
- ›18 tests
Candidate ingest
- ›Two-tier ATS sync: roster sync is free, candidate detail is opt-in and capped,
- ›
GET /api/ats/syncpreviews what a full ingest would cost before spending - ›Recooty's
viewed_atis trusted over our own flag, so candidates opened - ›Resume pipeline: download → private Supabase Storage → text extracted once
- ›Stage changes seen during sync are recorded as history
- ›
vendor_viewed_atrecords the ATS's "already viewed" signal separately from
Core values scoring
- ›
docs/reference/Augusto_Core_Values_Reference.mdis now the source of truth, - ›Per-value scores (CV1-CV5) so you can see which values a candidate shows
- ›Warning signs deduct and surface as concerns — "no evidence" and "evidence
- ›Removed the keyword core-values pass. The rubric is behavioral, so matching
- ›Rubric version is recorded in every score's provenance, so editing the
Changelog & releases
- ›In-app changelog at
/changelog— the version badge in the header and footer - ›GitHub Releases published automatically on merge to
main, with notes taken
Docs
- ›
docs/ARCHITECTURE.md— system design and the reasoning behind it - ›
docs/SETUP.md— env vars, Supabase, Google sign-in, Cloudflare flags - ›
docs/BACKLOG.md— planned work - ›
docs/reference/— process playbook and verified Recooty API shapes
Talent Bench
- ›Bench stat bar on dashboard — shows count of candidates on bench and total candidates, links to the bench sheet
- ›New
/api/benchroute reads the "bench recruting" tab from the talent bench spreadsheet
Staffing Requests
- ›Open/All filter toggle — defaults to open requests, toggle to see completed (dimmed)
- ›Compact row layout — tighter, more scannable
- ›"Request a Role" button links directly to the Google Form
- ›Assigned To shown inline on collapsed rows
Staffing Requests panel
- ›Pulls open staffing requests from the "Recruiting Requests" Google Sheet tab in real time
- ›Status dropdown (New / In Progress / Job Posted / On Hold / Complete) writes back to the sheet on change
- ›Assigned To field writes back on edit
- ›Expandable rows show full details — submitted by, duration, start date, rate, comments
- ›"Generate JD" shortcut on each row pre-fills the role title in the JD Generator
Header
- ›Sign out button (Cloudflare Access logout)
Recruiting Assistant (chat)
- ›Floating chat panel — ask questions about the recruiting process or open jobs in plain language
- ›Live Freshteam candidate search — type a name or email and get candidate cards inline with job title, stage (color-coded), email, and a direct ATS deep-link
- ›Markdown rendering in chat responses (bold, bullets, links)
- ›Suggested quick questions on first open
JD Generator improvements
- ›AI pre-fill suggestions — tab out of Role Title and Claude suggests must-have skills, nice-to-haves, and responsibilities tailored to Augusto's actual role types (AI engineers, designers using AI, n8n/LLM tooling)
- ›Suggestions are Augusto-specific: n8n, Claude, MCP, RAG, Loveable.dev, healthcare/finserv context
- ›"Why Join Us" and EEO statement automatically appended to every generated JD
Process guide improvements
- ›Static CSS swimlane diagram — replaced React Flow with a readable lane layout (no zoom/pan complexity)
- ›Larger fonts throughout — stepper, prereqs card bullet list, stage cards
- ›Actionable CTAs on key steps — Generate JD, Post Job on Freshteam, Schedule Interview buttons
Live job postings
- ›Freshteam API integration — live job panel with applicant counts, Job Posting and ATS links per role
Initial release. General Role recruiting process guide (Engineering, Design, PM, Ops) C-Suite recruiting process guide Tabbed navigation — General vs C-Suite Process stepper with numbered overview and role badges React Flow swimlane diagram with role-colored swimlanes Expandable stage cards with checklist and copy-ready email templates JD Generator — form → Claude API → creates a Google Doc in Drive Cloudflare Pages deployment with Cloudflare Access (augustodigital.com Google auth) Augusto brand system — Neuton + Barlow, navy/green/blue palette