The software factory
The output of a thousand engineers. The accountability of one.
The factory is our internal build system: a pipeline of AI agents and automated checks that turns a written spec into reviewed, tested pull requests, with an engineer approving every merge. It is why our engagements take less calendar time and cost less money.
How it runs
Five stops on one loop. One of them is a person.
1Specify
Your request becomes a written spec before any code is written: acceptance criteria, plan ledger, risk definitions, cost projections, gap analysis and more. Every later stop reconciles its work against it.
2Build
Agents build the plan in parallel, each in its own isolated sandbox, so one agent's work cannot touch another's and nothing runs outside it. Tests are written alongside the code, and the result opens as a draft pull request.
3Review
33 gates and 14 review agents read every pull request, on top of linting and the test suite: code review, an audit against the plan, a risk audit and more. All must pass; what fails is fixed and only the gates whose inputs changed run again. Three rounds at most.
4Merge
An engineer reads every pull request that reaches this point: the one human gate. Approval merges, releases and closes the ticket.
5Learn
What the merge and production taught becomes a rule the next ticket is built under, so each lap starts from a better spec than the last.
One day, counted
October 7, 2026. An ordinary working day. Every figure comes from the agent transcripts, one count per API response, priced at the vendor's published list prices.
We publish the day in full, with the orchestration overhead that most per-task figures leave out, because a number you cannot audit is not a number.
October 7, 2026, 00:05 to 19:55
- Pull requests merged
- 73
- Between 00:05 and 19:55, America/New York.
- Cost of the day
- $1,252.55
- Every agent session, at API list prices.
- Cost per merged pull request
- $15.89
- Orchestration included. Direct work alone: $7.21 average, $4.29 median.
- Model calls
- 8,740
- Unique API responses across three model tiers.
- Tokens processed
- 1.9B
- 96.3% of input served from cache; 7.2M output.
Pull requests merged, by hour
| Hour | Merged |
|---|---|
| 00:00 | 9 |
| 01:00 | 7 |
| 02:00 | 5 |
| 03:00 | 1 |
| 04:00 | 3 |
| 05:00 | 3 |
| 06:00 | 3 |
| 07:00 | 2 |
| 08:00 | 3 |
| 09:00 | 1 |
| 10:00 | 1 |
| 11:00 | 5 |
| 12:00 | 2 |
| 13:00 | 8 |
| 14:00 | 4 |
| 15:00 | 10 |
| 16:00 | 3 |
| 17:00 | 0 |
| 18:00 | 0 |
| 19:00 | 3 |
| 20:00 | 0 |
| 21:00 | 0 |
| 22:00 | 0 |
| 23:00 | 0 |
Where the day's spend went
Sessions are attributed by the worktree branch they ran in, or by the pull request a reviewer prompt names. Sessions in the main checkout steer the merges and belong to no single pull request.
- Direct work on the 73 merged pull requests
- $526.3142.0%
- Orchestration sessions in the main checkout
- $626.9250.1%
- Work on pull requests merged on later days
- $92.367.4%
- Plan audits
- $6.940.6%
Half the spend is orchestration: the sessions that plan, dispatch and review, which belong to no single pull request. That is why the cost per merge with orchestration included is $15.89 while direct work is $7.21 mean and $4.29 median.
How it was counted
- 1Source: the coding agent's session transcripts for the main checkout and every linked worktree, read on 2026-10-14. One count per API response.
- 2Attribution: a worktree session belongs to the pull request whose branch it ran on; sessions in the main checkout are orchestration and belong to no single pull request.
- 3Prices: the vendor's published API list prices, applied per call to the tier that answered it. A subscription plan bills differently, so this measures volume, not an invoice. Priced this way, the figures reproduce the agent's own running cost within 3% across 1,803 sessions.
The day in detail
The same October 7, 2026, opened up: which model did the work hour by hour, what each tier handled, and what every one of the 73 pull requests cost to merge.
- Frontier model
- Large model
- Mid-size model
Input tokens per hour, by model
Uncached input, cache writes and cache reads together. Almost all of it is cache reads.
| Hour | Frontier model | Large model | Mid-size model |
|---|---|---|---|
| 00:00 | 51,328,376 | 58,787,737 | 3,456,413 |
| 01:00 | 45,408,923 | 61,443,060 | 5,404,851 |
| 02:00 | 42,530,970 | 19,407,272 | 3,540,227 |
| 03:00 | 21,570,581 | 2,146,302 | 9,621,044 |
| 04:00 | 24,114,437 | 18,424,762 | 16,754,917 |
| 05:00 | 18,467,177 | 7,230,300 | 3,242,729 |
| 06:00 | 121,945,058 | 26,371,267 | 2,577,749 |
| 07:00 | 58,655,385 | 3,279,203 | 0 |
| 08:00 | 40,617,552 | 2,085,575 | 0 |
| 09:00 | 108,248,291 | 4,638,841 | 12,988,824 |
| 10:00 | 57,634,113 | 9,674,872 | 50,513,664 |
| 11:00 | 57,717,883 | 12,823,034 | 13,926,988 |
| 12:00 | 48,482,921 | 27,081,714 | 24,891,913 |
| 13:00 | 45,312,655 | 10,930,957 | 12,754,507 |
| 14:00 | 44,680,513 | 45,152,513 | 18,215,415 |
| 15:00 | 76,212,103 | 42,714,865 | 0 |
| 16:00 | 49,814,478 | 8,444,964 | 0 |
| 17:00 | 77,132,728 | 1,184,730 | 0 |
| 18:00 | 57,297,206 | 10,580,211 | 1,797,353 |
| 19:00 | 23,498,332 | 4,122,079 | 0 |
| 20:00 | 23,906,318 | 6,228,454 | 3,680,127 |
| 21:00 | 32,270,945 | 52,412,035 | 4,843,191 |
| 22:00 | 23,509,646 | 27,374,308 | 1,945,759 |
| 23:00 | 36,373,739 | 20,608,177 | 0 |
Output tokens per hour, by model
Generated tokens, thinking included. The frontier and large models did nearly all the writing.
| Hour | Frontier model | Large model | Mid-size model |
|---|---|---|---|
| 00:00 | 268,278 | 161,250 | 662 |
| 01:00 | 106,015 | 395,387 | 1,436 |
| 02:00 | 100,765 | 219,082 | 680 |
| 03:00 | 29,680 | 43,930 | 6,819 |
| 04:00 | 23,216 | 389,582 | 1,808 |
| 05:00 | 18,854 | 9,240 | 634 |
| 06:00 | 160,699 | 434,322 | 1,475 |
| 07:00 | 57,456 | 71,258 | 0 |
| 08:00 | 45,190 | 44,538 | 0 |
| 09:00 | 169,054 | 81,326 | 1,320 |
| 10:00 | 53,987 | 193,968 | 6,877 |
| 11:00 | 145,756 | 251,924 | 3,573 |
| 12:00 | 130,515 | 407,735 | 2,928 |
| 13:00 | 158,044 | 132,955 | 3,279 |
| 14:00 | 219,259 | 224,426 | 2,325 |
| 15:00 | 266,400 | 228,438 | 0 |
| 16:00 | 103,881 | 34,039 | 0 |
| 17:00 | 194,801 | 7,905 | 0 |
| 18:00 | 180,202 | 141,738 | 518 |
| 19:00 | 33,740 | 1,940 | 0 |
| 20:00 | 149,425 | 18,538 | 421 |
| 21:00 | 206,931 | 309,272 | 706 |
| 22:00 | 112,483 | 140,297 | 405 |
| 23:00 | 111,701 | 168,703 | 0 |
By model tier
- Frontier model
- 2,738 calls
- Uncached input
- 60,670
- Cache writes
- 12,897,284
- Cache reads
- 1,173,772,376
- Output
- 3,046,332
- of which thinking
- 1,215,873
- Large model
- 4,630 calls
- Uncached input
- 9,366
- Cache writes
- 45,577,952
- Cache reads
- 437,559,914
- Output
- 4,111,793
- of which thinking
- 1,580,087
- Mid-size model
- 1,372 calls
- Uncached input
- 2,766
- Cache writes
- 9,805,039
- Cache reads
- 180,347,866
- Output
- 35,866
- of which thinking
- 3,484
Three tiers were in use: a frontier model for the hardest reasoning, a large model for most implementation and review, and a mid-size model for small tasks. Every call was priced at the vendor's published list prices for the tier that answered it.
The 73 pull requests, by cost on the day
Each bar is split by model tier. Six pull requests merged just after midnight were built on earlier days, so they show their earlier spend instead. Titles are not published; the number and ticket are enough to audit against the repository.
- Frontier model
- Large model
- Mid-size model
- #132 PAI-212$45.99
- #59 PAI-16$45.23
- #90 PAI-210$32.14
- #144 PAI-278$24.61
- #153 PAI-193$23.91
- #119 PAI-265$21.62
- #165 PAI-285$20.93
- #157 PAI-213$20.84
- #60 PAI-51$20.72
- #136 PAI-35$17.53
- #80 PAI-206$15.95
- #160 PAI-282$13.67
- #83 PAI-209$9.86
- #139 PAI-279$9.57
- #118 PAI-263$9.52
- #97 PAI-220$9.18
- #92 PAI-244$7.88
- #173 PAI-299$7.25
- #158 PAI-214$7.23
- #135 PAI-212$6.15
Show the other 53 pull requests
- #91 PAI-246$6.14
- #142 PAI-35$6.03
- #172 PAI-298$5.97
- #138 PAI-208$5.90
- #88 PAI-240$5.88
- #131 PAI-275$5.86
- #169 PAI-286$5.83
- #143 PAI-280$5.79
- #117 PAI-262$5.72
- #128 PAI-211$5.26
- #121 PAI-264$5.02
- #124 PAI-268$4.75
- #140 PAI-35$4.72
- #156 PAI-195$4.50
- #129 PAI-274$4.44
- #120 PAI-266$4.42
- #74 PAI-190$4.29
- #174 PAI-284$4.26
- #130 PAI-273$4.18
- #141 PAI-35$4.18
- #149 PAI-282$3.74
- #164 PAI-201$3.73
- #84 PAI-34$3.55
- #137 PAI-244$3.53
- #108 PAI-253$3.48
- #72 PAI-189$3.20
- #155 PAI-200$2.84
- #98 PAI-219$2.76
- #150 PAI-251$2.73
- #152 PAI-282$2.69
- #134 PAI-277$2.42
- #168 PAI-294$2.42
- #123 PAI-267$2.17
- #145 PAI-245$2.13
- #122 PAI-269$2.07
- #126 PAI-271$1.84
- #127 PAI-272$1.84
- #86 PAI-241$1.61
- #125 PAI-270$1.59
- #87 PAI-243$1.44
- #82 PAI-207$1.06
- #58 PAI-15$0.31
- #161 PAI-199$0.24
- #89 PAI-216built on earlier days · $5.02 lifetime
- #93 PAI-248built on earlier days · $18.74 lifetime
- #94 PAI-217built on earlier days · $2.77 lifetime
- #95 PAI-247built on earlier days · $2.93 lifetime
- #96 PAI-218built on earlier days · $6.23 lifetime
- #112 PAI-255built on earlier days · $9.89 lifetime
- #154 PAI-194built on earlier days · $0.00 lifetime
- #159 PAI-196built on earlier days · $0.00 lifetime
- #167 PAI-198built on earlier days · $0.00 lifetime
- #170 PAI-202built on earlier days · $0.00 lifetime
| PR | Ticket | Merged | Cost, day | Frontier | Large | Mid-size | Cost, lifetime | Sessions |
|---|---|---|---|---|---|---|---|---|
| #132 | PAI-212 | 10:48 | $45.99 | $27.54 | $8.32 | $10.13 | $54.89 | 12 |
| #59 | PAI-16 | 06:31 | $45.23 | $18.43 | $24.91 | $1.89 | $65.85 | 31 |
| #90 | PAI-210 | 11:06 | $32.14 | $25.85 | $6.29 | $0.00 | $36.15 | 15 |
| #144 | PAI-278 | 13:31 | $24.61 | $15.37 | $9.24 | $0.00 | $24.61 | 13 |
| #153 | PAI-193 | 14:58 | $23.91 | $7.46 | $16.45 | $0.00 | $23.91 | 1 |
| #119 | PAI-265 | 02:19 | $21.62 | $13.29 | $8.33 | $0.00 | $21.62 | 17 |
| #165 | PAI-285 | 15:35 | $20.93 | $13.67 | $7.26 | $0.00 | $20.93 | 11 |
| #157 | PAI-213 | 15:05 | $20.84 | $2.75 | $18.09 | $0.00 | $20.84 | 21 |
| #60 | PAI-51 | 07:05 | $20.72 | $0.00 | $20.72 | $0.00 | $29.26 | 27 |
| #136 | PAI-35 | 12:08 | $17.53 | $2.22 | $12.31 | $3.01 | $17.53 | 21 |
| #80 | PAI-206 | 05:10 | $15.95 | $0.00 | $15.95 | $0.00 | $30.86 | 29 |
| #160 | PAI-282 | 15:09 | $13.67 | $8.68 | $4.99 | $0.00 | $13.67 | 12 |
| #83 | PAI-209 | 07:48 | $9.86 | $5.53 | $4.33 | $0.00 | $13.12 | 12 |
| #139 | PAI-279 | 13:30 | $9.57 | $4.35 | $5.22 | $0.00 | $9.57 | 10 |
| #118 | PAI-263 | 00:13 | $9.52 | $7.40 | $2.12 | $0.00 | $12.07 | 5 |
| #97 | PAI-220 | 00:05 | $9.18 | $9.18 | $0.00 | $0.00 | $19.32 | 9 |
| #92 | PAI-244 | 11:06 | $7.88 | $2.67 | $3.16 | $2.06 | $11.14 | 11 |
| #173 | PAI-299 | 19:54 | $7.25 | $0.98 | $6.27 | $0.00 | $7.25 | 12 |
| #158 | PAI-214 | 15:25 | $7.23 | $2.14 | $5.10 | $0.00 | $7.23 | 8 |
| #135 | PAI-212 | 11:21 | $6.15 | $1.72 | $4.19 | $0.24 | $6.15 | 7 |
| #91 | PAI-246 | 11:06 | $6.14 | $1.48 | $4.48 | $0.17 | $10.86 | 13 |
| #142 | PAI-35 | 14:46 | $6.03 | $0.00 | $6.03 | $0.00 | $6.03 | 6 |
| #172 | PAI-298 | 19:55 | $5.97 | $2.35 | $3.62 | $0.00 | $5.97 | 9 |
| #138 | PAI-208 | 13:29 | $5.90 | $0.00 | $5.90 | $0.00 | $5.90 | 6 |
| #88 | PAI-240 | 08:33 | $5.88 | $0.00 | $5.88 | $0.00 | $10.86 | 17 |
| #131 | PAI-275 | 05:25 | $5.86 | $0.00 | $5.86 | $0.00 | $5.86 | 10 |
| #169 | PAI-286 | 16:20 | $5.83 | $3.36 | $2.47 | $0.00 | $5.83 | 6 |
| #143 | PAI-280 | 12:19 | $5.79 | $2.92 | $2.87 | $0.00 | $5.79 | 7 |
| #117 | PAI-262 | 00:55 | $5.72 | $0.00 | $5.72 | $0.00 | $10.59 | 9 |
| #128 | PAI-211 | 05:12 | $5.26 | $0.00 | $4.80 | $0.46 | $5.26 | 7 |
| #121 | PAI-264 | 01:23 | $5.02 | $2.98 | $2.04 | $0.00 | $5.02 | 5 |
| #124 | PAI-268 | 02:52 | $4.75 | $0.00 | $4.75 | $0.00 | $4.75 | 8 |
| #140 | PAI-35 | 13:31 | $4.72 | $0.00 | $4.72 | $0.00 | $4.72 | 6 |
| #156 | PAI-195 | 15:11 | $4.50 | $0.00 | $4.50 | $0.00 | $4.50 | 6 |
| #129 | PAI-274 | 04:40 | $4.44 | $0.00 | $4.44 | $0.00 | $4.44 | 7 |
| #120 | PAI-266 | 02:17 | $4.42 | $0.00 | $4.42 | $0.00 | $4.42 | 8 |
| #74 | PAI-190 | 01:51 | $4.29 | $0.00 | $4.29 | $0.00 | $13.15 | 21 |
| #174 | PAI-284 | 19:53 | $4.26 | $0.00 | $4.26 | $0.00 | $4.26 | 7 |
| #130 | PAI-273 | 04:50 | $4.18 | $0.00 | $4.18 | $0.00 | $4.18 | 6 |
| #141 | PAI-35 | 14:46 | $4.18 | $0.00 | $4.18 | $0.00 | $4.18 | 6 |
| #149 | PAI-282 | 13:33 | $3.74 | $0.31 | $3.43 | $0.00 | $3.74 | 7 |
| #164 | PAI-201 | 15:25 | $3.73 | $0.00 | $3.73 | $0.00 | $3.73 | 6 |
| #84 | PAI-34 | 04:00 | $3.55 | $0.00 | $3.55 | $0.00 | $7.26 | 12 |
| #137 | PAI-244 | 11:43 | $3.53 | $0.00 | $3.53 | $0.00 | $3.53 | 6 |
| #108 | PAI-253 | 01:21 | $3.48 | $0.00 | $3.48 | $0.00 | $24.18 | 25 |
| #72 | PAI-189 | 01:22 | $3.20 | $0.00 | $3.20 | $0.00 | $21.57 | 36 |
| #155 | PAI-200 | 15:22 | $2.84 | $0.00 | $2.84 | $0.00 | $2.84 | 6 |
| #98 | PAI-219 | 01:09 | $2.76 | $0.00 | $2.76 | $0.00 | $5.96 | 11 |
| #150 | PAI-251 | 13:54 | $2.73 | $0.00 | $2.73 | $0.00 | $2.73 | 5 |
| #152 | PAI-282 | 13:55 | $2.69 | $0.00 | $2.69 | $0.00 | $2.69 | 5 |
| #134 | PAI-277 | 09:52 | $2.42 | $0.00 | $2.42 | $0.00 | $2.42 | 5 |
| #168 | PAI-294 | 16:20 | $2.42 | $0.68 | $1.75 | $0.00 | $2.42 | 6 |
| #123 | PAI-267 | 02:36 | $2.17 | $0.00 | $2.17 | $0.00 | $2.17 | 4 |
| #145 | PAI-245 | 13:32 | $2.13 | $0.00 | $2.13 | $0.00 | $2.13 | 5 |
| #122 | PAI-269 | 01:56 | $2.07 | $0.00 | $2.07 | $0.00 | $2.07 | 4 |
| #126 | PAI-271 | 02:43 | $1.84 | $0.00 | $1.84 | $0.00 | $1.84 | 4 |
| #127 | PAI-272 | 06:19 | $1.84 | $0.00 | $1.84 | $0.00 | $1.84 | 4 |
| #86 | PAI-241 | 08:05 | $1.61 | $0.00 | $1.61 | $0.00 | $4.68 | 7 |
| #125 | PAI-270 | 06:24 | $1.59 | $0.00 | $1.59 | $0.00 | $1.59 | 4 |
| #87 | PAI-243 | 08:24 | $1.44 | $0.00 | $1.44 | $0.00 | $4.12 | 7 |
| #82 | PAI-207 | 03:01 | $1.06 | $0.00 | $1.06 | $0.00 | $10.95 | 13 |
| #58 | PAI-15 | 01:01 | $0.31 | $0.00 | $0.31 | $0.00 | $7.82 | 9 |
| #161 | PAI-199 | 15:09 | $0.24 | $0.24 | $0.00 | $0.00 | $0.24 | 1 |
| #89 | PAI-216 | 00:05 | $0.00 | $0.00 | $0.00 | $0.00 | $5.02 | 7 |
| #93 | PAI-248 | 00:27 | $0.00 | $0.00 | $0.00 | $0.00 | $18.74 | 29 |
| #94 | PAI-217 | 00:05 | $0.00 | $0.00 | $0.00 | $0.00 | $2.77 | 5 |
| #95 | PAI-247 | 00:05 | $0.00 | $0.00 | $0.00 | $0.00 | $2.93 | 5 |
| #96 | PAI-218 | 00:05 | $0.00 | $0.00 | $0.00 | $0.00 | $6.23 | 6 |
| #112 | PAI-255 | 00:27 | $0.00 | $0.00 | $0.00 | $0.00 | $9.89 | 13 |
| #154 | PAI-194 | 14:58 | $0.00 | $0.00 | $0.00 | $0.00 | $0.00 | 0 |
| #159 | PAI-196 | 15:21 | $0.00 | $0.00 | $0.00 | $0.00 | $0.00 | 0 |
| #167 | PAI-198 | 15:31 | $0.00 | $0.00 | $0.00 | $0.00 | $0.00 | 0 |
| #170 | PAI-202 | 16:19 | $0.00 | $0.00 | $0.00 | $0.00 | $0.00 | 0 |
What the factory enforces
These are not guidelines. The pipeline does not let work through without them.
Spec-Driven
Every task starts from written acceptance criteria. If it cannot be specified, it is not ready to build.
Parallel Agents
Independent tasks are implemented concurrently by agents working in isolated branches, which is where most of the speed comes from.
Tests on Every Task
A task is not complete without tests that exercise its acceptance criteria. The factory enforces this, not a checklist.
Human Review Gate
Every pull request is reviewed by an engineer before it merges. Agents propose; people are accountable.
Full Audit Trail
Specs, plans, diffs, test runs and reviews are linked, so you can see why any line of code exists.
Continuous Delivery
CI/CD, preview environments and monitoring are part of the pipeline from the first commit.
What it means for your project
Three claims, each with its number. All three come from the measured day above, not from a projection.
- Faster
- 73
- pull requests merged in one day
- Parallel implementation and automated checks compress the parts of delivery that usually wait on a single engineer's calendar. On 2026-10-07, 73 pull requests merged on our own codebase between 00:05 and 19:55.
- Cheaper
- $15.89
- per merged pull request, orchestration included
- Senior time goes to specs, architecture and review instead of boilerplate. The day's spend on these 73 merges and the orchestration around them, divided by 73, at API list prices. Work on pull requests that merged on later days is left out; the whole day divided by 73 is $17.16.
- Auditable
- 8,740
- model calls, each one counted and priced
- Written specs, tests on every task and a full audit trail make scope, progress and quality visible rather than reported. Every call on the day is attributed to a pull request or to orchestration, and the pricing reproduces the agent's own running cost within 3%.

See the factory on your project
Bring a problem. We will scope it into a spec and tell you what the factory can and cannot do with it.
Questions about the factory
What it is, what it is not, what working together is like, and what you own at the end.
Something not covered? Ask directly.
Get a written estimate from your spec
Tell us what you are building and where it is today. We reply within a few business days with questions, or with a scope and a price.
