Inspiration

Every negotiation you enter - salary, rent, medical bills, car deals - the other side has data from thousands of negotiations. You have zero. This information asymmetry costs ordinary people thousands of dollars per year. Nobody teaches you how to negotiate, and even if they did, you can't think clearly under pressure. We built PARLEY to fix that.

What it does

PARLEY is a real-time AI negotiation copilot that listens to your live conversation and gives you tactical intelligence:

  • Live Transcript - Real-time speech-to-text with speaker labels
  • Tactic Detection - Flags manipulation tactics as they happen (anchoring, false urgency, guilt-tripping, lowballing, social proof, and 10+ more)
  • Counter Moves - Short, specific phrases you can say out loud right now
  • Power Shift Meter - Live visualization of who has leverage, shifts with every exchange
  • Two-Player Mode - Two people connect via room code with WebRTC audio. Each gets their own private AI agent coaching them through the negotiation. Either player can disable their AI at any time.

How we built it

  • Frontend: React (Vite) + Tailwind CSS + Framer Motion for a dark, tactical command-center UI
  • Speech: Web Speech API for browser-native real-time transcription (zero cost, zero dependencies)
  • AI: Anthropic Claude API (claude-sonnet-4-20250514) with a carefully tuned system prompt that enforces short, actionable responses in structured JSON
  • Multiplayer: Socket.IO for room management and transcript relay, WebRTC for peer-to-peer audio between browsers
  • Server: Single Express.js server handles API proxy, Socket.IO signaling, and serves the built frontend - deployable as one unit to Railway
  • No database: Everything runs in the browser session. Zero data stored.

Challenges we ran into

  • WebRTC race conditions: The host's offer would arrive at the guest's browser before the peer connection was fully created, silently dropping the signal. We solved this with refs and careful signal queuing.
  • Transcript deduplication: When a speaker pauses mid-sentence and continues, the speech API sends incremental results. On the remote side, each update was creating a new entry instead of appending. We fixed this with sourceId matching.
  • Claude response format: Claude occasionally wraps JSON in markdown backticks or adds explanation text. We strip all wrappers and retry on parse failure.
  • Network restrictions: University WiFi blocks device-to-device traffic. We deployed to the Railway and also added ngrok support as a fallback.
  • Browser autoplay policy: Chrome blocks audio playback unless the user has interacted with the page. We added interaction-triggered play fallbacks.

Accomplishments that we're proud of

  • The two-player versus mode - two people can negotiate against each other, each with their own private AI coaching them, hearing each other through the browser. No phone call needed.
  • The power shift meter creates a genuinely dramatic moment when you watch leverage swing in real-time during a negotiation.
  • The entire app deploys as a single server with one command. No database, no complex infrastructure.
  • Claude's tactic detection is surprisingly accurate - it catches subtle manipulation like appeal-to-authority ("company policy says...") and nibbling (adding small asks after agreement).

What we learned

Negotiation is one of the most impactful life skills, yet it's never taught. AI can level the playing field not by negotiating for you, but by making sure you understand what's really happening in real-time. The information asymmetry in negotiations is a solvable problem.

What's next for PARLEY

  • Mobile app with always-on listening for phone negotiations
  • Post-negotiation analysis and strategy replay
  • Industry-specific tactic databases (real estate, salary, medical billing)
  • Training mode where you practice against AI opponents with increasing difficulty

Built With

Share this project:

Updates

Submission history