Team edition waitlist form

The "Join the waitlist" button on the Team pricing card links to `/contact` — a page with email addresses and no form. A visitor who wants to join the waitlist has to manually compose an email. That's a dead conversion path that loses every casual-interest lead. Replace the CTA with an inline email capture form backed by Formspree. No redirect, no modal, no page navigation. Type email, submit, see confirmation.

verdict PASSscore 23 / 23findings 7 (0 risk · 3 debt · 4 obs)duration 1h 43mrejection cycles 0shipped May 18, 2026surface website

Pipeline timeline

Intent to proven code in 1h 43m across Think, Plan, Build, and Verify.

Think
1m
Plan
4m
Build
4m
Verify
4m

Assertion ledger

23 claims, each independently verified. Showing 8 — show all →

IDSaysMatcher
A001The Team card shows an email form instead of a link buttonverifiedok
A002The Individual card still shows its original install buttonverifiedok
A003Submitting an email sends a POST to Formspree with JSON headersverifiedok
A004The submission includes an Accept JSON header so Formspree returns JSONverifiedok
A005After a successful submission the form disappears and a confirmation message showsverifiedok
A006The success message has a fade-in transitionverifiedok
A007When submission fails an error message appears with a fallback emailverifiedok
A008The form stays interactive after an error so the user can retryverifiedok

Findings 7 total

debtwebsite/components/pricing/WaitlistForm.tsxaccept
Honeypot DOM input is dead code — JSON submission hardcodes _gotcha: '' regardless of field value
debtwebsite/components/pricing/WaitlistForm.tsxaccept
Hidden _source DOM input is dead code — JSON body hardcodes _source value, DOM element never read
obswebsite/components/pricing/WaitlistForm.tsxmonitor
Success message aria-live on freshly mounted element — screen readers may not announce dynamically inserted aria-live regions
debtwebsite/components/pricing/pricing.module.cssaccept
Error color hardcoded as #ff8a8a on highlighted card instead of CSS custom property
obswebsite/components/pricing/WaitlistForm.tsxmonitor
No client-side rate limiting — user can spam submit after error state re-enables the button
+2more findings

Integrity seal

scopesha256:f387a3f35df9e...
contractsha256:b7c91dfdf3d46...
plansha256:2636016defd5b...
specsha256:2f4eb2de9669b...
build-reportsha256:21c8328603505...
build-datasha256:9e50852d5cad2...
verify-reportsha256:1d8d43a710985...
verify-datasha256:acd77807eb50a...
audit cmd$ ana proof audit waitlist-form   → all hashes match