Inspiration
Corporate billing departments count on consumer exhaustion.
Whether it is a gym membership that refuses to die, an unexplained final adjustment from an energy supplier, a rogue auto-renewal cancelled months ago, or lingering bills arriving after a house move—disputing an unfair charge is an asymmetric fight.
The company has automated billing machines; the consumer has a blank email draft, an unmonitored noreply@ address, and a vague sense that the charge violates standard consumer fairness. Most people give in and pay just to make the collection notices stop.
I hit this wall personally after a major relocation, buried under a flurry of ghost charges and aggressive demand letters for accounts that had been closed for months. Tracking down direct escalation contacts, checking whether addresses were staffed, and digging up consumer dispute bodies took hours for every single notice.
The administrative friction is the business model. We built Countermark to automate the pushback.
What it does
Countermark turns hours of stressful detective work into a structured, ready-to-send dispute draft in just a few minutes:
- Notice Ingestion via Paste or Upload: Accepts raw dispute text, pasted emails, or uploaded PDF billing notices, extracting key details like reference numbers, disputed amounts, and account timelines.
- Smart Recipient Detection with Confidence Badges: Pulls best-effort recipient addresses directly from the notice combined with domain heuristics, labeling each target with honest confidence badges (high, inferred, or none) alongside cautionary guidance when an address is inferred or role-based.
- Curated Consumer & Regulatory Links: Surfaces category-mapped links to relevant statutory consumer support pages, dispute resolution schemes, and independent ombudsmen so users know where to escalate next.
- Dual Dispatch Workflow: Generates a structured, plain-language dispute draft ready to launch in the user's default email client via
mailto:, with a one-click plain text copy option for submitting directly into secure customer portals.
How we built it
We built Countermark on Next.js, leveraging Google Gemini to power the multi-modal document extraction and draft generation. Users paste dispute text or upload a PDF notice directly into the app. Gemini parses the notice structure, identifies potential contact endpoints, and generates an assertive, plain-language dispute draft focused on fairness and facts. The application then pairs the draft with category-mapped regulatory and ombudsman guidance links, providing both a direct mailto: handoff for immediate dispatch and clean clipboard fallbacks for web-based support ticketing systems.
Challenges we ran into
- Gemini Latency and 503 Spikes: Running multi-modal analysis on detailed notices during peak API loads occasionally resulted in 30–90 second processing times or upstream 503 capacity errors, requiring resilient UI loading states, clear user feedback, and robust retry handling.
- Messy PDF Parsing: Billing letters come in wildly unpredictable formats—scanned pages, multi-column layouts, mixed fonts, and broken digital text layers frequently complicated clean data extraction.
mailto:Character Limits: Encoding rich dispute drafts complete with itemized charges and context into standard URI schemes frequently pushed against hard length limits in various desktop mail clients and web browsers.- API Billing and Key Management: Managing token consumption and API spend while prototyping prompts across unpredictable document sizes required strict budget guardrails and key handling.
- Calibrating Contact Confidence: Billing companies rarely make direct dispute desks obvious. Striking the balance between helpful extraction and avoiding false confidence meant engineering a clear badge system rather than pretending an inferred contact was a verified guarantee.
Accomplishments that we're proud of
- An Honest, Grounded UX: Avoiding over-promising AI "magic" by shipping clear confidence badges, realistic loading states, and explicit disclaimers that keep users fully in control of what gets sent.
- Bypassing the Blank-Page Freeze: Transforming raw, hostile billing notices into coherent, professional draft letters that give stressed consumers an immediate, actionable starting point.
- Bulletproof Dual Handoff: Solving client URL encoding quirks so users can reliably jump straight to their desktop mail client or grab clean text for webforms without losing formatting.
What we learned
- A Planning-First Mindset Pays Off: Investing time in schema definitions, data boundaries, and user flows upfront prevented costly architectural refactors later in the build.
- The Value of Collaborative AI Development: Pairing with AI as an active sounding board consistently uncovered structural edge cases and edge-test scenarios that even seasoned QA eyes had overlooked.
- Consumer-Dispute UX Demands Transparency: When people are stressed by unexpected charges, vague promises erode trust. Clear disclaimers, warnings about unmonitored mailboxes, and realistic status/progress pills + rotating copy build far more confidence than aggressive automation claims.
What's next for Countermark
- Local Dispute History: Providing a lightweight, privacy-conscious local storage log so users can track dispatched disputes and response deadlines over time.
- Expanded Ombudsman Direct Links: Deepening our directory of independent adjudication bodies and sector ombudsmen with pre-filled escalation templates.
- Fine-Tuned Sector Templates: Introducing configurable tone presets (e.g., formal pushback, proof-of-debt request, or statutory cancellation notice) to match specific dispute stages.
- Batch Document Intake: Supporting multi-document uploads for ongoing dispute threads involving multiple letters and counter-notices.
Built With
- css
- gemini
- next.js
- react
- tailwind
- typescript
- unpdf
- zod
Log in or sign up for Devpost to join the conversation.