Case Study • Dispute Dine

Enabled Restaurants Clawback
$2K-5K/Month Per Location

Ionio partnered with an early-stage restaurant tech company to design, build, and deploy DisputeDine — a SaaS platform that automatically disputes fraudulent refund claims across major food delivery platforms.

This solution transformed a labor-intensive administrative burden into a fully autonomous revenue recovery engine. Most subscribers hit positive ROI within their first week. The average location recovers ~$2,500 monthly in fraudulent chargebacks— while eliminating 10-12 hours of weekly manual work.

8 WeeksZero to production
$2.5k/mAvg. Revenue Recovered/location
12+Live deployments
500%+Return on Development

The Expensive Problem

Delivery platforms like DoorDash, Uber Eats, and Grubhub now account for 30–40% of a typical restaurant's revenue in the United States. That's not a side channel—it's a core revenue stream. But there's a problem buried in those numbers that most people outside the industry never see.

Customers can file refund claims with a few taps on their phone. "Order never arrived." "Food was cold." "Missing items." The platforms, prioritizing customer experience over merchant protection, often approve these refunds automatically—no questions asked, no evidence required. A disturbing number of these claims are completely fraudulent.

The false chargeback rate varies wildly depending on location. In some neighborhoods, it's barely noticeable. In others—particularly lower-income areas—fraudulent refund claims can hit 15–20% of all delivery orders. Do the math: delivery apps represent ~35% of revenue, fraudulent chargebacks affect 5–15% of delivery orders in high-risk locations, which translates to 2–5% of total restaurant revenue simply vanishing.

~65%
Dine-in & Other
~30%
Delivery Revenue
2–5%
Lost to Fraud
Total
Revenue
Dine-in & Other ~65%
Delivery App Revenue ~30% DoorDash, Uber Eats, Grubhub
Lost to Fraudulent Chargebacks 2–5% Simply vanishes. Every month.
35% Delivery
Revenue
×
5–15% Fraudulent
Chargebacks
=
2–5% Total Revenue
Lost
Hover to explore • The Revenue Hemorrhage

In theory, restaurants can dispute these fraudulent refunds. Every platform has a dispute process. You log in, find the order, click "Dispute," write an explanation, attach evidence, and submit. In practice, almost nobody does it. Restaurant managers are already stretched thin—managing inventory, handling staff issues, dealing with suppliers. Logging into three different portals, hunting down disputed orders, crafting individual responses, and tracking outcomes across platforms requires 10–12 hours of administrative work per week.

Nobody has that time. Because of the complexity involved, over 75% of legitimate, winnable disputes never get filed. Restaurants are leaving money on the table—money they earned, money they deserve—simply because the process is too painful.

Winnable Disputes
Manual
Process Bottleneck
10–12 hrs/wk
Actually Filed
<25% of legitimate disputes
75%+
Never Filed
3 Portals
To Manage
$0
Recovered
The Manual Dispute Bottleneck

Our client saw this problem and knew it could be solved—if someone built the right tool.

Why This Was Hard

Building a dispute automation platform sounds straightforward until you realize the delivery platforms actively don't want you to do it. Every major obstacle we faced was a deliberate barrier—and we had to engineer around each one.

No APIs for Dispute Filing
Blocked

The first thing we checked: do these platforms have APIs that let you file disputes programmatically? GrubHub, DoorDash, Uber Eats—every major platform has deliberately excluded dispute filing from their APIs. They don't want automation here. They want friction. This meant browser automation was our only path forward.

Evading Platform Detection
Critical

The platforms actively work to detect and block automation. If DoorDash detects a bot filing disputes, they won't just block that session—they'll flag the account. Too many automated actions? Account suspended. We had to build automation that behaves like a human: randomized timing, natural mouse movements, session management that mimics real browser behavior.

Handling Two-Factor Authentication
Complex

Modern platforms require 2FA. Every login triggers a verification code via SMS or email. For automation that needs to log in regularly, programmatically, without human intervention? It's a wall. We built a system that intercepts 2FA codes, routes them to our servers in real-time, and injects them into the authentication flow—all within 60 seconds before the code expires.

Running Reliably at Scale
Scale

