A partner asked for a Quick Audit on a company he is backing. The useful product was not “audit complete.” It was a 20-page PDF in his name, a score that would survive a second agent, and a QA column so the next model cannot shrug and walk off.
This is the public half of the job. The internal half is a GitHub note in Local-Service-Spotlight/agent-runtime agent-notes/ — private, so blob URLs 404. Write both. The method page is The Quick Audit. The loop that makes the next run sharper is How meta articles let agents document themselves.
What the partner actually asked
Sean K. Fay (Envision Response) wanted a second set of eyes on Get Found → Get Chosen → Get Booked before his team started. He did not want a call first. He wanted the output, skinned as Envision, prepared in his name, so he could hand it to the owner. That is a white-label constraint, not a vanity constraint. The cover, footer, and palette had to come from Envision’s live site (teal #0FA1B8, ink #181818, lime #8DC63F) — not from Local Service Spotlight orange with “Dennis Yu” in the footer.
Collection is a script. Judgment is not.
Tier 0 ran through Audit Factory --collect-only (DataForSEO + a live HTTP check). No metered model key. The factory returned what it always returns: domain live, native 0–100 rank, spam score, referring domains, and — when it exists — GBP review count. For this business the GBP fields were null. That is a finding, not a collector outage. We proved it a second way: a Maps pack for the town’s money keyword, twenty listings, this company absent, a two-review competitor present.
Then the crawl that scripts still miss unless you fetch every sitemap URL: leftover platform copy on a promotions page, Unsplash photographer names in the gallery, empty LocalBusiness JSON-LD, Squarespace’s default robots.txt blocking GPTBot / ClaudeBot / Google-Extended, a Facebook stub with seven likes, and a brand SERP crowded with same-name operators in other states plus a same-metro namesake in a different trade.
QA so the next agent cannot say “done”
We added the checklist to the Quick Audit page itself so it is not trapped in one PDF. Split:
| Kind | Job | If you skip it |
|---|---|---|
| Deterministic | Hashes, robots.txt, JSON-LD holes, pixel counts, sitemap placeholders, Maps membership, spam sample | The PDF is not shippable. Re-run the command. |
| Judgment | City in three seconds, stock vs proof, ads-too-early, partner skin, kindness (what stays confidential) | You shipped a crawl dump with a cover. |
| UNKNOWN | PageSpeed quota, Search Console, ops-platform admin | Scoring a skipped check as 0 is how audits lie. Write UNKNOWN. |
Honesty rules stay in code in the factory: score 0–100, unclaimed Knowledge Panel caps at 79, band from the score. A partner PDF does not get to override that to look nicer.
What we did not put on the public web
The 20-page file names the business, the phone, the leftover template sentences, and the spam hosts. That is for the owner and the partner. This article is the method. If you want the exam run on your shop, use Get my audit. If you want the library of already-published audits, that is the master list.
GitHub is for the next agent
After the PDF and this page, the session writes YYYY-MM-DD-model-slug.md from agent-notes/_TEMPLATE.md, commits that file only, and pushes. Public blob URLs 404 on purpose. The note holds what went wrong, which docs conflicted, and the single next click. Sean’s team — and ours — can copy that shape: do the job, skin it as the partner, file the internal note, publish the method, then send the PDF. Do not hand the owner a paste.
THE DELIVERABLE
The exam, the QA column, and the private GitHub note. Not a status sentence.
Related: Website QA · 15-minute live exam · SEO tree · Industry skins. Internal job note lives in GitHub agent-notes (private).

