Case study 04
Sales CRM. From the first contact to close, in one system.
A platform that connects lead sources, assigns them across the team, and follows each lead to close. The team needed a daily operating system, not another spreadsheet.
- Sector
- Sales operations
- Type
- CRM for intake, assignment, and follow-up
- Role
- End-to-end owner: the sales process, the lead path, the product, the sources, and release
The business problem
- A new lead arrived late, or was assigned by hand, so the first reply was slow.
- The same phone number was recorded more than once.
- Follow-up depended on memory: interested in 7, 15, or 30 days, callback, no answer.
- Management could not see who was late, who was performing, or how leads spread across campaigns.
- Customer data was fully visible in daily work.
What the system changes
Operating counts and timings are not listed.
Immediate intake
A Meta lead ad enters through a webhook. A general path covers TikTok, Google, LinkedIn, the website, or Zapier / Make.
Fair assignment
Round-robin to the rep with the fewest active leads, with a notification, or pinned to a person or campaign.
Duplicates are stopped
By mobile number or an external id, before the lead is a new opportunity.
Follow-up is a list
Stages: New, Interested 7 / 15 / 30, Callback, Thinking, No Answer, Won, Lost. Late leads appear on the Delay List.
Daily supervision
Volume, the delay list, and a ranking by performance points.
Shared work
Manual entry, Excel import up to 1,000 rows, export, bulk assign, and bulk stage change. Every edit is logged.
Data protection
Numbers are masked in lists. Roles: Sales Rep, Manager, Admin, Super Admin. Integrations are for administration only.
System workflow
No customer names, full phone numbers, tokens, or account ids.
Sources
- Meta Lead Ads
- Webhook
- Website, Google, TikTok, Zapier
- Excel
- Manual entry
Intake
- Create the lead
- Normalize and remove duplicates
Assignment
- Default owner, or
- Round-robin
Pipeline
- New
- Interested 7 / 15 / 30
- Callback, Thinking, No Answer
- Won or Lost
A lead is cleaned, assigned, and moved until Won or Lost. Management sees late leads on the dashboard.
Technical architecture
The browser talks to API routes. The server checks the session and the role, then reads and writes in Supabase. Creating a lead is one path. If a source fails, the inbound event is still visible.
| Interface | Next.js 16, React 19, TypeScript, Tailwind CSS 4, Arabic and English with RTL |
|---|---|
| Data | Supabase Postgres, service role on the server |
| Auth | NextAuth |
| Lead ads | Meta Graph API and OAuth |
| Other sources | Webhooks with rate limiting |
| Hosting | Vercel |