Inspiration

SlashSpend was born at HackNC after realizing how many friends signed up for "free" trials that quietly turned into recurring charges. We wanted a browser-side co-pilot that could flag those dark patterns before a user hits "Submit," and then dig deeper to reveal pricing history, arbitration clauses, and other gotchas hiding in fine print.

What it does

When you open a suspicious checkout page, the Chrome extension scans the DOM for subscription keywords plus billing forms, warns you in real time, and then calls our Deno service. The backend runs a Gemini-powered research loop, validates the structured output, and sends back the site’s name, company, pricing timeline, arbitration status, intro-offer flags, and more, so you see a quick brief instead of marketing hype.

How we built it

  • Chrome extension with service worker + content script watching for signals (content.js, background.js, popup/) and caching scan results per URL.
  • Backend in Deno + Oak (backend/Server.ts) orchestrating a ResearchPipeline that composes prompts, calls Google Gemini with web-search, and converts results into a strict zod schema (DataValidator.ts).
  • KV cache (ResearchPipeline.urlToInfoPayload) to reuse structured research and selectively refresh entries.
  • Coordinated UI states in the popup to surface the validated payload with retro pixel art, keeping everything fast enough to feel native.

Challenges we ran into

  • Prompt engineering to keep Gemini focused on subscriptions while still extracting arbitration and price histories.
  • Enforcing schema integrity; we hit malformed JSON until we wrapped the model response in a conversion prompt plus zod parsing.
  • Managing Chrome extension messaging so reloading tabs reopens warnings without spamming.
  • Running research quickly enough during a hackathon demo without burning through rate limits.

Accomplishments that we're proud of

  • Seamless extension ↔ backend loop that feels instantaneous to the user.
  • Reliable structured output thanks to the validator pipeline.
  • Vintage-styled UI that keeps the warning playful while delivering serious info.

What we learned

  • How to couple LLM search tools with strict validation so hallucinations never reach the user.
  • Chrome extension architecture nuances (service worker lifetimes, storage caching, message routing).
  • Practical prompt iteration and scoring heuristics (we score payload completeness to decide cache refreshes).
  • The power of presenting financial decisions with context; users respond to history charts more than warnings alone.

What’s next for SlashSpend

  • Expand research signals beyond subscriptions, e.g. hidden fees or cancellation hurdles.
  • Integrate opt-in crowdsourced verifications so people can flag inaccurate or outdated info.
  • Package the backend for easy self-hosting and ship to the Chrome Web Store with automatic updates.

Built With

Share this project:

Updates