Inspiration

Every online seller dreads PayPal disputes. The evidence is scattered across orders, shipping records and buyer messages, the deadline is short, and generic AI tools can make things worse by inventing tracking numbers or dates. One made-up detail can damage a merchant's case. We wanted an assistant that helps with disputes without ever making things up.

What it does

ResolveAI helps a merchant answer a PayPal dispute, with a human in control at every step.

  • Imports the dispute straight from PayPal's Disputes API, including the buyer's message.
  • Takes the merchant's own records (carrier, tracking number, ship date), because PayPal doesn't share those.
  • Investigates the case and shows a timeline, what the merchant can prove, what's missing, and any conflicts in the records.
  • Gives an explainable risk level with reasons. It is ResolveAI's own assessment, not a PayPal decision, and it never shows a win percentage.
  • Drafts a response and fact-checks it. Every date, amount and reference number must exist in the merchant's records, and anything invented, even typed by a person, is flagged live.
  • Requires human approval. Nothing is ever sent to PayPal automatically. The merchant copies the approved response into the dispute.
  • Keeps a permanent history of who did what on every dispute.

How we built it

  • Backend: Python and FastAPI, with SQLite for storage.
  • AI: Google Gemini analyses the case, with a built-in rules fallback. A separate evidence validator checks every date, amount and ID in a draft against the records.
  • PayPal: OAuth, listing disputes and fetching dispute details from the PayPal Sandbox Disputes API.
  • Frontend: HTML, CSS and JavaScript, with AG Grid powering the searchable, sortable and filterable disputes table.
  • Tooling: LangChain, Pydantic, a Postman collection for the API, and an automated test suite.
  • Hosting: Render.

Challenges we ran into

  • PayPal shares the dispute and its messages, but not the merchant's shipping records, so the app had to treat missing records as gaps to fill, not as proof against the buyer.
  • Keeping the AI honest. The response has to use only facts from the records, so we built a checker that verifies dates, amounts and reference numbers instead of trusting the model.
  • Real data is messy. The app surfaces conflicts in the records, such as a buyer message that appears to come before the order was logged, instead of hiding them.
  • Free hosting sleeps and resets data on restart, so the demo needed careful setup.

Accomplishments that we're proud of

  • A fact checker that catches invented details live, while the merchant is typing.
  • A risk assessment that explains its reasons and never predicts a win percentage.
  • An evaluation suite (python -m evals.run_eval) covering 8 scenarios and 6 fabricated drafts. In our latest run with the rules engine, all 44 of 44 pipeline checks passed and the fact checker caught 6 of 6 fabricated or risky drafts.
  • A real end-to-end flow: from a buyer's report in PayPal's sandbox to an approved response.

What we learned

  • Responsible AI is mostly about design: grounding, honest uncertainty and human approval matter more than a clever prompt.
  • A dispute tool should say "not on file" instead of guessing.
  • Keeping approval separate from sending gives the merchant control without slowing them down.
  • Honest limits build trust. The checker verifies dates, amounts, IDs and risky wording, not every sentence, so merchants still review each draft.

What's next for ResolveAI: PayPal Dispute Copilot

  • Support more dispute types beyond item not received and not as described.
  • Pull shipping records directly from carriers and e-commerce platforms, so merchants don't type them in.
  • Evaluate with Gemini on a larger set of real-world scenarios.
  • Add deadline reminders and notifications when a dispute needs attention.
  • Keep the same rule: ResolveAI drafts, the merchant decides.

Built With

Share this project:

Updates

Submission history