This wasn't a one-off script. We needed the system to run autonomously, every single day, across dozens of restaurant locations, each with their own credentials for each platform. That meant secure credential storage, session state management, graceful failure recovery, comprehensive logging, and anomaly alerting—all before they became customer-facing problems.

Generating Evidence Dynamically
Novel

Not all disputes are the same. A "never arrived" claim needs different evidence than a "wrong items" claim. A $12 lunch order needs a different tone than a $200 catering order. We built an intelligent dispute response engine that analyzes each case and crafts compelling, individualized rebuttals—at scale.

"When the front door is locked, you find another way in. Every major platform deliberately excluded dispute filing from their APIs—so we built automation that operates where APIs don't exist."

The Platform in Action

01 / Connect

Link Your Delivery Platforms

Connect your Uber Eats, DoorDash, and Grubhub merchant accounts in minutes. Once linked, the dashboard displays real-time analytics—win rates, total disputed amounts, recovered revenue, and pending cases across all platforms at a glance.

02 / Configure

Set Up Dispute Templates

Customize how disputes get filed for each platform. Create templates for different issue types—missing items, wrong orders, cancelled deliveries—with pre-written responses that AI rephrases to sound natural. Your dispute strategy, automated.

03 / Automate

Watch the System Work

The Activity feed shows every action the automation takes—disputes raised, platforms accessed, success and failure states. Complete transparency into what's running, when it ran, and what happened. No black boxes.

04 / Track

Monitor Every Dispute

Every dispute filed appears in a unified table—customer name, platform, issue reason, status, amount. Filter by date range or platform. Click into any dispute to see the exact response that was submitted. Full visibility, zero manual tracking.

05 / Recover

Track Recovered Revenue

The Payments Dashboard shows what matters most: money recovered. Total amount won, monthly recovery trends, and upcoming charges based on performance. The ROI is visible, measurable, and automatic.

What We Built

The Complete Platform

We built everything around browser automation—the intelligence that could log into platforms, identify disputes, and file responses. Our job was to make that automation accessible, reliable, and invisible to detection systems.

We started with the fundamentals: user authentication, account management, subscription billing via Stripe, usage tracking. These aren't glamorous features, but they're the foundation of any SaaS product. Users needed to sign up, manage their accounts, understand their usage, and pay for what they consumed.

From there, we built the core workflows. Users connect their delivery platform accounts through our Chrome extension—Uber Eats, DoorDash, and Grubhub—all three major food delivery platforms supported seamlessly. Once connected, they configure dispute templates and filing frequency, then let the system run autonomously.

Uber Eats
Uber Eats
DoorDash
DoorDash
Grubhub
Grubhub

Browser Automation Engine

The automation layer uses Puppeteer as the primary tool, with Selenium as a fallback for edge cases. Puppeteer gives us a headless Chrome instance we can control programmatically—navigating to URLs, clicking buttons, filling forms, reading page content.

But we can't blast through actions at machine speed. We implemented randomized delays (1.5–4 seconds between major actions, 200–800ms between form fields), natural mouse movements with slight curves and imperfection, and session persistence to reduce fresh logins.

vs
🤖
Typical Bot
Mouse Movement
Straight lines, instant teleport
Action Timing
Consistent 50ms delays
Session Handling
Fresh login every time
🚫 Flagged & Blocked
👤
DisputeDine
Mouse Movement
Natural curves & micro-jitter
Action Timing
Random 1.5–4s variance
Session Handling
Persistent cookies & state
Passes Detection
Why Stealth Matters

2FA Interception System

When a platform requires 2FA, it sends a verification code via email. Users configure email forwarding for platform notification emails to a secure inbox we control.

When our automation triggers a 2FA prompt, it waits. Our email ingestion service watches for incoming 2FA emails. When a code arrives, we parse it and feed it into the waiting automation session—all within the 60-second expiry window.

Dispute Intelligence

Each dispute gets analyzed: What reason did the customer give? What was the order value? What items were in the order? Based on this analysis, the system generates customized responses with order-specific details, reason-specific rebuttals, and platform-specific formatting.

After filing, we periodically check dispute statuses and capture outcomes and credited amounts, feeding results back into the dashboard analytics.

