Shazil Khan
Back to portfolioSaaS · United States

AI call tracking

Tracked numbers, recorded calls and AI summaries, so an agency can prove which marketing made the phone ring.

Role
Developer
Timeline
2026
Stack
Laravel, Next.js, Twilio voice, Whisper, OpenAI, Google Analytics 4
Client
The same US agency, a second product
1 linethe fix that stopped every routed call from dropping
28releases to date
10audit findings closed in one release
Same daynumber sales resumed after the fix
2products on one codebase, fully separated

The situation

Agencies could not connect a phone call to the campaign that caused it, and nobody had time to listen to recordings.

The product also had to live on the same codebase as the SEO platform, without the two ever charging or showing each other's customers.

What I built

  • Number provisioning and call routing on Twilio, with recording and voicemail.
  • Encrypted recordings, Whisper transcripts and AI summaries where every point must quote the transcript word for word. The server checks the quote is really there and drops it if not.
  • Qualified leads can be sent to Google Analytics 4 as key events, proven end to end on a test property, and Google Ads conversion sending is built.
  • Agency accounts holding many clients, each with its own numbers and billing.
  • Checkout and plan pages fully separated from the sister product on the shared codebase.
  • A WordPress plugin for the website side, a public site with terms, privacy and a contact form, and a transactional email design.

What was hard

Every routed call was dropping

A production audit found that a release had started applying a call time limit as a mid-call update. The phone API rejected it and dropped the call, and the only symptom was silence. The fix was to move the limit into the dial instruction itself, one line. I verified it by placing a real call and watching the recording, transcript and AI summary arrive. Number sales resumed the same day.

Checkout charged the wrong product

Paying for call tracking could charge the SEO platform's plan and lock the customer out of what they paid for. I built a local payment simulator to reproduce it without touching live billing, then made every first-plan path refuse the wrong product.

Closing an audit in one release

The audit listed two critical and eight high findings. All ten were fixed, tested and shipped in a single release, with a rollback ref and a written receipt of what was verified.