AI-Powered, Voice-First, Self-Updating CRM built on Google Cloud
Nova eliminates manual CRM data entry by listening to sales communications and automatically extracting structured CRM fields using AI. Instead of typing notes, logging calls, or updating deal stages, Nova transcribes conversations, extracts contacts, deals, sentiment, and action items, and persists everything into BigQuery with zero human input.
Built for the VC Big Bets Track hackathon. Nova demonstrates how modern AI infrastructure can remove the administrative burden that makes most CRMs go stale.
Traditional CRMs like Salesforce and HubSpot are powerful, but they depend on humans entering data consistently. In practice, that doesn't happen. Sales teams spend hours logging calls, typing meeting notes, updating deal stages, and filling contact fields. The result is incomplete CRM data, lost follow-ups, stale pipelines, and teams spending more time feeding the CRM than actually selling.
The insight behind Nova came from talking to sales teams during a hackathon: they don't lose deals because of bad conversations. They lose them because nothing gets logged after the call. The information exists — it's in the call recording, the email thread, the voice note. It just never makes it into the CRM.
Nova solves this by treating every communication as a data source. Calls get transcribed, emails get parsed, and AI extracts the structured fields that a CRM needs — automatically, in real-time, with no forms, no dropdowns, and no typing.
Nova is built as a multi-agent system where each agent owns a specific responsibility in the pipeline. This separation matters because each stage has different failure modes, latency requirements, and scaling needs.
Receives raw communications from all sources (emails, Zoom transcripts, voice notes, call recordings) and routes them into the AI pipeline. Acts as the entry point that normalizes different input formats into a standard structure the downstream agents can process.
Converts audio recordings into text using Google Cloud Speech-to-Text. Supports WAV, MP3, and FLAC formats. We chose Google's ASR over alternatives like Whisper because of its native GCP integration, streaming support, and strong performance on conversational audio with multiple speakers.
The core intelligence layer. Powered by Gemini 2.5 Pro on Vertex AI, it takes transcribed text and extracts structured CRM fields: contact name, company, deal value, follow-up date, next action, sentiment, and deal stage.
Why Gemini on Vertex AI? Three reasons:
- Structured output reliability — Gemini handles JSON schema enforcement well, which is critical when the output feeds directly into BigQuery without human review
- Long context window — sales calls can be 30-60 minutes; Gemini handles the full transcript without chunking
- Vertex AI integration — native deployment on GCP means no cross-cloud latency and straightforward auth/monitoring
We engineered structured prompts with explicit field definitions, edge case handling, and format constraints to ensure reliable extraction across varied input formats (short emails vs. hour-long calls vs. informal voice notes). Achieving 92% field population accuracy required iterating on prompt design, not model switching.
Monitors for signals that CRM data is going stale: job title changes, response gaps, calendar changes, and external company updates. Automatically flags at-risk relationships and updates fields without human intervention. This is what separates Nova from a one-time extraction tool — it keeps the CRM alive over time.
Uses embeddings + Vertex AI Matching Engine for vector search over all CRM data. Enables natural language queries like:
- "Show me all CTOs contacted last month"
- "Which deals are at risk?"
- "Summarize investor conversations this quarter"
Achieves <200ms RAG search latency by pre-computing embeddings at ingestion time and storing them in Vertex AI's vector index, so search is a nearest-neighbor lookup, not a full re-embedding.
| Component | Tool | Why |
|---|---|---|
| Backend | Python, FastAPI | FastAPI for async request handling and auto-generated API docs. Records persist directly into BigQuery via FastAPI microservices, eliminating a separate ETL layer |
| Frontend | Next.js | Server-side rendering for fast initial load, React components for interactive CRM dashboard |
| LLM | Gemini 2.5 Pro (Vertex AI) | Long context, structured output, native GCP integration |
| Speech-to-Text | Google Cloud Speech-to-Text | Multi-format ASR (WAV, MP3, FLAC), speaker diarization, GCP-native |
| Vector Search | Vertex AI Matching Engine | Managed vector index with low-latency ANN search, scales without infra management |
| Database | BigQuery | Serverless, handles analytical queries over growing CRM data without provisioning, integrates with Vertex AI |
| Containerization | Docker | Consistent environments across dev/staging/prod |
| Deployment | Google Cloud Run | Serverless container deployment, scales to zero when idle, auto-scales under load |
| Metric | Result |
|---|---|
| Daily communications processed | 10,000+ |
| Concurrent requests supported | 1,000+ |
| RAG search latency | <200ms |
| CRM entry time reduction | 80% |
| Structured extraction accuracy | 85–92% |
Zoom call ends
│
▼
Transcript generated via Speech-to-Text
│
▼
Gemini extracts structured CRM fields
(contact, company, deal value, sentiment, next steps)
│
▼
BigQuery updated via FastAPI (no manual entry)
│
▼
Vector index refreshed with new embeddings
│
▼
Deal stage & relationship risk auto-recalculated
Why no separate ETL layer? Traditional CRM pipelines extract data, transform it in a staging layer, then load into the database. Nova skips this by having the Extraction Agent output structured JSON that maps directly to the BigQuery schema. FastAPI validates and persists in one step. Fewer moving parts means fewer failure points and faster time-to-data.
Why structured prompts over fine-tuning? We considered fine-tuning Gemini on CRM-specific data but found that well-engineered structured prompts with explicit field definitions achieved 92% accuracy without the overhead of training data collection, model management, and retraining pipelines. For a hackathon-to-production path, prompt engineering was the right tradeoff.
Why multi-agent over monolithic? Each agent can fail, retry, and scale independently. If the Transcription Agent hits a rate limit, it doesn't block the Extraction Agent from processing already-transcribed data. If we need to swap Google Speech-to-Text for Whisper, only one agent changes. This modularity made rapid iteration during the hackathon possible and keeps the system maintainable long-term.
- Fine-tune Gemini models on domain-specific CRM datasets for higher extraction accuracy
- Add reinforcement learning for deal-risk scoring based on historical outcomes
- Slack and WhatsApp live integrations for real-time capture
- Real-time investor pipeline dashboard with streaming updates
- Relationship strength scoring model using interaction frequency, sentiment trends, and response patterns
- Anusree Mohanan — MS in Information Systems, Northeastern University
- Tanvi Kadam — MS in Applied Machine Learning, Northeastern University
MIT