Back to blog

35 Briefs to Production: Vibe-Coding a Prediction Market Dashboard

How structured briefs turned a solo vibe-coding session into a shipped product with dependency chains, configurable workspaces, and live market data

37 briefs|4 sections|35 shipped|Live at arkodds.com
M
Miguel
February 2026

What I built

I wanted to build a Bloomberg-terminal-style dashboard for prediction markets. Not just a price ticker. A real intelligence surface where you browse events by category, drill into matchups, build custom workspace layouts with drag-and-drop panels, and layer on context like weather forecasts, news feeds, and geographic maps.

The scope was big. Seven categories of events tracked across Kalshi. Configurable workspace pages with panel grids. Odds movement charts with multiple timeframes. Countdown timers for live events. A Cloud Functions backend proxying the Kalshi API with caching and series grouping. Auth, deployment, mobile optimization, search.

I organized it into 37 briefs across 4 sections: Foundation, Geo & News, Workspace Engine, and Monetization & Launch.

arkodds.com
AO
ArkOdds
HomeEvents
Live Now(3)
NBA Finals 2026
Vol 1.2MIn 4h
Celtics62%+3
vs
-338%Thunder
2026 Midterms: Senate Control
Vol 890KNov 3
Democrats44%-2
vs
+256%Republicans
Box Office: Summer Blockbuster #1
Vol 340KIn 12d
Galactic Horizon71%+5
vs
-529%The Field
NBA Playoffs 20264 events
Knicks55%+1
vs
-145%Pacers
Lakers38%-4
vs
+462%Nuggets
Futures
Bucks51%+2
vs
-249%Heat
Election Watch 2026
Senate Control
Nov 3
OutcomeProbVol
Dem 52+ seats28%450K
Rep 52+ seats35%520K
Dem 50-5116%210K
Rep 50-5121%280K
NewsChartNotes
Governor: TexasVol 180K
Martinez47%
vs
53%Chen

What the briefs looked like

Every feature started as a brief before any code got written. Not a one-liner in a task manager. A structured spec with a description (the why), scope (verifiable deliverables), constraints (guardrails), and a decisions field that the agent updates as it works.

Here's a real one. The Workspace Layout Engine was the most critical brief on the board. It defined the panel grid system that the weather, news, maps, and event composition features all built on top of.

nexboard.us

Workspace Layout Engine

DoneCritical
Workspace Engine
Blocked byAuth & User AccountsOdds Panel Component
BlocksWeather Data LayerEvent Composition Layer

Description

The core configurability layer that makes ArkOdds feel like a Bloomberg terminal. Users create pages (like workspaces/tabs), each containing a drag-and-drop grid of panels. Panel types include: odds table, hierarchical view, countdown, chart, map, news feed.

Scope

  • Tab bar across top showing all pages
  • Create, rename, reorder, duplicate, delete pages
  • Each page has its own independent grid of panels
  • react-grid-layout for drag-and-drop panel management
  • 12-column grid, panels snap to cells
  • Panel operations: drag, resize, remove
  • Zustand store with debounced Firestore sync (2s)

Constraints

  • Save to Firestore on every change with 2s debounce
  • Must perform smoothly with 10+ panels updating in real-time
  • Grid must prevent overlap and snap to grid
  • Layout state must be fully serializable to JSON

Decisions

Chose react-grid-layout over alternatives (dnd-kit, @hello-pangea/dnd) for native grid snapping. Zustand store hydrates from Firestore on load, debounced writes prevent thrashing.

The agent reads this through Nexboard's MCP integration. It gets the full brief context, builds against the scope, and writes decisions back. The next session picks up where the last one left off. No re-explaining.

How the pieces connected

37 briefs don't exist in isolation. The Workspace Layout Engine couldn't start until Auth and the Odds Panel were done. And four downstream briefs (weather, news, maps, event composition) couldn't start until the layout engine was finished.

Nexboard tracks these dependencies explicitly. When a brief is blocked, you see it. When a dependency finishes, the blocked brief becomes available. I don't have to remember what depends on what.

nexboard.us

Cross-Brief Dependencies

Workspace EngineWorkspace Layout EngineDone
blocked by
FoundationAuth & User AccountsDone
FoundationOdds Panel ComponentDone
blocks
Geo & NewsWeather Data LayerDone
Geo & NewsEvent Composition LayerDone
Geo & NewsNews & Signal AggregationDone
Geo & NewsEvent Map LayerDone

35 out of 37

ArkOdds launched at arkodds.com with 35 of 37 briefs shipped. The two remaining: a CI/CD pipeline (scoped, not urgent since I deploy manually) and a plan persistence bug (draft, found late).

Not 100%. That's the honest number. But 35 shipped briefs is a full prediction market dashboard with live data, configurable workspaces, and a Cloud Functions backend.

37 briefs
Organized across 4 sections with explicit dependencies
7 event categories
Sports, Politics, Entertainment, Elections, Economics, Companies, Mentions
Configurable workspaces
Drag-and-drop panel layouts with Firestore persistence
Live Kalshi data
Cloud Functions proxy with caching and series grouping

The bigger picture

ArkOdds wasn't the only board I was managing. During the same period, I had 4 active boards: ArkOdds (37 briefs), Nexboard itself (72 briefs), TallyThat (22 briefs), and Who's Wrong (8 briefs). Over 130 briefs total, one developer.

That only works because every brief carries its own context. The agent doesn't need me to explain the app architecture. It reads the brief's scope, checks the decisions from previous sessions, and builds. Switch to a different board, different project, and it works the same way.

Context that survives sessions

Every brief has a decisions field. It's a living log of what was built, what was tried, and what was decided. The next agent session reads it and picks up immediately.

Dependencies that enforce build order

The layout engine had to ship before weather panels could start. Nexboard tracks this. No guessing what's ready to work on.

One developer, four boards

ArkOdds, Nexboard, TallyThat, Who's Wrong. 130+ briefs. The dashboard shows all of them at a glance: what's blocked, what's in review, what to pick up next.

nexboard.us

Your Boards

ArkOdds
37 briefs
1 Draft
1 Scoped
35 Done
Nexboard
72 briefs
6 Draft
10 Scoped
14 Active
8 Review
34 Done
Tally That
22 briefs
22 Done
Who's Wrong
8 briefs
2 Draft
1 Scoped
1 Active
4 Done

Cross-Board Dependencies

ArkOddsDeploy to productionActive
ArkOddsStripe checkout flowScoped
ArkOddsMobile responsive layoutActive
ArkOddsWorkspace panel engineReview
NexboardLanding page redesignDone
NexboardCase study contentDone

Ready to ship faster?

Structure your thinking. Hand off to AI. Free to start.

Get Started Free