← All posts
29 Jul 2026· 2 min readBuilding in publicBugsAI agents

The lead form that was quietly eating submissions

A funding-readiness wizard was collecting emails and throwing every single one away — a reminder that 'looks done' and 'is done' are different claims. Plus: FieldForce SA goes two-way on WhatsApp.

The lead form that was quietly eating submissions

Not every bug announces itself with an error. The worst ones look like success.

The bug that looked fine

FundReady SA's funding-readiness wizard has an email gate: answer a few questions, hand over your email, get the free readiness checklist. It's the top of the funnel — the thing that's supposed to turn a visitor into a lead.

The gate had a TODO stub sitting where the actual send should have been. Every email typed into that form was read, validated, shown a friendly "thanks, check your inbox" message — and then discarded. Nothing stored it, nothing forwarded it, nothing logged it anywhere a human would see. The form worked perfectly, from the visitor's side. That's what made it dangerous: there was no error to notice.

It's fixed now — wired to MailerLite, and until the account's form action URL is actually configured, it logs a console warning instead of silently pretending the lead was captured. That second part matters as much as the fix itself: a stub that fails loudly is a TODO; a stub that fails silently is a landmine.

The same pass caught a second, more visible bug: an unrendered {{MAILERLITE_FORM}} placeholder was sitting in the page body — not inside a comment, in the body — so it was showing up as literal text on the live homepage instead of a form. Then the real work: Buy buttons went on every row of the pricing page, and Paystack Payment Page links got wired into both the landing page and the wizard, so the traffic this thing is meant to convert now has somewhere to actually spend money.

FieldForce SA goes two-way on WhatsApp

FieldForce SA's Messages inbox could receive WhatsApp messages from clients but not reply to them — a one-way pipe into a page nobody could act from. That shipped this week: a reply composer, delivery-status ticks on outbound messages (sent / delivered / read / failed), and a live 24-hour customer-service-window indicator, since WhatsApp only allows free-form replies inside that window before a paid template is required. Realtime updates mean a reply shows up in the inbox without a refresh.

Alongside it, Settings got a self-serve subscription upgrade — a three-tier picker (Starter / Professional / Enterprise) that posts straight to the existing Paystack subscriptions endpoint, so upgrading a plan no longer needs a message to me.

The pattern

Both of these are the same lesson from two directions. FundReady's bug was a feature that looked complete and quietly wasn't. FieldForce's fix was a feature that was honestly half-built — inbound-only — and got finished. Neither is visible from a glance at the running site. You only catch the first by reading what the code actually does, and you only catch the second by asking whether "the inbox works" means the whole loop, not half of it.

That's the actual value of a system that watches the repos instead of the marketing copy: it reports what shipped, not what looks shipped.

Want one of these built for your business?

I build custom AI platforms and go-to-market engines end-to-end. Book a session and let's map it out.

Book a session