Inspiration
When a buyer opens a PayPal dispute, a small seller has money held, a deadline running, and rules that are easy to get wrong. A seller can hold proof of delivery and still lose: US Seller Protection excludes Item Not Received claims filed with the card issuer, and Significantly Not as Described claims entirely.
AI could write those replies in seconds. But a confident AI that invents one delivery date can damage the seller's case. So we asked: what if every sentence had to be proven before it could leave the building?
What it does
DisputeDesk is an AI team for small PayPal sellers. Buyers don't use it, and PayPal makes the final decision on every dispute.
- Defend: AI gathers evidence and drafts claims. Every claim must cite evidence. Code checks each date, amount, ID and quote against that evidence, an AI judge reads what survives, and code assembles the reply from verified claims.
- Close the proof gap: When proof is missing, the case says exactly what's missing. Add a carrier record, and code checks the file type, the dates and whether the address matches the PayPal transaction. The recommendation then updates by itself. A record with the wrong address doesn't count.
- Settle: Code calculates offers in whole cents, capped by the seller's rules, and shows what each choice costs. Buyers who dispute most of their orders never get a settlement suggestion.
- Prevent: When PayPal reports a completed payment, code adds the shop's tracking number to the order.
- Pre-flight: Code checks the case against PayPal's published Seller Protection terms.
- Never miss a deadline: A Bryntum board flags any case with no time planned. The app re-checks PayPal every few minutes and moves work if a deadline moves.
- Insights: An AG Studio dashboard shows what the AI proved and what it refused to say, with a tile tracking PayPal's 1.5% dispute-ratio line. A dashboard agent answers questions and builds charts, using data with no buyer messages in it.
- Calls (optional): Gnani transcribes a call recording and the seller confirms it. A call can only be quoted as what someone said. It never replaces carrier proof.
The seller approves every PayPal reply. The AI has no tool that can write to PayPal.
Don't trust us: try to break it
The Proof page lets you type a lie or a manipulative buyer message and watch what the code does.
We ran 34 attack messages and 22 innocent ones through the full pipeline with the real model. No attack changed the decision or put a concession in the reply. All 34 were flagged, with 1 false alarm.
We also publish what failed. Our word filter caught 22 of the 22 attacks we tuned it on, then 0 of 12 new ones. That's why it's only a warning. The real defence is that the AI can't act. These are our own test messages on one test case, so this is evidence, not a guarantee.
How we built it
Python and Starlette, with server-rendered pages and SQLite. PayPal's Disputes, Orders, Payments and Webhooks APIs on the sandbox. NVIDIA Nemotron 3 Super through Nebius, behind an OpenAI-compatible interface. Bryntum Scheduler and AG Studio (trial builds, with watermarks) from public CDNs. Hosted on Render. A hash-chained audit log records every action.
Challenges
- PayPal's sandbox only opens a reply path after a dispute escalates. We documented the sequence that works in the README.
- PayPal listed
PROOF_OF_FULFILLMENTas requested, then refused it. One approval now tries the next evidence type that's true for the order. - An evaluation re-run flagged the word "refund" in one injection case's reply. The decision was still right, but we found two gaps: the AI's opening and closing skipped the verifier, and a claim could cite a flagged message. Code now writes those sentences and strikes those claims.
- PayPal can drop a buyer's message after escalation, which would have hidden injection text from our scan. We now also read the buyer's words from PayPal's
evidenceslist.
Accomplishments
- A real PayPal sandbox dispute accepted evidence filed from the app, after a human click.
- Publishing a 0 out of 12 next to a 34 out of 34.
What we learned
Don't ask whether the AI will behave. Design the system so it doesn't matter if it doesn't.
Honest limits
- A carrier record added by the seller is seller-supplied. The app can't confirm it with the carrier, the AI doesn't read the file, and the reply says who supplied it.
- Shop orders, chats and carrier records are simulated in this build.
- Adding tracking has run on the real sandbox. The automatic trigger has only been tested offline.
- Our recommendation score mostly tests our own rules, on test cases we wrote.
- We have no measured win rate or time saved, so we claim neither.
What's next
Carrier tracking integrations, a clear label separating carrier-confirmed from seller-supplied proof, real shop integrations, and a measured time study.
AI tools used
- NVIDIA Nemotron 3 Super (via Nebius): writes summaries and drafts, calls a read-only tool, judges claims, flags manipulation. It never decides money and can't write to PayPal.
- GLM-5.3 (via Nebius): powers the Insights dashboard agent through the AG Studio Agent Framework. It has no PayPal access.
- Gnani Vachana: speech-to-text for call recordings in the app, and text-to-speech for the demo video's voices.
- Claude Code (Anthropic): helped write code, tests and docs, research the problem, and build the demo video.
Log in or sign up for Devpost to join the conversation.