Claim Type
"Never Arrived"
Order Value
$47.50
Items
3 Menu Items
History
2 Prior Claims
🧠 PROCESSING
Response Tone
Firm, Evidence-Based
Attachments
GPS + Photo Proof
Template
DoorDash Format
Voice
Professional, Direct
$47.50 Dispute "Never Arrived"
AI Transform
Evidence-Based Rebuttal Delivery Proof Attached
Dispute Intelligence Engine

Distributed Job Processing

We built a job queue system that schedules automation jobs based on user preferences, distributes load across multiple worker processes, handles retries on failure, ensures no account is accessed by multiple workers simultaneously, and logs everything for debugging.

Each restaurant's platforms are checked on their configured schedule. Jobs are idempotent—if one fails partway through, it can be retried safely without filing duplicate disputes.

Internal Infrastructure

Technical Infrastructure

The platform runs on a carefully selected stack optimized for reliability and scale—handling daily automated operations across dozens of restaurant accounts while remaining invisible to platform detection systems.

⚛️
Frontend React + Tailwind CSS

Powers the user interface. Every interaction—from connecting platforms to monitoring dispute activity—happens without page reloads. Tailwind provides the utility-first styling for rapid, consistent UI development.

🟢
Backend Node.js + Express

Handles server-side logic. The framework gave us solid foundations for API development, database management, and user authentication. Non-blocking I/O handles concurrent automation sessions efficiently.

⚙️
Task Processing Custom Job Queue

Manages asynchronous workloads. When automation runs are scheduled, work gets distributed across available workers with proper tracking and retry logic. Ensures no account is accessed by multiple workers simultaneously.

🤖
Browser Automation Puppeteer + Selenium

Handles the actual platform interactions. Custom timing and behavior patterns ensure automation remains undetectable. Puppeteer as primary, Selenium as fallback for edge cases.

🐳
Containerization Docker + Docker Compose

Packages the application for consistent deployment. Every component runs in its own container with defined dependencies. Browser instances spin up in isolated environments for each automation session.

☁️
Cloud Infrastructure AWS

Everything deploys to AWS, providing the scalability and reliability needed for daily automated operations across dozens of accounts. Infrastructure scales with customer growth without re-architecting.

🗄️
Database PostgreSQL

Stores user accounts, platform connections, dispute history, and outcome tracking. Schema design handles high write volumes during automation runs while maintaining fast read performance for the dashboard.

Results

The Business Impact

DisputeDine transformed dispute management from a 10-hour weekly headache into a set-and-forget revenue recovery system.

Before DisputeDine

Pain State

Time Investment

10-12 hours/week

Manually reviewing orders, identifying fraudulent refunds, filing disputes one by one.

Filing Rate

<25% of disputes filed

Most winnable disputes never get filed. Staff too busy, process too tedious.

Revenue Recovery

$0-500/month

Inconsistent, incomplete. Nowhere near the potential recovery amount.

Response Quality

Generic templates

Copy-paste responses platforms have seen thousands of times. Low win rates.

Profit Impact

3-5% margin loss

Fraudulent refunds eating directly into already-thin restaurant margins.

After DisputeDine

Transformed

Time Investment

0 hours

Fully automated. Set it and forget it. No human intervention needed.

Filing Rate

100% of disputes filed

Every winnable dispute gets filed, every time. Complete coverage.

Revenue Recovery

$2,000-5,000/month

Per location. For 12 locations, that's $30,000+ monthly recovered.

Response Quality

AI-generated, evidence-based

Each response customized with order details and claim-specific rebuttals.

Profit Impact

~5% margin improvement

Recovered revenue straight to bottom line. ROI exceeds 500%.

Built in 8 weeks — from concept to production, generating real revenue.

Project Roadmap

Our Approach

We structured the 8-week engagement in four overlapping phases, designed to deliver a production-ready automation platform while managing the technical complexity of building undetectable browser automation from scratch.

Execution Timeline (8 Weeks)
Discovery
Platform
Automation
Launch
Discovery & Design Weeks 1–2

We started with deep platform research. Our team logged into DoorDash, GrubHub, and Uber Eats merchant portals manually, documenting every step of the dispute process. Screenshots, click paths, form fields, error states—we mapped it all.

