The problem
The sales team tracked leads and cold-calling across spreadsheets, with no assignment, status tracking, or visibility into team performance.
The approach
Built a full-stack CRM with an Express and MongoDB backend and a Next.js dashboard. Leads import from Excel or CSV, get grouped and assigned, and move through status stages, while cold-calling tasks track team activity.
Architecture
Express, TypeScript, and MongoDB (Mongoose) API with JWT auth and refresh tokens, Socket.io notifications, node-cron jobs, and Excel and CSV parsing. Next.js App Router client with Redux Toolkit, redux-persist, and Recharts.
Key features
- Lead import from Excel and CSV with color-coded groups
- Bulk assignment and status tracking (new, interested, call-back, on-board)
- Cold-calling task creation, assignment, and progress tracking
- Role-based access control and email team invitations
- Activity history with notes and due dates
- Real-time notifications over Socket.io and analytics dashboards
Tech stack
The result
Replaced spreadsheet lead tracking with a single assigned pipeline, task tracking, and per-member performance analytics.