Inspiration

PayPal users face held funds, layered fees that can reach roughly 10% on a $50 cross-border purchase, disputes lost despite having proof, risky sellers they cannot vet, and subscriptions that keep charging unnoticed. These are the top complaints in PayPal user reviews (BBB / Trustpilot, 2026), and no shopping tool shows the buyer the full picture before they pay.

What it does

ShopPal v2 is an AI shopping agent that acts for the buyer, not the seller. Type what you want in plain language ("headphones under $60") and it:

  • Pay Agent (agentic commerce): give it a goal ("buy the safest headphones under $60") and it runs the whole purchase by itself: search, risk score, honest total, hold risk, guardrails check, then creates the PayPal order. It shows every step it took, and it never pays without you: above your auto-approve limit it stops and asks for approval in the chat first, and the payment itself is always approved by you on PayPal. It also reasons about your budget: if the safest option's total (fees included) is over your budget, it says so and offers choices instead of buying anyway. The agent loop is server-driven (the model picks the next action as strict JSON, the server executes the tool); if the AI is slow or down, a rule-based fallback runs the same tools and the same guardrails, so the pay flow never depends on the model being up.
  • Finds matching products, ranked safest first, with a Seller Risk Score (0–100) built from profile age, dispute history, price fairness, and tracking/returns.
  • Shows the honest total before checkout: item price plus PayPal Checkout fee (3.49% + $0.49), international fee (1.5%), and currency conversion spread (~3.5%).
  • Predicts hold risk (Low / Moderate / High) from public hold patterns, so buyers know whether their money may be frozen.
  • Shows the cost of things going wrong: chargeback $20, dispute $15 ($30 high-volume), refund keeps the original fee, instant transfer 1.5%, and the cheaper Micropayments rate for items under $12, plus whether the purchase is covered by PayPal Buyer Protection.
  • Checks out through PayPal Sandbox (Orders API v2, verified capture), then auto-saves proof to a Proof Vault and drafts a factual dispute response from that proof.
  • Watches subscriptions: a product bought twice or more is flagged with the total spent.
  • After purchase, the Proof Vault lets you check the live order status (Orders + Payments API re-verification) and refund a capture in one tap (Payments API v2, full or partial), the vault entry is updated with the refund record.
  • Dispute Win Simulator: before you buy, it tells you the chance of winning a PayPal dispute if this purchase goes wrong (rule-based, with the missing proof listed so you can collect it first). After purchase, it simulates from the saved proof in the vault.
  • One-click Evidence Pack: downloads a printable proof page (order, verified capture, risk score, timeline) ready to attach to a PayPal dispute.
  • Paste any product link and ShopPal checks it from the page's public metadata, verdict, price vs the demo median, and the honest total.
  • Deadline Tracker: the 180-day dispute-filing deadline, the 20-day escalation deadline, and the seller's 30-day return window, counted down from every purchase in the vault.
  • Import Cost: the honest total doesn't stop at PayPal's fees, pick a destination country and ShopPal adds duty + VAT/GST (Indonesia: 7.5% duty + 11% VAT, verified against PMK 96/2023; US: $0 under the $800 de minimis; EU: 19% VAT; UK: 20% VAT; Singapore: 9% GST). The same $60 headphones cost $71.60 in Indonesia and $60 in the US, the buyer sees that before paying.
  • PayPal Phishing Check: paste any message claiming to be from PayPal and get a verdict (0–100), lookalike-domain detection (paypa1, pay-pal), urgency pressure, requests for passwords or OTP codes, and link/text mismatch, plus an AI review. Phishing is one of the top PayPal fraud complaints, and no shopping tool checks it.
  • Compare 2 Products: one-line verdict (which is safer, which is cheaper) plus two stacked product cards, risk, honest total, hold risk, seller, and tracking/returns. No horizontal scrolling on phones; the safer card is highlighted green.
  • Best Deal (Deal Verdict): ask "best deal headphones under $60" and ShopPal picks the single best offer across its own catalog and real eBay listings: the cheapest Safe seller (score 80+) by all-in total, or the highest safety score when nothing is Safe, with two runners-up and the reason in one line.
  • Compare Sources: ask "compare headphones" and ShopPal shows the best offer per source (own catalog and eBay) side by side with a Best overall marker, so the buyer sees which source actually wins on safety and total cost.
  • Wishlist + Deal Reminders: save any product or eBay listing to a wishlist; when a watched eBay price drops below the price you saved, the wishlist shows a DEAL badge.
  • Real eBay Price Watch: watch a live eBay listing at a target price; ShopPal re-checks the real listing price through the eBay Browse API and reports a drop or a gone listing. (The original catalog Price Watch runs on a labelled simulated feed and is still available.)
  • Monthly Budget: set a budget and the Proof Vault shows this month's spend against it; the checkout warns before a purchase would push you over.
  • Hold Release Checklist: the steps that release a PayPal hold early, add a tracking number (3 days after delivery), mark the order as Shipped (7 days), ask the buyer to confirm receipt (1 day), or wait 21 days. Steps are pre-ticked from the seller's own data; the rest are interactive checkboxes that recompute the estimated release live.
  • Smart Guardrails (human-in-the-loop): the agent auto-pays only under your limit (default $20). Above the limit, it stops after the buyer approves in PayPal and asks you in the chat first, Approve or Reject, so a hallucination can never buy something expensive. The limit is set in Settings; a monthly budget is set there too.
  • Delivery Watch (PayPal Tracking API): the agent adds a real tracking number to every capture through the Tracking API, reads its status, and watches for stalls. If a parcel has no delivery update for 7 days, it prepares a dispute draft automatically, before the 180-day filing window shrinks.
  • FX Optimizer: live mid-market exchange rates plus PayPal's ~3.5% conversion markup, shown before you pay. The same $65.57 headphones cost Rp1,228,213 through PayPal (mid-market Rp1,186,679), so the buyer sees the true cost in their own currency and that paying in USD is cheaper.
  • Spending Dashboard: every real sandbox capture in the Proof Vault, broken down by category with a bar chart and this month's total, so the buyer sees where the agent's money went.
  • Price Watch (price sniper, wired into the Pay Agent): tell the agent a target price in plain language ("watch headphones, target $25") and it creates the watch; "check my price watches" lists every watch, checks the price, and when one hits its target the agent prepares the buy through the same guardrails and approval gate as any purchase. The demo catalog has fixed prices, so the catalog watch runs on a labelled simulated price feed (a random walk, biased down, so a target is reachable in a demo); a triggered watch opens the normal checkout. The simulation is labelled in the UI, never presented as a live market price. For real eBay listings there is a separate Real eBay Price Watch that re-checks the live listing price through the eBay Browse API. On the live Worker, watches live in per-isolate memory (the same limit as the Proof Vault there), so a watch created in one request may not be visible in the next; the local server keeps them in one process.
  • Split Bill + Split Payment Link: buy a gift together and split it. The agent works out each share (total divided by everyone, including you) and writes the message to send. Because the Invoicing and Payouts APIs are not enabled for this sandbox app, each friend's share is collected with a real PayPal Sandbox order instead: the server creates a separate Orders API v2 order per friend (e.g. a $59.99 item split 3 ways gives each friend a $20 order) with its own payment link, so each friend pays their share on PayPal. The demo says so instead of faking a PayPal call.
  • SEO + GEO + accessibility: meta tags, Open Graph, JSON-LD structured data, sitemap + robots, llms.txt / llms-full.txt for AI search, and a screen-reader-friendly chat (live region, labelled input, keyboard focus ring, reduced-motion support).

