
Faiza Leads
Multi-portal lead management CRM — one login routes Admin, Sales, and Marketing staff to role-based dashboards with IP-restricted access and real-time updates.
Overview
Faiza Leads is an internal lead-generation and CRM system built around one login page that routes staff into the right dashboard for their role — Admin, Sales, or Marketing — without them ever seeing a portal they don't need. It's deliberately single-tenant today (one shared user pool, not a multi-company SaaS) because that's what the business actually needed: a fast way to collect, dedupe, and route leads to the people who close them.
Key Features
- Role-based portal routing — one public entry point handles login, reads the roles out of the returned token, and redirects to the correct dashboard (Admin, Sales, or Marketing) via an SSO-style payload in the URL hash.
- Lead claiming with cooldown — sales staff claim leads to work on, with a configurable cooldown between claims (a global default, overridable per user) so leads get distributed rather than hoarded.
- IP whitelist login restriction — sales and marketing accounts can be locked to approved office/network IP ranges, with blocked-attempt notifications surfaced to admins in real time.
- Duplicate lead review and full lead lifecycle tracking (assignment, status, notes) across the fields that actually matter for the business — contact info, rent/budget, location, ad source, and screenshots.
- Real-time notifications for blocked logins, approval requests, and lead events, so nothing waits for someone to refresh a page.
Technical Highlights
- NestJS + GraphQL (code-first) + TypeORM + PostgreSQL backend, structured into focused modules (Auth, Users, Lead, Notification, Settings) rather than one large service.
- The portal-routing landing page is a separate lightweight React/Vite app whose only job is authenticating and redirecting — it holds no business logic itself, which keeps each of the three role-specific dashboards independently deployable.
- Settings (cooldown, IP whitelist) are modeled as their own entities rather than config flags, so they're editable at runtime from the admin dashboard with no redeploy.
Impact
Sales and marketing staff now work in dashboards scoped to exactly their job, logins are constrained to approved networks for the roles that need it, and leads move through claim → work → close with a cooldown rule that stops the same few people from claiming everything before anyone else gets a turn.


