Case study · Own product
Thola Leads
A WhatsApp-native lead engine for people who sell on their phone.

- Year
- 2025
- Timeline
- About 3 months
- Role
- Design · Engineering · Infrastructure
- Status
- See it live
The brief
Our own product, built for how South African small businesses actually sell: on their phone, over WhatsApp. The problem isn't finding leads it's the chat bubbles going cold. An enquiry comes in, life happens, and three days later the customer bought somewhere else.
Thola is the tool you open ten times a day to fire the next follow-up. Not a CRM clone. Speed and one-tap actions beat features and polish.
What we built
A lead has a temperature and it moves: cold, warm, hot, won, with lost as the honest off-ramp. The dashboard leads with "who to call now", a ranked queue driven by a server-side follow-up engine that nudges you before a lead goes cold and auto-pauses the moment someone replies.

Around that spine: WhatsApp and email sending with number-health protection, campaigns, cadences, invoicing with three South African payment gateways (PayFast, Yoco, and Ozow) and a board view where the colour of a card is the stage of the deal, everywhere, always.

The hard part
Multi-tenancy with honest metering. Every read and write is scoped server-side: hiding a button is UX, but the server is the gate. Every send that costs money flows through a single metering chokepoint, so no tenant action can ever run up an unbilled cost. And the POPIA layer isn't a banner: opt-out is absolute and enforced in the data layer, opening a lead writes an audit row, and the UI never claims "consented", "reachable", or "sent" unless it's literally true.
Outcome
Live at tholaleads.com: 64 production routes, 321 automated tests, and a UI designed at 360px first because that's the screen it actually lives on. No tracking cookies, no fake testimonials on the marketing page, and a lead only counts as won when a human says so.
- 0
- Payment gateways integrated
- 0
- Production routes
- 0
- Automated tests
- 0px
- Designed first at
Stack
- Next.js 16
- React 19
- TypeScript
- PostgreSQL
- Drizzle ORM
- Better Auth
- WhatsApp Cloud API
- Tailwind v4