Inspiration

The Thrifty Negotiator was inspired by a common problem faced by students: difficulty making informed purchase decisions at the point of spending. While most personal finance tools focus on post-expense tracking and visualization, they do not address the cognitive gap that exists before a transaction occurs.

Students often make frequent low-value purchases that feel individually insignificant but collectively impact financial stability. The goal was to design a system that intervenes at the decision stage and provides structured reasoning to evaluate affordability and necessity in real time.

What it does

The Thrifty Negotiator is a high-level financial counselor and behavioral therapist. It doesn't just track spending; it negotiates with you.

Negotiation Engine: Evaluates a potential purchase against your current balance and upcoming necessities (like rent).

Reality Check Quiz: Before you can buy, you must pass a 5-question AI-generated gauntlet designed to expose emotional spending.

Regret-O-Meter: Uses behavioral signals to predict the probability of buyer's remorse.

Opportunity Cost Carousel: Visually translates the price of a luxury item into survival units (e.g., "This hoodie equals 4 weeks of groceries").

Forecast & Fuel Gauge: Predicts the exact "Zero Date" when you will run out of money based on current trends and subscriptions.

Receipt Auditor: Scans past receipts to provide a brutal post-game analysis of your spending habits.

How we built it

The project is built with a modern, high-performance stack focused on fluid user experience and "intelligent" logic: Frontend: React 19 with Framer Motion for a high-end, tactile UI and Lucide-react for iconography. Intelligence: Powered by Gemini 1.5 Flash and Pro. We utilized System Instructions to maintain a consistent "Stern Elder Sibling" persona and structured JSON schemas to ensure the AI output integrated perfectly with our UI components. Data Visualization: Recharts handles the complex task of visualizing budget buffers and item impacts. Parallax & Aesthetics: Custom CSS and Motion Values create a deep, interactive background that reacts to mouse movement, making the financial "audit" feel like a premium experience. Math Engine: We implemented a normalization layer to handle multi-currency conversions using real-time exchange rate APIs, ensuring that:$$\text{Purchase Impact} = \frac{\text{Item Price}}{\text{Remaining Buffer}} \times 100$$

Challenges we ran into

Persona Consistency: Getting an AI to be "brutally honest" without being "insulting" was a fine line. We spent significant time tuning the system prompts to ensure the "roasts" felt like helpful tough love rather than clinical alerts.

OCR Accuracy: Receipt scanning is notoriously difficult due to lighting and font variations. We had to refine our image-to-text prompts to ensure Gemini could distinguish between the Total and the Subtotal in cluttered student receipts.

State Management: Coordinating between four different modes (Negotiate, Quiz, Scan, Forecast) while maintaining a persistent history in localStorage required a robust state architecture to prevent data loss during the "negotiation" flow.

Accomplishments that we're proud of

The Regret-O-Meter: A custom-built SVG gauge that animates based on AI-calculated probability. It’s a simple visual that communicates complex behavioral risk instantly.

Structured Output: Achieving 100% reliability in receiving structured JSON from Gemini, which allowed us to build complex UI elements like the "Opportunity Cost" cards dynamically.

Interactive Context: The app doesn't just look at a single price; it cross-references your savings goals, active subscriptions (like Netflix or Gym), and past "impulse-risk" history to provide a truly personalized audit.

What we learned

We learned that friction is a feature. In most UX design, the goal is to remove friction. In financial technology, adding "constructive friction" (like our Reality Check Quiz) is the key to changing behavior. We also deepened our understanding of LLM-based Forecasting—how to feed a model a "burn rate" and have it predict a "Zero Date" more accurately than a simple linear equation by factoring in "student seasonality" and subscription cycles.

What's next for The Thrifty Negotiator

Collaborative Intervention: A "Refer to a Friend" button where the AI sends a summary of your proposed bad purchase to a trusted friend to let them cast the final vote.

Bank API Integration: Moving beyond manual balance entry to real-time transaction monitoring.

The "Venting" Mode: A voice-activated feature using Gemini Live where you can try to talk the AI into letting you buy the item, and it argues back in real-time.

Built With

  • and
  • browser-localstorage
  • esm.sh
  • framer-motion
  • google-gemini-1.5-(flash-&-pro)
  • google-gemini-1.5-(flash-&-pro)-for-ai-driven-financial-counseling
  • lucide-react
  • open-exchange-rates-api
  • react-19
  • recharts
  • recharts-for-data-visualization
  • tailwind-css
  • tailwind-css-and-framer-motion-for-the-ui/ux
  • the-open-exchange-rates-api-for-currency-normalization
  • typescript
Share this project:

Updates