Simultaneously, we worked with our client on user experience, producing wireframes and UI mockups. This allowed us to design the complete user journey before writing a single line of production code.

Core Infrastructure Weeks 3–4

Backend API development. Database schema design. User authentication and Stripe integration for payments. We built the SaaS foundation that would power the entire platform.

Parallel track: initial automation proof-of-concept. Could we successfully log into each platform, navigate to the disputes section, and read the data? We hit our first 2FA wall here and started designing the solution.

"The biggest technical risk was platform detection. We invested heavily in making our automation indistinguishable from human behavior—randomized delays, natural mouse movements, session persistence. If we got this wrong, accounts would get flagged."
Automation Build-Out Weeks 5–6

This is where the real complexity lived. We implemented complete automation flows for all three platforms, 2FA handling system, job scheduling and queue management, error handling and recovery logic.

Heavy testing with dummy accounts to stress-test reliability and detection evasion. Every script had to behave like a human—randomized timing, natural mouse movement patterns, session persistence to reduce fresh logins.

Polish & Deploy Weeks 7–8

UI refinements based on early user feedback. Analytics dashboard implementation. Documentation for the internal team. Deployed to production.

Onboarded the first dozen restaurant locations. Monitored intensively for the first few weeks, fixing edge cases as they appeared. By week 8, the platform was recovering real revenue across 12+ locations.

Retrospective

What We Learned

Building browser automation that evades platform detection while handling real money taught us lessons that no documentation could provide. These insights now inform every automation system we build.

I.

Build for Adaptation

Platform detection evolves constantly. What works today may trigger alerts tomorrow. We built monitoring to detect when automation patterns start failing and infrastructure to quickly adapt timing, behavior, and fingerprints.

II.

Constraints Breed Innovation

Two-factor authentication seemed like a blocker until we architected around it. Email forwarding, code parsing, tight timing coordination—the solution required careful orchestration but became one of our key differentiators.

III.

Think Like the Platform

Fresh logins trigger scrutiny. Persistent sessions look human. We invested heavily in cookie management, session storage, and authentication state preservation. The Chrome extension became essential infrastructure.

IV.

Optimize for Longevity

We could file disputes faster, but speed creates patterns. Randomized delays, human-like variance, and conservative timing made the system slower but virtually undetectable. Reliability generates trust; speed generates flags.

The hardest part wasn't building the automation. It was making it invisible—indistinguishable from a human filing disputes manually.

DisputeDine turned a 10-hour weekly grind into a zero-touch revenue recovery system. For a 12-location restaurant portfolio, that's $30,000+ per month in recovered revenue that would have otherwise been written off as the cost of doing business on delivery platforms.

What we built wasn't just browser automation. It was a production system that handles 2FA interception, evades platform detection, generates evidence-based responses, and scales across hundreds of accounts—all while remaining completely invisible to Uber Eats, DoorDash, and Grubhub.

How We Operate
01 // Integration
We embed with your technical team. The work you just read represents how we operate—we build production systems that integrate with legacy architecture, and transfer the knowledge so you own what we build.
02 // Acceleration
We don't start from zero. The tooling we've developed through our engagements—test benches, data pipelines, personalization engines—now accelerates every retail AI project we take on. We start from battle-tested systems that have already processed thousands of production interactions.
03 // Experience
We know what works. We've been building AI systems over the last decade. We shipped architectures before they became mainstream. We deployed features before ChatGPT had it. We know the pitfalls because we've made the mistakes.
When to talk to us

You're facing a version of what this client faced—valuable data locked in fragmented systems, the need to compete with AI-native experiences, or the gap between your technical vision and the specialized talent required to execute it.

You need a strategic partner who understands both the technology and the business model—not a dev shop that builds what you specify.

When we're not a fit

You want a chatbot for your dashboard, AI for the press release, or features that OpenAI will commoditize in six months.

We'll tell you that directly.

Next Step

Let's See If There's a Fit

30 minutes. No deck. We'll talk through your challenge, share some relevant work, and see if it makes sense to work together. Or honestly, just grab coffee and chat—no agenda needed.

Book an Intro Call →

Prefer email? hello@ionio.ai