nullfield

Field note / Factory v0

We built an AI product factory. Here’s what worked, what broke, and what comes next.

Could a system take a simple business idea, build a working product, verify it, publish it, and clean up after itself? That is what Factory v0 was built to prove. We tested it with three products. It worked, it broke, it recovered, and it showed us what the next version needs.

The question

I’m interested in useful businesses that never get built because the opportunity looks too small to justify the work. Nullfield asks what becomes worth trying when we can reduce the work required to build and operate a company.

V0 focused on a smaller question: could the Factory carry a simple idea from a brief to a working page, with a clear record of the decisions in between? We used three deliberately basic test cases: Game Night Ready, Tank Start, and Sprout Start.

We recorded the order before we began and ran the products one at a time. These were tests of the Factory, not bets on customer demand.

Three basic businesses

Game Night Ready is a bold, dark poster for first-time board-game hosts. Tank Start is an ice-blue checklist for new aquarium owners. Sprout Start is a quieter, cream-and-green page for balcony herb growers. Each offers three simple prompts and a button that takes you to the guidance already on the page.

We kept each business intentionally basic. Each one is a static guide with three useful prompts and one button. There are no accounts, databases, recommendation engines, or other product logic. That was enough to test whether the Factory could turn a brief into something real and publish it privately.

The first Game Night run exposed a limitation: every product used the same layout. We added three fixed templates and ran Game Night again. The portfolio shows the final set. The earlier run remains in the internal history and cost ledger.

Each final product contains 14 verified source files. The screenshots below show the pages exactly as the Factory produced them.

The Game Night Ready page created by Factory v0.
The Game Night Ready page created by Factory v0.
The Tank Start page created by Factory v0.
The Tank Start page created by Factory v0.
The Sprout Start page created by Factory v0.
The Sprout Start page created by Factory v0.

What v0 actually proved

The result was not simply three screenshots. Each page can be traced back to an approved brief, verified source code, and a recorded release decision. That traceability is the core proof from v0.

Every product followed the same seven steps: define the product, approve the brief, build the page, verify the source, approve the release, publish the test, and decide what should happen next. Each approval was attached to a specific artifact, so the thing we reviewed was the thing the Factory used.

I set the boundaries for the experiment and authorized Codex to complete the routine reviews within them. That delegation did not remove the controls. The Factory still recorded what was approved, what failed, and what was ultimately published.

How a brief becomes a test page.

Decide

  1. Agent taskDefine the product
  2. Human-approved gateApprove the brief

Build

  1. Agent taskBuild the page
  2. Agent checkVerify the source

Launch

  1. Human-approved gateApprove the release
  2. Agent taskPublish the test
  3. Human-approved decisionChoose the outcome

Why the dashboard mattered

Once we had several runs, the Products dashboard became the clearest way to understand the Factory. It shows each product, its current state, the seven steps behind it, and whether its infrastructure still matches the recorded status.

The public portfolio shows three finished examples. The dashboard shows the current state of the wider product catalogue, including retired products whose infrastructure is gone. The deeper record of earlier workflows, failures, and retries lives in the preserved evidence rather than the dashboard itself.

The actual Products dashboard, showing the retained product inventory and workflow progress.
Six experiments, all retired, still visible in Products. The portfolio shows three of them; the dashboard keeps the wider history.

What breaking taught us

Game Night and Tank both failed during source creation after their briefs had been approved. AWS denied the operation that would create the source commit. The records show exactly where they stopped, but not why the permission check failed.

We resumed each product from its approved checkpoint instead of starting over. The specifications stayed the same, both products finished successfully, and the failed attempts remained in the history and cost ledger. Sprout completed its main run without a failed agent attempt.

The clearest lesson was simple: recovery only means something when the record includes both the failure and the successful result. A clean final screenshot is not enough.

Proving we could finish cleanly

Creating a product was only half the test. We also needed to know that the Factory could remove its infrastructure without losing the evidence required to understand what happened.

Before retiring each product, we saved its screenshot, exact source, and history. Retirement required separate approval. We then removed the test page and source repository, confirmed both were gone, and verified that the product remained visible in the dashboard. All three v0 products are now retired.

Retirement removes the infrastructure and preserves the record.
  1. BeforePreserve the screenshot, source, and history
  2. ApprovalConfirm this product should be retired
  3. AfterRemove the test page and repository

    Confirm removal · Keep the product history

What v0 did not prove

V0 proved a bounded production process. It did not prove that these ideas should become businesses. Three completed examples do not establish customer demand, statistical reliability, autonomous operation, or the economics of running a company.

The model costs were small, but they are only one part of the cost. The missing AWS, shared-development, and human-time measurements matter more than another decimal place in the model subtotal.

The closeout produced another useful lesson: more review steps do not automatically create more confidence. Our first audit became too large and still produced bad references. We preserved that work, simplified the process, and used one independent reviewer to check the final evidence.

What changes in v1

V0 gives us a controlled way to build, inspect, recover, and retire a simple product. V1 carries those controls forward.

The next version starts with original needs, gives each product a distinct identity and logo, publishes it on its own .com, and measures real demand. That is the point where the Factory begins testing businesses, not only its own machinery.

Postscript

Game Night Ready