Try the checkout (Sandbox, no real money)

Open the live demo, pick the Aurora Wireless Headphones ($59.99), read the Risk Score and the honest total ($65.57), then pay with the gold PayPal button. Approve with a free PayPal Sandbox Personal account (create one at https://developer.paypal.com/dashboard/accounts), or use the demo buyer [email protected] / Sz=z1yg3 (login verified working 10 Nov 2026). After capture, check the Proof Vault entry, then press Simulate Dispute (readiness 100/100).

How we built it

Node.js + Express server, vanilla JS frontend, PayPal Sandbox (OAuth, Orders API v2, Payments API v2 verification, Tracking API for delivery watch), real marketplace search through the official eBay Browse API (sandbox keys live; Etsy was dropped after its developer app was banned), and a three-provider AI fallback chain for explanations and the Pay Agent loop (Gemini first, then Groq, then Vyce/DeepSeek, then a local rule-based fallback). Scores are transparent rules, the model only rewrites the reasons in plain language and never changes a number. The Pay Agent is a server-driven loop: the model picks the next action as strict JSON (search, score, total, hold, guardrails, create order, vault, dispute, price_watch, check_price_watch, list_price_watches, split_payment_link), the server executes it and feeds the result back, with the guardrail gate enforced server-side (the model cannot pay past the limit). The same tools are also exposed as a real MCP server (mcp-server.js, stdio, @modelcontextprotocol/sdk): paypal-sandbox-mcp (get_access_token, create_paypal_order, capture_order, split_payment_link, track_and_dispute) and mock-store-guardrail-mcp (search_mock_products, check_budget_guardrail, simulate_price_change); the MCP server is a thin wrapper that forwards every call to the running ShopPal server, so the web app's E2E flow is untouched. Two demos: a static build on GitHub Pages using the official PayPal JS SDK (Sandbox), and the full server version deployed as a Cloudflare Worker (live-server demo), same repo, same API.

Challenges we ran into

  • Vercel and Render logins both stalled, so we pivoted to a static GitHub Pages demo in one evening, and proved it end to end (order → capture COMPLETED → Proof Vault → dispute readiness 100/100).
  • The server later deployed as a Cloudflare Worker (the Express logic adapted to a fetch handler, secrets as Worker secrets), the full API is live, including real Sandbox checkout, and the live-server demo calls it from GitHub Pages.
  • A white-on-white CSS bug made product cards invisible on phones; found by testing on a real phone, fixed, and cache-busted.
  • Keeping the AI honest: the demo catalog is 20 products plus real eBay sandbox listings (not production listings, and the UI says so); every estimate and every simulation is labelled as one, and the sandbox checkout never moves real money.
  • The model (DeepSeek via Vyce) does not support native function calling: it ignores tool definitions and returns empty content when forced. So the Pay Agent loop is server-driven (strict-JSON actions), with a rule-based fallback that runs the same tools when the model is slow or down.

Accomplishments that we're proud of

  • A complete agentic loop that actually works: ask → score → honest total → PayPal checkout → proof → dispute draft.
  • Pay Agent: a goal in plain language becomes a PayPal order by itself, with every step shown and human approval enforced server-side.
  • Hold Predictor and trouble-costs: the two things PayPal users complain about most, shown before payment instead of after.
  • Every number in the demo is verified live, not mocked.

What we learned

  • The most valuable AI in commerce is not a chatbot, it is a buyer-side agent that shows the truth before money moves.
  • Judges test on phones. If it doesn't render on a real phone, it doesn't exist.

What's next

  • Production eBay keys for real listings, real-time hold signals, and a browser extension that scores any seller while you shop. (Etsy was dropped: its developer app was banned, so eBay is the only marketplace source.)

Built With

Share this project:

Updates

Submission history