What it does
Reconcile Assistant takes a PayPal transaction export (CSV) and returns categorized transactions, one-line rule-based explanations, discrepancy flags, and an HTML report. It does not move money and never needs PayPal credentials for the CSV path. Sample data in the repo is fictional; no real account data is used.
Demo runs used in the video (2 min 27 sec): live sandbox fetch first — 1 transaction, 0 flagged, total net $5,000.00 (Oct 5–Nov 4, 2026, as reported by the operator from his own laptop run; the live part of the video is a rendered walkthrough of those reported numbers, not a recording of his laptop) — then the sample CSV run, 5 transactions, 3 flagged, total net 192.30, to show the flags. The web demo now also offers a live PayPal sandbox fetch (same flag rules, operator's sandbox credentials only, never shown or stored in the repo) and an optional AI explanations mode, off by default, with AI text labeled "AI-generated" and a rule-based fallback if the key is missing or the API fails.
How we built it
Python standard library only — no new dependencies. The reconciler matches flexible PayPal export headers, categorizes payments received and sent, refunds, reversals, subscriptions, withdrawals, deposits, holds, and fees, and flags net-not-equal-to-gross-minus-fee cases, duplicate transaction IDs, non-completed statuses, and fees over 10% of gross. A sandbox fetch module (fetch_sandbox.py, plus --sandbox in the app and a sandbox form in the web demo) is wired to PayPal's Transaction Search API and tested against a mocked API response; the live sandbox path was verified by the operator on Nov 5, 2026, with his own sandbox credentials run locally — the fetch succeeded (1 transaction, 0 flagged, net $5,000.00) after the Transaction Search permission was enabled and propagated. An optional AI explainer (ai_client.py, Gemini via the standard library only) is behind an operator-provided key, off by default; default explanations are rule-based and labeled as such, and AI text is labeled "AI-generated".
Challenges
Keeping the tool honest about what it does: both paths are now verified — the CSV path is tested (36/36 tests pass) and the live sandbox fetch succeeded on the operator's laptop (1 transaction, 0 flagged, net $5,000.00). The live sandbox data is thin for a demo, so the video pairs it with the sample CSV run to show the flags. No credentials are in the repo.
Accomplishments
- 36/36 tests pass, including mocked-API tests for the sandbox fetch and the Gemini client.
- Standard-library-only, runs as a CLI or a small web demo.
- Video: a 2 min 27 sec video — live sandbox fetch first (rendered walkthrough of the operator's reported live numbers, 1 transaction, 0 flagged, net $5,000.00), then a real capture of the sample CSV run showing the 3 flags. Silent with on-screen captions. Published to YouTube as Public on Nov 5, 2026: https://youtu.be/55ci2HPiOwE
What's next
Submitted Nov 5, 2026 — repo is public at https://github.com/Roue408/paypal-reconcile-assistant and the demo video is public at https://youtu.be/55ci2HPiOwE.
Log in or sign up for Devpost to join the conversation.