Knowing what to build is the hard part
Writing code is easy now. BoardSeat gives every GitLab merge request a board meeting: five AI advisors who argue from your real usage, tickets and sales. Every verdict ships with a bet you can check later.





Solo founders can ship anything. That's the problem

Tim isn't an engineer, but with Claude he shipped every feature he thought of. His first schools were overwhelmed, and most of what he built went unused.
They need a board to push back, so every feature moves the business forward
Tim is a fictional character, and Monte is a demo app built for this project
Five advisors. They push back, and they argue only from facts
Each seat is its own flow on GitLab Duo Agent Platform, with its own brief and its own files to read. The Chair runs the meeting and decides who else gets a say.

Chair
Is there evidence from a real customer? Who needs a say? Is the bet measurable?
CEO

The change touches plans, pricing, positioning, onboarding or growth
sales.mdcustomers.ymlpricing.yml“Does this win, keep or upgrade customers? Does it fit what the product is for?”
CTO

A new dependency, a data model change, infra, or a whole new surface
the diffsrc/lib/store/decisions/“What does it cost to maintain? Does it lock us in? How many features are we carrying?”
CFO

A new service, API call, storage or model call, or anything that changes the price
costs.mdpricing.ymlsales.md“What does this cost per customer, and does the plan it sits on still make a margin?”
CS

Anything customers touch, or any MR that cites tickets
feedback.ymldocs/help/usage.md“Does this answer the tickets? Will it create new ones? Could a help article fix it without code?”
Every merge request gets a board meeting
Five steps, all inside GitLab. The board brings the facts and leaves a bet to check later. The founder still makes the call.
Every night, the facts sync into the repo
A scheduled GitLab pipeline pulls usage, support tickets, sales and cancellations into business/ as plain files under version control. The board reads the same files the founder does.
Attendance: mark who's absent
mark-absent intomainTeachers tap every child to record a few absences (FB-029, FB-035, FB-037)
Attendance gets a Mark who's absent mode: everyone starts as here, tap who's away
Reviewed the diff against business/. Evidence: three tickets, two schools
| FB-029 | Maple Lane Children's House | idea |
| FB-035 | Riverbend Children's House | problem |
| FB-037 | Maple Lane Children's House | idea |
Attendance is used every day in all 8 schools usage.md
Calling in @board-cto @board-cs · CFO not needed, no new cost
Bet: 6 of 8 schools mark absences instead of check-ins within 30 days, and attendance-speed tickets stop. Due Nov 7. Recorded in decisions/0005-mark-absent.md
A sixth seat that only speaks when Tim @mentions it. It never votes. It lists the worst cases, so the exit plan is written before anyone needs it
Every verdict ships with a bet you can check
The Chair commits a decision record to the branch, so the decision, its evidence and its bet merge with the code. When the bet comes due, the board checks the numbers.
1---2id: D-00053title: "Attendance: mark who's absent"4mr: "!42"5verdict: ship6evidence:7 - FB-029 # Maple Lane Children's House8 - FB-035 # Riverbend Children's House9 - FB-037 # Maple Lane Children's House10cost: none11bet:12 event: attendance.absent_marked13 target: 6 of 8 schools14 window: 30d15 due: 2026-11-0716 status: open17exit: revert to tap-who's-here, keep the setting off18---
Ship, no, or not code at all
The verdict is a label on the merge request, so the board's history is one filter away. Sometimes the best change is a help article.
No evidence, no meeting
The merge request template asks for the facts up front. If Evidence is empty, the Chair blocks the MR before anyone else is called.
Facts from the repo, with IDs: tickets, usage, sales, cancellations. Not opinions
FB-029, FB-035, FB-037An event the product already tracks, with a target, a window and a due date
6 of 8 schools in 30 daysNew services, APIs, storage or model calls, priced from costs.md
NoneWhat happens if the bet misses, written down before the merge
Revert to tap-who's-hereThe Chair's call, applied as a scoped label
board::shipEvery seat's position stays on the record, including disagreement. The founder decides
CFO sitting out: no new costA decisions/ file committed to the branch, so the bet merges with the code
decisions/0005-mark-absent.mdFive custom flows on GitLab Duo Agent Platform
Everything the board knows and decides lives in the repo. There's no separate dashboard to keep in sync.
AI made writing code easy. More and more solo founders are building the niche business they always wanted
What they don't have is a board





