Inspiration

Negotiating a bill is already frustrating. Now imagine your internet or phone bill suddenly goes up, but the bill, fine print, and customer service call are all in a language you aren't comfortable speaking.

We built Haggle to remove that barrier.

Our goal was simple: let users speak in the language they're most comfortable with, while an AI agent handles the English negotiation for them. No bilingual kids to help you out? No worries, instead of just explaining a bill, Haggle actually takes action for you and calls the provider.

What it does

Haggle is an AI-powered bill negotiation agent.

A user uploads a bill and interacts with Haggle in Spanish, Mandarin, Korean, or English. Haggle analyzes the bill, explains the charges, and helps the user determine a target price and walk-away limit.

Then Haggle calls the provider in English and negotiates on the user's behalf.

During the call, the user can follow along through live translated subtitles. If the negotiation reaches a price or commitment outside what the user previously authorized, Haggle pauses and asks for approval before continuing.

The result is a personal AI negotiator that speaks for you while keeping you in control.

How we built it

We built Haggle with Next.js, TypeScript, and Tailwind CSS for the application and user experience.

We use Gemini for bill understanding, structured extraction, translation, negotiation analysis, and post-call summaries.

For the actual conversation, we integrated ElevenLabs Agents to create a voice agent capable of conducting a real English negotiation call while the user interacts in another language.

We use Neon Postgres and Drizzle ORM to store case files, transcripts, calls, approvals, and audit records.

We also integrated Capital One's Nessie API using mock banking data to provide account, bill, and payment history for our demo.

Because the agent is negotiating on someone's behalf, we also built server-side guardrails including:

  • User-defined walk-away limits
  • Mid-call approval requests
  • AI disclosure at the beginning of the call
  • A call kill switch
  • Restrictions around credentials and identity verification
  • An append-only audit trail

Challenges we ran into

The hardest part was moving beyond a chatbot and building an agent that could safely take action in the real world.

A negotiation is unpredictable. The provider might counteroffer, introduce a new condition, or ask for something the user never authorized. We had to make sure the AI could negotiate autonomously without being allowed to make unlimited decisions for the user.

Another challenge was connecting the live English call to a multilingual experience. We needed the voice agent, translation layer, subtitles, and user approval flow to work together without making the user feel disconnected from the conversation.

We also had to carefully separate what the AI can recommend from what it is actually allowed to agree to.

Accomplishments that we're proud of

We're especially proud that Haggle doesn't stop at giving advice.

It can go from understanding a bill → developing a negotiation strategy → calling the provider → negotiating in English → translating the conversation → requesting approval → summarizing the outcome.

We also built the product around human control from the beginning rather than adding safety as an afterthought. The user determines the boundaries, and Haggle operates within them.

Most importantly, we created an experience where language doesn't have to determine how confident someone feels advocating for a better price.

What we learned

We learned that building an AI agent is very different from building an AI chatbot.

Once an AI can take actions—especially actions involving money, phone calls, and commitments—guardrails, structured outputs, validation, and user approval become just as important as the model itself.

We also learned how powerful multimodal and voice AI become when combined. Translation alone can help someone understand a conversation, but pairing translation with an agent capable of acting on their behalf creates an entirely different kind of product.

Built With

Share this project:

Updates

Submission history