## Inspiration
Networking events are powerful — but we forget 80% of the people we meet. Business cards get lost, names fade, and valuable connections disappear. We asked: what if your phone could listen to your conversations and automatically build your professional network?
## What it does
ContactGraph is an AI-powered smart contact book that listens to real conversations at networking events and automatically:
- Transcribes audio with speaker diarization (knows who said what)
- Extracts contacts: names, companies, roles, emails, LinkedIn URLs
- Enriches each profile by searching the web for professional information
- Maps relationships — cofounders, coworkers, people who met at the same event
- Visualizes your network as an interactive graph with filterable dimensions
Open the app on your iPhone, tap record, and have a conversation. In 60 seconds, ContactGraph transforms audio into a rich, searchable contact book with a relationship graph.
## How we built it
- Next.js 16 on Vercel — full-stack app with API routes
- Vercel AI SDK v6 — structured data extraction with
generateText+Output.object - OpenRouter (GPT-4.1-mini) — LLM for entity extraction, relationship inference, and profile enrichment
- AssemblyAI — speech-to-text with speaker diarization (
universal-3-pro) - Tavily — web search API for contact enrichment (LinkedIn profiles, bios)
- Neon Postgres (Vercel Marketplace) — database with
pg_trgmfor fuzzy name matching - Vercel Workflow SDK — durable pipeline architecture
- react-force-graph-2d — interactive relationship graph visualization
- shadcn/ui + Tailwind — mobile-first dark theme UI
- ElevenLabs — generated test conversation audio and demo voiceover
- v0 — rapid UI prototyping for the frontend
## Architecture
iPhone (PWA) → Record audio → AssemblyAI (speaker diarization) → Vercel API Route (save transcript) → AI Pipeline: Step 1: LLM extracts entities (people, companies, roles) Step 2: Fuzzy-match & merge contacts in Postgres Step 3: Web search enrichment (Tavily → LLM) Step 4: LLM infers relationships Step 5: Link everything in DB → Frontend: Contact list + Relationship graph
## Challenges we faced
- Speaker diarization accuracy — AssemblyAI's
universal-3-promodel handles this well, but getting the right API parameters took iteration - Enrichment quality — LLMs tend to fabricate LinkedIn URLs. We solved this by passing real search result URLs to the LLM and explicitly instructing it to never guess
- Serverless background processing — Vercel Functions terminate after
responding. We used
next/server after()to keep the pipeline running - Fuzzy name matching — People's names get transcribed slightly wrong.
PostgreSQL's
pg_trgmextension with similarity scoring handles this gracefully
## What we learned
- Vercel AI SDK v6's
Output.objectwith Zod schemas is incredibly powerful for structured extraction after()from Next.js is essential for background work on serverless- Building with multiple AI services (AssemblyAI + LLM + Tavily) in a pipeline requires careful error handling per step
- v0 is great for rapid UI prototyping that integrates with real backends
## What's next
- Real-time streaming transcription (AssemblyAI WebSocket API)
- Native iOS app with background audio recording
- CRM integrations (export to HubSpot, Salesforce)
- Multi-event timeline — see how your network grows over time
- Team mode — share contact graphs with colleagues user: admin password: contactgraph2026
Built With
- assemblyai
- elevenlabs
- neon-postgres
- next.js
- openrouter
- react
- shadcn/ui
- tailwind-css
- tavily
- typescript
- v0
- vercel
- vercel-ai-sdk
- vercel-workflow-sdk
Log in or sign up for Devpost to join the conversation.