# Daily Vox Brief — 2026-05-21

**Generated:** 2026-05-21 (manual, by Riv — automated curator not yet built, see [[Daily Vox Brief Workflow Design]])
**Source:** This session's work, hand-selected pending the project_events curator
**Note for Vox:** This is a one-off manual capture so today's lessons don't disappear before the daily curator ships. Format mirrors Loom's design so it can sit next to the automated ones once they begin.

---

## Lede Candidate

**The "lean on source-of-truth files" pattern — designing AI workflows that don't force humans to re-report what tools already record.**

Mid-rollout of the QBO client OAuth onboarding tool, Riv kept asking Jimmie "what slug and name did you use?" after each successful run. Jimmie pushed back: *"i am not sure i think acadian / Acadian Roofing. can you build that into the workflow?"* The fix wasn't to ask better questions — it was to stop asking. The tool was already writing the answer to `qbo_clients.json`; the canonical record was already being maintained by the act of doing the work. The whitepaper's "what makes this team different" section should treat this as a load-bearing principle: an AI specialist that asks a human to restate data the workflow already captured is a specialist that hasn't finished the design. The corollary — that an ADHD-friendly workflow leans hard on this — makes it doubly relevant. Saved as a feedback memory ([[feedback-lean-on-source-files]]) so the pattern is applied across the team, not just this one tool.

> Raw moment: After two successful one-click connects, Riv asked Jimmie what slug he had used. Jimmie's response was "can you build that into the workflow?" — and Riv switched from asking to reading the file the tool already maintained. The hand-maintained client list in memory was replaced with a one-line "read this file" pointer.

---

## Supporting Beats

- **Intuit silently changed the OAuth Playground redirect URL from `/v2/OAuth2Playground/RedirectUrl` to `/app/developer/playground`.** The first one-click attempt failed because the detection logic was anchored to the old path. Fix: anchor on stable query params (`code=` AND `realmId=`), not on the URL path. Teachable lesson for any "external API integration" section of the whitepaper — couple matchers to surfaces vendors are unlikely to change, not to surfaces they refactor.

- **3 new QBO client realms connected in a single afternoon via the new desktop-shortcut flow** (`tob`, `clj`, `acadian`). Brings Ledger's live-client footprint from 1 (Afton pilot) to 4 production clients + 1 Chairman-fenced. Proof point for the "what it has actually done" section: a single-evening tool turned a 40-client onboarding chore into something Jimmie could batch with no friction. Tool lives at `Atlas/app/qbo_connect_gui.pyw` and launches from a desktop shortcut; uses a dedicated Edge profile so the QBOA login persists across runs.

---

## Skipped (override if you disagree)

- The `query()` API wrapper unwraps `QueryResponse` automatically and the sanity-check code didn't know that — fixed, but it's a debugging detail, not a pattern.
- Memory file edits (project_ledger_qbo_access.md, MEMORY.md index) — internal mechanic, not teachable to a stranger.
- Two intermediate iterations of the tool (CLI-only `qbo_connect.py`, then the GUI) — the final shape is what matters; the path to it is changelog noise.

---

*Override any of the above by editing this file in place. Vox reads on Mondays.*
