Milestone update — work in progress. Full write-up and demo video coming with the final submission.

Inspiration

Everyone's shipping agents that can browse and click, but nobody actually hands one a credit card, because there's no safe way to. Real spending needs scoped power (limits the agent can't exceed), honesty (the willingness to say don't buy this), and a human in the loop. Alfred is the agent we'd trust with our own money.

What it does

Alfred is a personal shopping agent across your browser, iMessage, and a web dashboard, sharing one activity feed.

  • Snap & Find — snap a frame on any webpage (or send a photo) and Alfred identifies the exact product and finds the best prices.
  • Worth-It Check — a plain-language Buy / Wait / Skip verdict backed by your own spending history.
  • Agent Mandates — scoped virtual cards (cap, categories, expiry, confirm-above threshold). Money only moves inside those rules, enforced atomically in code.
  • Watcher — watches wishlist items for price drops and asks before buying.
  • Always asks first — purchases over your threshold need your approval.

Progress so far

  • Agent service (Hono + Claude Tool Runner orchestrator) with streaming chat
  • Worth-It verdicts and the Watcher, running on a seeded spending profile in MongoDB Atlas
  • Purchase guardrail: a single atomic authorize() against mandates that a prompt can't bypass
  • Snap & Find end to end: Chrome extension side panel → Perceptron vision (Claude fallback) → verdict
  • Web dashboard shell with Home, approvals, and a demo control panel
  • Voyage embeddings + Atlas Search / Vector Search indexes

Up next

iMessage via Photon, Smart Pay and the Rewards Optimizer, the T-Mobile Timekeeper, and polishing the demo.

How we built it

pnpm + Turborepo monorepo in TypeScript. Claude Opus for reasoning and verdicts, Haiku for bulk classification, with structured outputs for every verdict. Next.js + Tailwind dashboard, WXT (MV3) extension, MongoDB Atlas change streams fanning out over SSE. Every external integration sits behind a mock so the four of us could build in parallel.

Built With

Share this project:

Updates

Submission history