Skip to content
ContractorKeith
Go back

i built a subcontractor game for bid day

Updated:
4 min read

update, september 8, 2026: the public Bid Day repository is unavailable. dead repository links and installation instructions have been removed; the July build story remains below.

it is 2:57 on friday afternoon. the general contractor wants your number, the drawings have holes in them, and payroll still hits monday whether you win the job or not.

that is Bid Day: Subcontractor Tycoon, the terminal game we built around a problem I have dealt with for most of my working life.

why we built it

people outside construction often think bidding is simple: count the work, add a markup, send a number. anyone who has bought a job too cheap knows better.

an estimator has to decide how much time to spend on the bid, what the field can really produce, which scope gaps need a qualification, how much uncertainty belongs in the number, and whether the company can carry another job while waiting to get paid. those decisions are connected.

and most estimating software is built to produce an answer, not teach what happens after the answer leaves your desk.

I wanted a small game where a bad decision could hurt without costing a real company $40,000. something an estimator, project manager, student, or curious person could play in a terminal and then argue about with another contractor.

no customer files. no real pricing. no painful monday meeting.

what you do in the game

each week opens with a fictional request for proposal. you read the scope, the general contractor profile, the documents, the bid field, the estimator note, and the payment terms.

then you make five decisions: diligence, production, risk response, markup, and contingency. you can also pass on the job, which is sometimes the smartest button on the screen.

the Bid Day terminal game showing a fictional fence project, cash and backlog at the top, bid choices on the right, and the estimator note on the left

the screenshot above is a real run using fence and gates with seed 4242. the sell price changes as you adjust the bid, but the game does not reveal the future field cost while you are still estimating. you earn that bad news later, just like the rest of us.

after you submit, the game decides whether you win. closing the week moves work through field cost, billing, retainage, collections, overhead, crew capacity, and trade-specific events.

winning every job can sink you.

six trades, six different headaches

the first version started with fence because that is the trade I know. the current game has six subcontractor businesses:

the controls stay familiar, but the businesses do not act the same. concrete has pour sequencing and pump cash. roofing has weather and dry-in pressure. HVAC has long-lead equipment, controls, startup, and testing. fence has gates, soil, mobilization, and access-control handoffs.

that difference matters. changing the trade name on the screen would have been easy. changing the cost mix, crew limits, scope clues, events, and cash timing took the real work.

how the July build played

these controls describe the original build. the public repository is no longer available, so the installation instructions have been removed.

the game works best in a terminal around 120 columns by 40 rows. use Tab and Shift+Tab to move, arrow keys and Enter to choose, H for the field manual, and Q to quit. a mouse works too.

the same trade, seed, campaign length, and decisions produce the same result. so if you find a strange outcome, somebody else can replay it instead of trying to debug a contractor story that starts with “I think it was the third job.”

who might use this

a construction-management instructor could use one seed for a class and compare why each group priced the same risk differently. an apprentice estimator could see why markup and margin are not the same percentage. a subcontractor owner could hand it to a new project manager before giving them a live backlog report.

and contractors can use it for what contractors do best: disagreeing about the right number after somebody else already bid it.

it is still a game. it is not takeoff software, an accounting system, or advice about what your real company should bid.

current game work

this is an archived build story. my current public game work is Pioneer Trail, in the terminal and browser.


Share this post on:

Previous Post
i became SlowBooks Pro's Mac maintainer
Next Post
how i set up Claude Code so it actually works the way i need it to