kaedax
← work

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.

stack → Next.js 15 Postgres + RLS Drizzle ORM Inngest Stripe Issuing Sentry Axiom
SMB APPLICANT CIBIL 742 EXPERIAN 718 BUREAU-X SCORE 724 analyst.console DECISION APPROVE ↗ PROVENANCE 0 events OVERRIDES 0 events APPEAL 0 events ▷ AUDIT TRAIL · hash-chained · ██████████████████████████████ ▷ CASE · LATTICE · BLUEPRINT FINTECH · SMB CREDIT
SCHEMATIC An abstract view of the LATTICE engagement — not a literal product screenshot. Built to communicate engineering shape, not surface design.

outcomes

01

8.4×

Faster credit decisions

02

$0

Spreadsheet ops budget

03

100%

Decisions audit-trailed

04

T+715h

Production cutover

[ §01 ] the cycle

How 720 hours
actually ran.

  1. 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
  2. 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
  3. 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
  4. 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.

cycle-log · lattice
archived
T+120h [ OK ] scope.agent spec frozen · 10 screens, 6 integrations, audit log signed off
T+240h [ >> ] build.agent module bureau-adapter/ · experian + cibil + bureau-x wired
T+360h [WARN] qa.agent edge case: bureau-x returns 0-score for 30d-old entities · paged human
T+480h [ OK ] build.agent patched bureau-x adapter · added 0-score fallback to manual review
T+600h [ OK ] deploy.agent parallel-run window opened · committee shadow-deciding in console
T+720h [ OK ] monitor.agent p95 decision latency 740ms · audit trail integrity 100%

[ §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