Inspiration

When a small SaaS team has an outage, the response to each customer is often improvised. A support agent must read incident details, judge the impact, decide what is fair, and carry out a refund. That process can be slow and inconsistent, and customers rarely see the reasoning.

What it does

RemedyDesk presents a service incident and a customer request together. A local AI model labels the impact as minor, major, or critical and must provide an exact quote from the incident report. The model cannot choose the money amount. A deterministic policy applies a 5%, 15%, or 25% rate to the original payment. A person reviews the recommendation before the application sends a partial refund.

The demo uses synthetic customer accounts and PayPal Sandbox only. We verified a $49.00 test payment and a $12.25 partial refund; PayPal's refund API returned COMPLETED for the refund. A second refund for the same case is blocked.

How we built it

  • A dependency-free Node.js server and responsive browser dashboard.
  • Ollama with qwen2.5:7b-instruct for incident impact analysis and explanation.
  • Exact-substring validation so a model cannot cite incident evidence that is absent from the report.
  • A server-side refund policy using integer cents and explicit human approval.
  • PayPal Sandbox OAuth, Orders v2 for test checkout and capture, and Payments v2 for partial refunds.
  • PayPal capture verification and idempotency keys to reduce duplicate payment and refund actions.

Challenges

The core challenge was separating AI judgment from money movement. The model can describe impact but cannot set the refund value or call PayPal. We also had to treat the original payment as the source of truth: the server verifies its capture, currency, and amount with PayPal before refunding.

What we learned

An AI recommendation is more useful when it points to verifiable evidence and leaves a clear approval step for the operator. PayPal Sandbox let us test the entire payment and refund lifecycle with virtual funds before presenting it as a working demo.

What's next

Replace synthetic incidents with authenticated incident imports, add an editable policy with approval history, and use verified PayPal webhooks for production reconciliation. The current build is intentionally local and Sandbox only.

Built With

Share this project:

Updates

Submission history