Build Log · June 21, 2026

Forge: The Furnace

Forge stopped being a CRM and became a memory and attention system — event-driven architecture, Contractor Inbox, Context Recovery, and four Strikes captured.

  • Forge
  • Architecture
  • Events
  • Inbox
  • Context
new events table
1

new events table

Strikes captured
4

Strikes captured

event write paths wired
3

event write paths wired

new pages built
3

new pages built

Timeline

  1. Start

    Feature map v1

    Industry research + competitive analysis

  2. 1hr

    Four iterations of the plan

    Zeb pushed back three times — each time the frame got sharper

  3. 2hr

    Architecture locked

    Event-driven model, north star defined, forge/docs/architecture.md written

  4. 2.5hr

    Events table live

    Schema, db:push, seed with 17 realistic events

  5. 3hr

    Timeline page

    Chronological event feed at /timeline

  6. 3.5hr

    Context Recovery

    Panel on contact detail — last contact, open estimate, memory notes

  7. 4hr

    Event write paths

    writeEvent helper + deal/contact/note actions all fire events

  8. 4.5hr

    Contractor Inbox

    Dashboard replaced — Needs Action / Waiting / Recent, event-driven

What shipped

  • forge/docs/architecture.md — the one-sentence principle written into the repo permanently

  • events table — org_id, contact_id, deal_id, type, payload, attention_score, attention_state, created_at, resolved_at

  • lib/db/write-event.ts — shared helper, attention scores + states computed on write

  • Event Timeline page at /timeline — chronological, day-grouped, attention state dots

  • Context Recovery panel on contact detail — last contact, open estimate, memory notes

  • Contractor Inbox replacing /dashboard — Needs Action / Waiting / Recent buckets

  • EventActions component — Done / Snooze inline actions

  • app/api/events/actions.ts — resolveEvent + snoozeEvent server actions

  • Event write path: moveDeal fires deal_moved + estimate_sent

  • Event write path: createDeal fires contact_added + deal_created

  • Event write path: addNote fires memory_captured

  • Timeline added to sidebar + mobile nav

  • 4 Strikes + 4 Anvils written to forge journal

  • seed.ts updated — 17 realistic events across 6 days, dotenv loading fixed

“Records tell you what exists. Events tell you what happened. Context tells you what matters.”
— Forge architecture doc — the sentence that explains the entire product