An underwriting console for an SMB credit fintech, built and shipped in a single cycle.
LATTICE needed to replace a spreadsheet-driven credit committee with an internal underwriting console that pulled bureau data, ran their proprietary scoring model, and let analysts approve or kick decisions back to a human committee with a paper trail.
▷ outcomes
8.4×
Faster credit decisions
$0
Spreadsheet ops budget
100%
Decisions audit-trailed
T+715h
Production cutover
[ §01 ] the cycle
How 720 hours
actually ran.
-
Day 01 — 03
Brief → spec → ADRs
Two-hour kickoff with the founding team. scope.agent drafted a spec covering ten underwriting screens, six bureau integrations, and the audit-log schema. Three architecture decision records signed off by their CTO before code began.
↳spec.md ↳adr/0001-data-model ↳adr/0002-bureau-integrations -
Day 04 — 18
Agent-driven build
build.agent shipped the data model, the bureau adapter layer, the scoring runner, and the analyst console in fourteen days. Every PR reviewed by a senior engineer; nothing merged without a green qa.agent pass and a paper-trail test.
↳57 PRs ↳vitest · 94% cov ↳playwright e2e × 22 -
Day 19 — 26
Polish + integration
Bureau adapter retries, decision-explainability UI, queue-based webhook delivery, and the appeal workflow. The week that bootstrapped fintech budgets normally cannot afford.
↳audit log signed ↳rate-limit policy ↳appeal flow -
Day 27 — 30
Cutover + handoff
Production cutover behind a feature flag, parallel-run against the old spreadsheet process for 72 hours. Handover of runbooks, eval harness for the scoring agent, and a 60-day post-launch on-call from kaedax.
↳prod live ↳runbook.md ↳scoring evals
[ §02 ] agent log · selected
What the loop
looked like.
[ §03 ] notes from the cycle
LATTICE was a five-person fintech weeks from a regulator meeting. Their underwriting
process — the thing the regulator was about to scrutinize — lived in a shared Google Sheet
with macros and a Slack channel called #credit-committee. They needed a console that
would survive a real audit.
The constraints we agreed to up front
- No new infrastructure for them. Code had to ship into their existing Vercel / Neon / Inngest setup. We provisioned nothing on kaedax accounts.
- Audit-grade trail from day one. Every decision, every bureau call, every override — append-only, hash-chained, exportable.
- Human in the loop on every decision above a configurable threshold. The agents surface a recommendation; a human analyst owns the call.
What the agents actually did
The build.agent owned thirteen of the fourteen build days. The qa.agent generated tests from the spec — not from the code — which caught two specification ambiguities we’d have otherwise discovered in production. The monitor.agent wired Sentry, Axiom, and a custom audit-integrity ping before the first analyst logged in.
The single most useful intervention came from the scope.agent during the cutover week. It flagged that the appeal workflow had no SLA defined — something the regulator was going to ask about. We added the SLA and the corresponding queue alert in four hours.
Where humans did the work
A senior engineer reviewed every PR. The kaedax founder reviewed every ADR. LATTICE’s CTO made the final call on the parallel-run window. The compliance officer signed off on the audit trail design. The agents shipped the code; humans owned the judgement.
from the founder
"We expected a prototype. We got a production console with audit trails our compliance team was actually happy with. Three days early."
— Co-founder & CTO · LATTICE