The coverage map
Broad and cheap. One line per scenario, tagged with the lens it came from and the requirement it tests.
Point it at a requirement, a pasted spec, or a PDF. Before a single step is written, Hawzu maps up to forty scenarios — grouped by lens, scored for depth per requirement, with the requirements nothing was proposed for named on screen. You pick what's worth writing. It writes those.
Stage one, on real requirements. Depth per requirement — and R5 reporting nothing proposed, which is the hole a list of finished test cases would never have shown you.
Ten finished test cases can't show you a hole — you'd have to already know what should have been there. Forty scenario titles can. So the map is the first thing you see, and it's the thing you approve.
Broad and cheap. One line per scenario, tagged with the lens it came from and the requirement it tests.
Deep and narrow. Full steps, written only for the scenarios you ticked — with the whole source re-sent, so the steps still name real fields.
A diagram of the two stages, not a screenshot. The split exists for a plain reason: a finished test case costs roughly ten times what a scenario title costs, so the budget that buys ten cases buys forty lines of coverage — and only one of those is a map.
Stage two, expanded. Priority, test type, the requirement it covers, a precondition, and an expected result on every step — editable before it is saved, and nothing is written until you accept.
Machine-written tests are only worth having if a person can check them quickly. Everything here exists to make the check fast.
One call writes about ten finished test cases. The same budget maps forty scenario titles — and forty is enough to see what is missing. You read the map, tick what is worth writing, and only then does it write steps.
Each requirement in the run gets an internal label, and the response schema only accepts those labels. A citation to something outside the request isn't discouraged — it is structurally impossible. Work drawn from an attached document cites nothing, rather than guessing.
Functional, negative, edge cases and end-to-end — plus six lenses for the things a spec assumes rather than states: state transitions, concurrency, permissions, partial failure, data integrity, and the seams with other systems.
When the source is too thin, it returns fewer scenarios and says so — instead of padding the list to the number you asked for. A short honest map beats forty plausible titles you then have to disprove one by one.
The titles already covering each requirement go into the request, so the map proposes what your suite doesn't have yet. Ask twice and you get new ground the second time, not the same twenty cases again.
Every draft is editable in place — title, priority, preconditions, each step and its expected result. Untick what you don't want. Press Add and the rest land as real, runnable test cases: coded, filed, linked to the requirement they cover, and tagged AI so anyone can see where they came from.
A requirement tells you what should happen. It rarely tells you what happens when two people do it at once, or when the payment service times out halfway through.
We ran twenty requirement documents through the generator twice, and had the output judged blind against coverage targets written before any of it existed. Turning the second group of lenses on raised risk coverage from 29.4% to 34.7% — better on eleven documents, worse on one. The gap was never the model's fault: nothing had ever asked it those questions.
Some of these are instructions. The important ones aren't — they're the shape of what the model is allowed to return at all.
The instruction that overrides all others is to invent nothing — no field names, no error strings, no status codes, no data values that aren't in what you supplied.
Requirements the map proposed nothing for are named on screen, with the two honest explanations: the source doesn't describe them, or they're already covered.
A source too long to send in full is trimmed from the middle — start and end kept, because acceptance criteria live at the end — and the run tells you exactly how many characters made it.
Attached text and even filenames are treated as material describing a system to test. A file named to look like a command is read as a filename.
It won't create requirements, suites or releases, it won't read your repository, and it won't save a thing you haven't ticked.
You should know where the edges are before you plan around them.
The spec for Refunds v2 landed this morning as a PDF. You drop it in, tick the six requirements it relates to, leave the risk lenses on, and press Generate. Ninety seconds later you're not reading test cases — you're reading a map:
The gap on REQ-118 was the real finding. The spec never said what happens to a partial refund on a cancelled order — so nothing could.
Once you press Add they behave exactly like anything you wrote by hand — they run in executions, count toward requirement coverage, and carry the same codes, folders and history. They keep one small AI tag, so you can always find them again — there's no limbo state, and nothing to approve.
Every feature is free while Hawzu is in early access — no credit card required.