PlumbAI Readiness Quiz
What it does for you
A 24-question AI readiness quiz for small businesses with a scored report, radar chart, 30/60/90 plan, lead capture and optional Claude narrative.

Screenshots



In more detail
Plumb is a five-minute quiz that tells a small business how ready it is to use AI, what to fix first, and what to try in the next 90 days. It asks 24 questions, one per screen, across six areas, and gives back a score, a tier, a radar chart, findings tied to your own answers, three quick wins, and a 30/60/90 plan. For a consultant, it doubles as a lead magnet that gives real value before asking for a call.
Honest limits
Not tested by hand: live Claude mode, a real webhook POST, clicking through the print dialog, and copying to the clipboard. Leads live in localStorage, with no real auth. The benchmark distribution is a labeled sample, not real response data. It runs and it's tested, but it's not a production funnel.
How I built it
Claude Code wrote the pure quiz.js core and its 284-assertion suite first: the question bank, weighting that shifts by industry and team size, tiers, the rules tables, share-link packing, the leads CSV, and the prompt builder and parser. Then it built the UI as about a dozen small modules on top. An earlier run stopped after the UI files were written but before the docs, so the final session on September 23 was a finishing pass of about 0.5 hours.
I set the honesty rules: the benchmark comparison is labeled illustrative, no ROI promises, and never post to a real webhook during the build. I also set the funnel shape: a lead gate you can turn on or off, a webhook or a local leads inbox with CSV export, and UTM capture. Claude turned those into code and checks. In the finishing pass it added a file-reference check (316 assertions total), swapped literal em dashes in regexes for escapes without changing behavior, and retook and reviewed the screenshots.
What I learned
- A rules-first report is the right default for a lead magnet. Every recommendation comes from a table keyed by area, score band, industry, and size, so the free report is complete, instant, and testable. Claude mode is optional polish that only rewrites the words.
- Merge model output field by field, with a fallback for each field. A dropped summary or a short plan from the model doesn't break the report; that field just falls back to the rules output.
- Packing the answers into the URL hash makes share links work with no backend, which suits a static funnel.
- My first
sedfix for the em dashes ate the backslashes. A small Node script did it cleanly and verify stayed green. - Writing files in under-4 KB pieces as many small modules is what got past the dropped-stream stalls. An earlier run stalled with the UI half written.
What carried forward
The "local engine first, Claude optional, parse its JSON defensively" pattern is the same one behind my earlier AI tools like #12, #15, #16, and #29, and it runs through #41, #49, and #50 in this batch too. What's new here is the per-field merge: instead of accepting or rejecting a whole reply, each field gets its own fallback.
If I took it further
I'd put the leads behind a small serverless endpoint with real auth instead of localStorage. Once there's enough real, consented response data, I'd replace the illustrative benchmark with it.
#045 Built with Claude Code September 23, 2026 316 automated checks