The test page and its source repository were retired. Its source, screenshot, and Products history remain available in the preserved record.

Postscript

Tank Start

The test page and its source repository were retired. Its source, screenshot, and Products history remain available in the preserved record.

Postscript

Sprout Start

The test page and its source repository were retired. Its source, screenshot, and Products history remain available in the preserved record.

The notebook

The numbers and the details

Three-product comparison
MeasurementGame Night ReadyTank StartSprout Start
OutcomeVerified, then retiredVerified, then retiredVerified, then retired
Elapsed time37 min 1 sec from first workflow start to stop; excludes retirement12 min 42 sec from first workflow start to stop; excludes retirement8 min 2 sec from first workflow start to stop; excludes retirement
Agent time5 min 17 sec recorded agent work; includes retirement5 min 51 sec recorded agent work; includes retirement4 min 58 sec recorded agent work; includes retirement
Active human timeNot recordedNot recordedNot recorded
Estimated model cost$0.006464 known model estimate; includes retirement$0.006212 known model estimate; includes retirement$0.006085 known model estimate; includes retirement
Other cost coverageAWS: unknown; External services: unknown; Human time: unknownAWS: unknown; External services: unknown; Human time: unknownAWS: unknown; External services: unknown; Human time: unknown

How long it took

Game Night's successful replay took about 28 minutes and 30 seconds to reach the final outcome decision. Tank's successful replay took about 8 minutes and 50 seconds. Sprout's original run took about 8 minutes and 2 seconds.

Those figures measure elapsed workflow time, including waits at checkpoints. The comparison table separately shows recorded agent time, which includes inspection and retirement. Active human time remains unmeasured. With only three products and different retry histories, these numbers are a baseline, not a performance comparison.

What we know about the cost

The selected products recorded estimated model costs of $0.006464 for Game Night, $0.006212 for Tank, and $0.006085 for Sprout. All three include retirement, for a combined $0.018761. The earlier Game Night run is separate at $0.006168.

Within the recorded experiment window, the retained workflows for these four product scopes contain 26 product attempts and 46 model requests. Failed attempts remain included. Each estimate is tied to recorded token usage and the pricing snapshot applied to that attempt. The inventory cannot rule out gaps before that window.

We also tracked the work required to analyze and close out v0. Four analyst calls recorded $0.006575, $0.007127, $0.007382, and $0.006349. The synthesis recorded $0.012725. Along with 28 later review calls, the closeout contains 33 calls. Thirteen have runtime-recorded pricing totaling $0.115261; 20 do not.

For the 20 unpriced calls, separate rate-based calculations produce $0.607126 for 11 GPT-5.4 calls and $0.370460 for nine o3 calls. We keep those estimates separate because they were not recorded by the runtime.

These figures are not an all-in cost. AWS allocation, external services, shared Factory development, active human time, and local editing and review remain unknown. Unknown means we did not measure it, not that it was free.

Agent-by-agent model estimates
Game Night Ready · agent model estimates
Agent / attemptModelRequestsEstimated cost
Product definition · succeededgpt-5.4-mini1$0.000908 estimated
Source creation · failedgpt-5.4-nano1$0.000129 estimated
Source creation · succeededgpt-5.4-nano2$0.001580 estimated
Source verification · succeededgpt-5.4-nano2$0.002205 estimated
Page published · succeededgpt-5.4-nano2$0.000896 estimated
Retirement inspection · succeededgpt-5.4-nano2$0.000401 estimated
Retirement · succeededgpt-5.4-nano2$0.000345 estimated
Tank Start · agent model estimates
Agent / attemptModelRequestsEstimated cost
Product definition · succeededgpt-5.4-mini1$0.000797 estimated
Source creation · failedgpt-5.4-nano1$0.000122 estimated
Source creation · succeededgpt-5.4-nano2$0.001536 estimated
Source verification · succeededgpt-5.4-nano2$0.002130 estimated
Page published · succeededgpt-5.4-nano2$0.000868 estimated
Retirement inspection · succeededgpt-5.4-nano2$0.000410 estimated
Retirement · succeededgpt-5.4-nano2$0.000349 estimated
Sprout Start · agent model estimates
Agent / attemptModelRequestsEstimated cost
Product definition · succeededgpt-5.4-mini1$0.000898 estimated
Source creation · succeededgpt-5.4-nano2$0.001591 estimated
Source verification · succeededgpt-5.4-nano2$0.002221 estimated
Page published · succeededgpt-5.4-nano2$0.000627 estimated
Retirement inspection · succeededgpt-5.4-nano2$0.000403 estimated
Retirement · succeededgpt-5.4-nano2$0.000345 estimated
Earlier Game Night run · separate supporting scope · agent model estimates
Agent / attemptModelRequestsEstimated cost
Original run · Product definition · succeededgpt-5.4-mini1$0.000912 estimated
Original run · Source creation · succeededgpt-5.4-nano2$0.001510 estimated
Original run · Source verification · succeededgpt-5.4-nano2$0.002114 estimated
Original run · Page published · succeededgpt-5.4-nano2$0.000892 estimated
Original run · Retirement inspection · succeededgpt-5.4-nano2$0.000395 estimated
Original run · Retirement · succeededgpt-5.4-nano2$0.000345 estimated