← Journal
Build log / 01 · 5 min read

Repositioning DodoForm as an AI data pipeline

DodoForm started life as a form builder. It worked, but the category is crowded and honest with ourselves we could not name a single reason for someone to switch. The world does not need another way to put a text input on a page.

What we kept hearing about was not the form. It was everything that happened after the data arrived.

Watch how a small team actually handles inbound information. A candidate emails a CV. A client sends a brief as three voice notes. A vendor fills in a form. An ops person copies all of it, by hand, into a spreadsheet or a CRM, and normalises it as they go: this field is the budget, that one is the start date, this phone number needs a country code.

Collecting the data was never the hard part. The hard part is that it arrives in a different shape every time, and a human has to reconcile those shapes before anyone can use it.

A better form does nothing for that. It just makes one of the several doors slightly nicer.

So we reframed the product around a single idea: you define the shape of the record once, and every route in lands on that shape.

Today there are three doors. Someone else fills in a form. Or you drop a pile of emails, PDFs and screenshots into the Extractor and pull them onto the same schema. Or your own backend posts to the API. Three very different inputs, one clean, queryable output.

That sounds like a small change in positioning. It changed nearly every roadmap decision we had.

We stopped competing on form features. Field types, themes and conditional logic still matter, but they stopped being the story. They became table stakes for the door, not the product.

We started competing on trust in the output. If a schema is the promise, then filling it wrongly is the only real failure. That pushed us into work we would not have prioritised as a form builder: per-field confidence scoring, a review queue for anything below the threshold you set, and a rule that every extracted value has to trace back to an exact snippet in the source or it gets dropped rather than guessed.

That last one is unglamorous and it is the reason the product is defensible. An AI that invents a plausible budget figure is worse than no AI, because you cannot tell which numbers to trust. Grounding every field in its source means a human can check any value in seconds.

Because structured input needs no inference, sending pre-structured data costs nothing in AI credits — the field detection is rule-based. Credits are only spent when the product does actual extraction work on unstructured input.

We did not plan that as a pricing strategy. It fell out of the architecture: we knew which operations were expensive, so those became the metered ones and everything else stayed free. Responses are unlimited on every plan.

Repositioning is not rewriting the landing page. If the new story is real, it should invalidate work you were about to do and unlock work you had dismissed. If your roadmap looks the same afterwards, you changed the copy and not the product.

Ours looked different within a week. That was the signal we had found the right frame.

Follow on X →