Client surfaces
A React/Vite application serves public marketing pages plus authenticated advisor, admin, and staff routes. Capacitor packages the same product experience for Android.
React · Vite · React Router · CapacitorA production CRM platform for insurance-advisor workflows spanning contacts, leads, follow-ups, multilingual messaging, landing pages, notifications, analytics, and role-aware operations.
Designing a role-aware insurance CRM that moves from contact to conversation to follow-up.
LeadKavach is a production CRM/SaaS product built around the day-to-day workflow of insurance advisors. It combines a public marketing surface with authenticated advisor, admin, and staff experiences, while also supporting a mobile Android shell through Capacitor.
Insurance-advisor workflows are fragmented across contact lists, WhatsApp conversations, follow-up reminders, landing pages, templates, notifications, and administrative operations. The engineering challenge was to turn those separate actions into one system without exposing advisor data across roles or making the workflow feel heavier than the work it was replacing.
I worked across the product end to end: frontend flows, Express APIs, MySQL-backed data operations, role-aware authorization, notification workflows, public-route prerendering, mobile packaging, and production-oriented debugging. The project evolved through repeated product iterations rather than as a one-screen demo.
A React/Vite application serves public marketing pages plus authenticated advisor, admin, and staff routes. Capacitor packages the same product experience for Android.
React · Vite · React Router · CapacitorExpress exposes the product API, with middleware for authentication and role-sensitive operations. Controllers and services separate product workflows from routing concerns.
Node.js · Express · JWT · Helmet · Rate limitingCRM records, leads, workflow state, subscriptions, and operational data are persisted through MySQL-backed application logic.
MySQL · mysql2 · SQL migrationsBackground jobs and Firebase-based notification services handle reminders, daily briefs, trial lifecycle events, and native notification actions.
Firebase Admin · Scheduled jobs · Push notificationsPublic routes are prerendered at build time to improve discoverability while the authenticated CRM remains a client application.
Vite build · prerender scripts · React HelmetOpening WhatsApp is not treated as proof that a message was sent. The workflow separates the share attempt from the advisor's confirmation, avoiding false lead records caused by a user abandoning WhatsApp.
The product uses role-aware routes and authorization boundaries so platform administration does not imply unrestricted access to every advisor's CRM data.
Capacitor was used to package the existing web application instead of maintaining a separate native product, while still enabling push notifications, splash behavior, and app lifecycle handling.
Public discoverable routes are handled differently from the private CRM. This keeps SEO concerns focused on pages search engines should actually index.
Advisor, staff, and admin experiences were separated into explicit product surfaces and middleware-backed access patterns rather than relying only on hidden navigation links.
Reminder jobs, daily briefs, notification preferences, and native action handling had to agree on due dates and user intent rather than simply sending generic scheduled messages.
The project combines SEO-friendly public routes with a private SPA-style CRM, requiring different rendering and analytics considerations across the same codebase.
The codebase expanded from core advisor CRM flows into staff tooling, support tickets, subscriptions, mobile delivery, guided trials, and assistant workflows while preserving the existing product path.
The production repository is private. Architecture and workflow descriptions are based on the implemented application structure and code paths; no private customer data or secrets are exposed here.
← BACK TO SELECTED WORK