Back to blog

22 Briefs, All Done: Shipping a Cost Tracker from Scratch

How structured briefs and a two-phase board turned a feature list into a fully shipped expense tracking app

22 briefs|2 sections|22 shipped|Live at tallythat.us
M
Miguel
February 2026

What I built

I keep track of costs for a lot of things. Kitchen renovation, home office setup, random side projects. Every time, I start with a spreadsheet. And every time, the spreadsheet gets messy around row 50.

So I built TallyThat. Create a project, log expenses with custom categories, set a budget, see where your money's going. The feature list grew: spending charts with time range toggles, budget alerts at 80% and 100%, recurring expenses processed by a Cloud Function, receipt uploads to Firebase Storage, CSV export, search, a dashboard with activity feed and smart insights, onboarding for new users.

22 features total. I organized them into 22 briefs on a Nexboard board.

tallythat.us/projects/kitchen-reno
Kitchen RenoActive
$1,202.25 / $5,000
24%
Lumber from Home Depot
MaterialsFeb 12
$342.50
Electrician, 4 hours
LaborFeb 10
$480.00
Building permit fee
PermitsFeb 8
$125.00
Drywall and joint compound
MaterialsFeb 5
$189.75
Tile saw rental
ToolsFeb 3
$65.00
5 expenses$1,202.25
Spending Over Time
$4.5k$2.2k$0OctNovDecJanFeb
By Category
Materials
$532.25
44%
Labor
$480.00
40%
Permits
$125.00
10%
Tools
$65.00
6%
Total$1,202.25

What a brief looks like

Each feature started as a scoped brief. Not a sticky note that says "add budget alerts." A spec with the why, the deliverables, the guardrails, and a running log of decisions made during implementation.

Here's the budget alerts brief. It's one of the 10 briefs in the UX Enrichment section.

nexboard.us
UX Enrichment & Retention

Add budget alerts and threshold warnings

DoneMedium

Description

Users need proactive warnings when they're approaching or exceeding their project budget. Right now the budget meter shows a percentage but there's no alert system. Add visual warnings at 80% and 100% thresholds with clear messaging.

Scope

  • Yellow warning banner when spending reaches 80% of budget
  • Red alert banner when spending exceeds 100% of budget
  • Budget meter bar changes color at thresholds (green → yellow → red)
  • Alert text shows specific numbers: '$4,200 of $5,000 budget (84%)'
  • Alerts appear on project detail page and dashboard project cards
  • Dismissible per-session (don't persist dismissal)

Constraints

  • Don't block the user from adding expenses when over budget
  • Alerts must update in real-time as expenses are added
  • Keep the UI non-intrusive. Banners, not modals.

Decisions

Used a computed threshold approach: calculate percentage client-side from expense total vs budget. Three states: normal (<80%), warning (80-99%), over (100%+). Banner component is shared between project detail and dashboard card. Yellow uses amber-500 palette, red uses red-500.

The agent reads the brief via MCP, builds against the scope, and writes back what it decided (threshold approach, color scheme, component sharing). Next session reads the decisions and has full context.

Core, then enrichment

The board had two sections: Core and UX Enrichment & Retention. The structure wasn't just organization. It was build order.

Core went first: expense tracking, charts, categories, the landing page, and domain setup. The foundation that everything else builds on.

Enrichment came second: budget alerts, recurring expenses, receipt uploads, search, CSV export, onboarding. These make the app good. But they all build on the core foundation.

I didn't have to explain this progression to the agent. The board layout made it obvious. Pick a brief from Core, build it, mark it done. When Core is clear, move to Enrichment.

Board Sections22 / 22 done
Core7 briefs
Improve cost tracking functionalityDone
Add chartsDone
Improve category customizabilityDone
Improve landing page for non-usersDone
Improve wording around budgetsDone
Connect domain to FirebaseDone
Automate deploymentsDone
UX Enrichment & Retention10 briefs
Add expense editing capabilityDone
Add delete confirmation for expensesDone
Add expense notes/memo fieldDone
Add budget alerts and threshold warningsDone
Add CSV export for expensesDone
Add receipt/photo attachmentsDone
Add dashboard activity feed and insightsDone
Add search across expensesDone
Add recurring expensesDone
Add new user onboarding flowDone

22 for 22

Every brief shipped. 22 out of 22. The board is fully cleared.

That's the metric I care about. Not how fast it happened, but that every scoped feature was actually implemented, verified, and marked done. Nothing fell through the cracks. No "we'll get to it later" briefs sitting in limbo.

22 features
Every scoped brief shipped and verified
Custom categories
User-defined names and colors for expense types
Spending charts
Cumulative line charts with 1D, 1M, 1Y, and All timeframes
Recurring expenses
Weekly, biweekly, or monthly. Cloud Function processes them every 6 hours.

The bigger picture

TallyThat was one of four active boards. I was also managing ArkOdds (37 briefs, a prediction market dashboard), Nexboard itself (72 briefs), and Who's Wrong (8 briefs). Over 130 briefs across four projects.

The brief-level context is what makes this possible. Each brief carries its own scope, constraints, and decisions log. The agent doesn't need to understand all 22 TallyThat features to implement one of them. It reads the brief and the codebase. That's enough.

Structured build order

Core first, enrichment second. The board's section layout made the progression obvious. No jumping between unrelated features.

Brief-level context

Each brief carried its own scope, constraints, and running decisions. The agent didn't need to understand the whole app to implement one feature.

Clear done criteria

Every brief had verifiable scope. "Add CSV export" means something specific when the brief spells out what fields to include and where the export button lives.

nexboard.us

Tally That

22 / 22 done
Core
Improve cost tracking functionalityDone
Add chartsDone
Improve category customizabilityDone
Improve landing page for non-usersDone
Improve wording around budgetsDone
Connect domain to FirebaseDone
Automate deploymentsDone
UX Enrichment & Retention
Add expense editing capabilityDone
Add delete confirmation for expensesDone
Add expense notes/memo fieldDone
Add budget alerts and threshold warningsDone
Add CSV export for expensesDone
Add receipt/photo attachmentsDone
Add dashboard activity feed and insightsDone
Add search across expensesDone
Add recurring expensesDone
Add new user onboarding flowDone

Ready to ship faster?

Scope your features as briefs. Hand them off to AI. Free to start.

Get Started Free