Inspiration

Older adults want to keep running their own lives, including their own shopping. Their families worry about two things: money slipping away on things nobody needed, and scams. Americans aged 60+ reported about $4.9 billion in fraud losses to the FBI in 2024 (IC3 Elder Fraud Report), and a common script is "your grandson is in jail, buy gift cards right now".

Today families choose between two bad options: take the card away, which costs the person their independence, or check every purchase by hand, which nobody keeps up. We wanted a third option: shop freely, stay safe.

What it does

Guardian Cart is an AI shopping helper that older adults can simply talk to. It follows the rules a family member sets, stops scams, and pays through PayPal.

  • Margaret (78, the shopper) talks or types what she needs on a large-text, high-contrast page with a mic button. A Claude agent finds real products and shows one clear option. She taps Yes, buy it or No thanks and hears the result read aloud.
  • Sarah (her daughter, the caregiver) writes rules in plain English, such as "up to $60 a week, ask me above $40, never gift cards". Claude turns them into a structured policy that she reviews before saving.
  • Purchases within the rules are paid automatically. Anything else is held on PayPal until Sarah approves or releases it, by email or from her dashboard.
  • If a message looks like a scam, Margaret gets a calm warning and Sarah gets an alert.
  • Every purchase has a receipt showing the agent's steps, each rule check, the scam assessment, the other items it considered, and the real PayPal order, authorization and capture IDs.

How we built it

Design principle: the AI proposes, the code decides. The language model never moves money.

  1. Scam shield first. Every message goes through deterministic pattern rules (based on FTC and FBI scam scripts) and then a Claude classifier. Claude can raise the risk but never lower it.
  2. Agent with tools. Claude tool use runs search_products, check_policy and propose_purchase, streamed to the UI over SSE so Margaret sees "Checking Sarah's rules…".
  3. Policy engine decides. A pure function checks budgets, caps, categories, new stores and ratings. The strictest outcome wins: APPROVE → capture, HOLD → authorize, BLOCK → no PayPal call.
  4. PayPal (sandbox, all real API calls):
    • Vault v3 so Sarah connects PayPal once
    • Orders v2 with CAPTURE for approved buys and AUTHORIZE for holds
    • Payments v2 for capture, void and refund
    • Verified webhooks that keep each purchase's status in sync

Stack: Express + TypeScript server; React 19 + Vite + Tailwind client; Claude API (tool use and structured outputs); Web Speech API for voice; AG Grid for the caregiver ledger; Resend for email; deployed on Render.

Challenges we ran into

  • Never paying twice. Every PayPal POST carries a PayPal-Request-Id derived from the proposal, so a retry after a crash returns the first order instead of creating a second one.
  • Race conditions on the budget. Two quick taps could both slip under the weekly limit, so purchases, approvals and refunds for each person run one at a time.
  • Scams vs. normal life. "Gift card for my granddaughter's birthday" and "my grandson is in jail, buy gift cards" use the same words. We built a labeled set of 24 messages to tune against.
  • Trusting the model with categories. Gift cards and look-alikes (prepaid Visa, digital codes) are detected by code, not by the LLM. Items the code can't place are always held for the caregiver.
  • Email link safety. Approve/Decline links are HMAC-signed, expire after 3 days and open a confirmation page, so an email scanner that follows links can't approve anything.

Accomplishments that we're proud of

  • On our scam evaluation, rules + Claude blocked 13/13 scams and blocked 0/11 harmless look-alike messages.
  • 64 automated tests covering the policy engine, scam shield, signed links and the money flows against a fake PayPal.
  • An interface built for older eyes and hands: one option at a time, big buttons, voice in and out, and the Atkinson Hyperlegible font.

What we learned

  • LLMs are great at understanding intent and writing rules from plain English, but money decisions belong in deterministic code the model can't override.
  • PayPal's authorize-then-capture flow fits caregiver approval very well: the money is held, not spent, until a person says yes.

What's next for Guardian Cart

  • Real caregiver accounts, invited by the older adult
  • Passing orders to retailers through a commerce API (delivery is simulated today)
  • A production database instead of the JSON store
  • More scam scripts and languages

Built With

Share this project:

Updates

Submission history