Context
Two financial advisory teams (Spain and Greece) within a large European financial distribution network ran their entire operation on Google Sheets, Excel and scattered PDFs. Checking what an insurance policy covers meant digging through documents manually — or asking the one admin who knew.
The problem
- No CRM: client management, advisor onboarding and follow-ups were untracked.
- Policy questions (coverage, costs, exclusions, product comparison) required manual reading of dense legal documents ("condicionados").
- Advisors work from their phones, in the field.
What I built
- CRM platform (React 19 SPA + Supabase): clients, pipeline, advisor onboarding.
- RAG engine over policy documents: coverage lookup, cross-document comparison and product-vs-product answers, grounded in the actual policy text. Corpus grows as new insurers are added.
- Coaching knowledge layer: sales and communication books processed into the assistant so it can coach advisors, not just answer policy questions.
- Personal WhatsApp agent per advisor: runs on the advisor's own number via Evolution API — answers clients on their behalf with access to the knowledge base, books meetings into their calendar, handles first-line attention.
Results
| Metric | Value |
|---|---|
| Active advisors (largest team) | 248 |
| Second deployment | ~15 advisors, growing |
| Before | Sheets/Excel, manual document lookup, no CRM |
| Policy lookup | Minutes of manual reading → seconds, grounded answers |
Stack
React 19 · Vite · TypeScript · Supabase (Postgres + pgvector + RLS) · Tailwind/shadcn · TanStack Query · Evolution API (WhatsApp) · n8n


