The Project Estimator

A live tool on this site that turns nine answers about how a business runs today into its bottlenecks, named in its own words, and the order we would build them in.

Specification

Evidence for

  • AI integrations and automation
  • Custom business systems
  • Modern websites and web apps

Built on

  • TypeScript
  • Next.js
  • React
  • Anthropic API
  • Vitest

Measured

Questions asked
9
lib/estimate/questions.ts
Answer options
51
lib/estimate/questions.ts
Bottleneck rules
12
lib/estimate/bottlenecks.ts
Complexity tiers
4
lib/estimate/complexity.ts
Tests
27
vitest run, lib/estimate/estimate.test.ts
Screens
  • The Project Estimator's opening screen: 'Describe what you need. Keep the brief either way.'

    The page itself, live on this site right now — not a mock-up standing in for something you cannot reach.

  • The nine-question interview, showing the first question and its checkbox options.

    The interview. Every option here is wired to a specific line the brief can later cite back.

  • A generated brief, showing a named bottleneck, its cost, and what we would do about it, with the answer it was inferred from quoted underneath.

    One bottleneck from a real brief, run against nothing but the answers above it — quoted evidence included.

Try it yourself → Nine questions, about four minutes, and no address asked for until the brief is already in front of you.

The problem it was built for#

Every "project calculator" on the internet asks the same question: what do you want built? That produces a list of features restated as a quote — useful to nobody, because a business that knew exactly what to build would not need us.

The founder's brief for this tool asked for something else: find the bottleneck, not just the wish list. So three of the nine questions are not about the system at all — today, breaks and scale ask how the business runs right now. A questionnaire that only asks what you want cannot surface a bottleneck; it can only echo the request back in a longer sentence.

Every answer declares what it maps to#

There is no scoring function in this codebase that reads answers and decides what they mean. Every option, in every one of the fifty-one across the nine questions, states its own consequence at the point it is written: which component it implies, which integration class, which of a fixed set of "signals" it is evidence for. The brief that comes out the other end is assembled from those declarations and nothing else — which is what makes it possible to say, of any sentence in it, exactly which tick produced it.

The alternative — a model or a weighted formula that turns answers into a verdict — was rejected for the same reason SoftWrites turns down that approach everywhere else on this site: a conclusion nobody can trace is a conclusion nobody should have to trust.

It is built to disagree with you#

A tool that only ever agrees with what you selected is selling something. Five rules in the brief exist purely to argue back, and they fire on specific combinations rather than on a general sense that the project sounds big:

What the brief pushes back on, and why
If you selectedWhat it tells you
Working with no signalThis is usually the most expensive line item, and often solved by letting the app queue and sync rather than by building genuine offline support.
A dashboard, but reporting was not the top-ranked problemReporting is what people ask for first and almost never what to build first. Structure the records properly and most reports turn out to be a query.
An AI featureWe would ask what the model is for. If the answer needs to be explainable or identical every run, deterministic rules are the better engineering.
An undocumented legacy system to integrate withThat is a project of its own, with its own risk, and we would want to know whether it can be read from at all before anything else is agreed.

A brief is a URL, not a database row#

Nothing about a submitted interview is stored on our side. The answers are encoded into the link itself — legibly, not as a wall of base64, so a reader who checks the address bar can see it holds their own words and nothing else — and the brief page is a pure function of that link: same answers in, same brief out, on any machine, forever.

That has a sharp edge, and the schema is versioned to catch it. If the question set ever changes, an old link must not silently render a different brief against the new questions — it has to say the answers it holds are stale. A brief that quietly rewrites itself underneath a link someone forwarded to a finance director six months ago would be worse than one that expires cleanly.

What we learned#

This is the site's other answer to "what do you think about AI," and it is the opposite answer from the Security Command Centre's. There, the conclusion was to use no model at all. Here, a model is genuinely useful — for exactly one narrow job.

The optional model on this page reads a free-text paragraph and ticks boxes. That is the whole of its authority: it can select from the fixed vocabulary of nine questions and fifty-one options, and it cannot write a sentence that reaches the brief, invent an option that is not in the list, or skip the step where a person checks its work before anything is derived from it.