Skip to content

Product case · 5 / 13

A CRM for a business that had never had one

Product note. Organizations, dates, private data and implementation details are omitted.

Abstract illustration: six inlets converging into one core, and a line returning

The problem and the decisions

A small dealership was collecting enquiries from six different places, a quick form, a contact form, a credit application, a deal checker, a chat and inbound texts, and all of them ended in the same place: somebody's phone, scrolled past.

I built the what happens next around them. Every enquiry is captured, tagged with where it came from, written to a customer and lead database, and answered: an automated check-in a day later if nobody booked, a second one two days after that, a recovery path for applications left half-finished, and a weekly digest so the owner reads one email instead of ninety notifications.

The lane tagging is the part that changed decisions. The demand analysis and the lead records deliberately use the same eight groups, because otherwise the question the business actually asks, did this lane produce anything, cannot be answered no matter how many leads arrive.

Consent has a single source of truth: the exact wording sent to a customer is the same string stored when they reply yes. If those two drift, the record attributes someone's agreement to words they were never shown.

What it was built with

  • Next.js
  • Supabase
  • Twilio
  • Resend
  • Scheduled jobs
  • Mixpanel

What I did

  • Lead capture
  • Where customers came from
  • Customer database
  • SMS campaigns
  • Automated follow-up
  • Consent
  • Email marketing
  • Newsletter

What I learned

A CRM is not a database with contacts in it. It is the promise that nothing arrives and gets forgotten, and most of that promise is made by the things that run while nobody is watching.

More context · password required →