Your personal AI agent that finds top-rated local vendors, calls them on your behalf, and negotiates the price down — in your language.
Live demo: https://negotiator-app-rho.vercel.app
Tell Negotiator what you need ("a cab to the airport at 6 AM tomorrow"). It discovers the highest-rated vendors nearby via Google Maps, researches fair market pricing via Perplexity, then places real outbound voice calls via Vapi. A multi-agent system (LangGraph) handles the conversation, escalates to you if it gets stuck, learns from every call, and verifies the final deal.
User intake (chat)
↓
Discover vendors ──► Research fair price ──► Outbound voice call
↓
┌────────────── Negotiator agent ──────────────┐
↓ ↓ ↓
HITL escalation Learning loop Deal verification
(you approve) (memory store) (price + terms)
| Agent | Responsibility |
|---|---|
| Research | Pulls comparable prices, vendor reputation, and constraints (Perplexity + Google Maps) |
| Negotiator | Drives the live voice conversation, anchors, counter-offers, closes |
| Learning | Stores what worked / what didn't per vendor and category, feeds future calls |
| Verification | Re-confirms final price, ETA, and terms before the call ends |
State is orchestrated as a LangGraph StateGraph with a human-in-the-loop interrupt: if the agent's confidence drops below threshold, the call is paused and the user is pinged to approve / steer.
| Layer | Tech |
|---|---|
| Frontend | Next.js 16, React 19, TailwindCSS |
| Agent runtime | LangGraph (TypeScript), OpenAI GPT-4 |
| Voice | Vapi (outbound calls), Azure Neural TTS |
| Discovery | Google Maps Places API |
| Pricing intel | Perplexity API |
| DB | Postgres (Neon) |
| Hosting | Vercel |
Hindi, Kannada, Telugu, Tamil, Bengali, Marathi, Gujarati, English — selected per call based on the vendor's region.
cp .env.example .env.local # add your keys
npm install
npm run dev # http://localhost:3000| Var | Purpose |
|---|---|
OPENAI_API_KEY |
LLM for all agents |
GOOGLE_MAPS_API_KEY |
Vendor discovery |
PERPLEXITY_API_KEY |
Price research |
VAPI_API_KEY |
Outbound voice calls |
VAPI_PHONE_NUMBER_ID |
Caller ID |
VAPI_SERVER_URL |
Public URL for Vapi webhooks |
DATABASE_URL |
Neon Postgres connection string |
negotiator-app/
├── app/ # Next.js App Router (UI + API routes)
├── lib/
│ ├── agents/ # LangGraph nodes: research, negotiator, learning, verification
│ ├── vapi/ # Vapi client + webhook handlers
│ ├── maps/ # Google Maps wrappers
│ └── db/ # Neon + schema
└── docs/ # User stories, call-history schema
See ARCHITECTURE.md (repo root) for the full state-graph and node contracts.