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.

Meet your new board
Powered by GitLab Duo Agent Platform
Chair
Chair
CEO
CEO
CTO
CTO
CFO
CFO
CS
CS
Dylan Jones
Dylan Jones
Creator of BoardSeat
See the repo on GitLab

Solo founders can ship anything. That's the problem

Tim
Tim
Founder of Monte, a one-person company

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.

Try Tim's app, Monte
Attendance
Shipped Sep 1
Used daily
Lessons
Shipped Sep 1
Used daily
Parent Messages
Shipped Sep 8
Spiked, faded
Report Builder
Shipped Sep 17
Opened once

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
Runs the meeting

Chair

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

Reads
The diff, the MR description and everything in business/
Routes
Calls in only the seats the change touches. The rest sit out, with a reason
Decides
Writes one comment, sets the verdict label and commits the decision record
Growth

CEO

CEO
Called in when

The change touches plans, pricing, positioning, onboarding or growth

Reads
sales.mdcustomers.ymlpricing.yml

“Does this win, keep or upgrade customers? Does it fit what the product is for?”

Trade-offs

CTO

CTO
Called in when

A new dependency, a data model change, infra, or a whole new surface

Reads
the diffsrc/lib/store/decisions/

“What does it cost to maintain? Does it lock us in? How many features are we carrying?”

Costs

CFO

CFO
Called in when

A new service, API call, storage or model call, or anything that changes the price

Reads
costs.mdpricing.ymlsales.md

“What does this cost per customer, and does the plan it sits on still make a margin?”

Customers

CS

CS
Called in when

Anything customers touch, or any MR that cites tickets

Reads
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.

tim/monte · Merge requests · !42
Attendance: mark who's absent
Openmark-absent → main
Why Teachers tap every child to record a few absences (FB-029, FB-035, FB-037)
Bet 6 of 8 schools mark absences instead, within 30 days
Tim requested review from@board-chair
Flow started: board-chair

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.

Analytics
usage events
Support inbox
tickets
Payments
sales, cancellations
nightly-export
every day · 02:00
fetch
export
commit
passed
business/ · chore: nightly export
usage.mdusage events updated
feedback.ymlsupport tickets updated
sales.mdsales updated
customers.ymlcancellations updated
Both read business/
Tim
ChairCEOCTOCFOCS
The board
gitlab.com/tim/monte/-/merge_requests/42
Tim / monte / Merge requests / !42

Attendance: mark who's absent

OpenTim requested to mergemark-absent intomain
Why

Teachers tap every child to record a few absences (FB-029, FB-035, FB-037)

What

Attendance gets a Mark who's absent mode: everyone starts as here, tap who's away

Pipeline #1187 passed: lint, typecheck, unit tests
Tim requested review from@board-chair
Chair
Chair @board-chair Agent · just now

Reviewed the diff against business/. Evidence: three tickets, two schools

FB-029Maple Lane Children's House
FB-035Riverbend Children's House
FB-037Maple Lane Children's House

Attendance is used every day in all 8 schools usage.md

Calling in @board-cto @board-cs · CFO not needed, no new cost

CTO
CTO @board-cto Agent · just now
Old attendance records survive the change. Check-ins and check-outs work as before
CS
CS @board-cs Agent · just now
Answers all three tickets. I'll reply to those schools when it ships
CFO
CFO @board-cfo Agent · sitting out
Nothing new costs money: no new services, storage or API calls
Chair
Chair @board-chair Agent · just now
Verdict: Shipboardship

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.

decisions/0005-mark-absent.md+11 −0
1---
2id: D-0005
3title: "Attendance: mark who's absent"
4mr: "!42"
5verdict: ship
6evidence:
7 - FB-029 # Maple Lane Children's House
8 - FB-035 # Riverbend Children's House
9 - FB-037 # Maple Lane Children's House
10cost: none
11bet:
12 event: attendance.absent_marked
13 target: 6 of 8 schools
14 window: 30d
15 due: 2026-11-07
16 status: open
17exit: revert to tap-who's-here, keep the setting off
18---
The bet
30 days
6/8schools mark absences instead of check-ins
0new attendance-speed tickets
Bet check · Nov 7
Did it work? The board reads usage.md and feedback.yml

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.

Open 3MergedAll
Sticker chart with confetti
!43 · opened by Timboardno
CEO
CEO
Nobody asked for it, and one guide asked for less screen time
Printable fire drill sheet
!44 · opened by Timboardnot code
CS
CS
The export already does this. Write a help article instead
Daily photo for parents
!45 · opened by Timboardshipplanschool only
CFO
CFO
Photos cost money to store. Ship it on the School plan only

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.

Evidence

Facts from the repo, with IDs: tickets, usage, sales, cancellations. Not opinions

FB-029, FB-035, FB-037
Bet

An event the product already tracks, with a target, a window and a due date

6 of 8 schools in 30 days
Cost

New services, APIs, storage or model calls, priced from costs.md

None
Exit

What happens if the bet misses, written down before the merge

Revert to tap-who's-here
Verdict

The Chair's call, applied as a scoped label

board::ship
Dissent

Every seat's position stays on the record, including disagreement. The founder decides

CFO sitting out: no new cost
Decision record

A decisions/ file committed to the branch, so the bet merges with the code

decisions/0005-mark-absent.md

Five 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.

The repo
monte/
.gitlab/duo/flows/
chair.yml# runs the meeting
ceo.yml cto.yml cfo.yml cs.yml# one flow per seat
.gitlab/merge_request_templates/
Feature.md# evidence, bet, cost, exit
business/
usage.md feedback.yml sales.md# synced nightly
customers.yml costs.md pricing.yml
decisions/
0005-mark-absent.md# committed by the Chair
.gitlab-ci.yml# nightly-export, deploy
GitLab Duo Agent Platform
Each seat is its own custom flow. The Chair's flow runs first and calls in the others
GitLab CI/CD
Checks every merge request, deploys main to Cloud Run and runs the nightly export
Google Cloud Run
Hosts Monte
Plain files in git
Facts, briefs and decisions get diffed, reviewed and reverted like code

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

CS
CTO
Chair
CEO
CFO