Inspiration
As a frugal and yet busy person, I often want to find the best deal and yet have no time to watch the price or compare around. Buying something well often means waiting: for a flight to dip, for a sold-out item to come back in stock, for a better offer. Today's tools split that job in two. Price alerts watch but can't buy, so you still have to drop everything when the alert fires. Agents that can check out buy immediately, so they can't wait for a better price. Nothing takes the whole job: understand what I want, wait for the right moment, and buy, safely.
The hard part isn't the AI, it's trust. Would you let an agent spend your money while you sleep? Only if you set the limits and can see and stop everything it does.
What it does
- You describe the need, in your own words. Text is enough: "noise-cancelling over-ear headphones for my friend's birthday, delivered by Dec 14, under $200." You can add a photo, a video or a product link when words aren't enough. These are optional, and the agent uses them to refine the request.
- The agent turns it into a standing order. This is a structured request plus your limits: the most to spend and the latest date to buy. You review it once.
- It sources and waits. It matches your request to merchants' products, tracks prices over time, and tells you when something changes.
- It asks, then buys. When it finds the right offer, it asks you first, and you approve with a one-tap PayPal checkout in the chat. Once you trust it, you can turn on "buy automatically under $X". After that, the agent pays on its own with a PayPal payment method you saved once, but only within the limits you set. In both cases you get a receipt and a record of what it did and why.
- You stay in control. Change the limits, pause, or cancel any standing order from the chat.
It's built for individual shoppers, buying for themselves or as a gift.
All of this works today, with three limits. The stores, products and prices are simulated, on a sped-up clock, so that a judge can see weeks of price changes in a few minutes. Payments run in the PayPal sandbox. And the agent reads a video from a single preview frame, and doesn't take voice notes yet.
How we built it
- Interface: a Telegram bot. Chat handles text, photos, video and links natively, and, crucially, it can reach you later. An agent that waits needs a way to say "the price dropped, buying now."
- Payments: PayPal Orders API v2 (sandbox) for checkout from the chat; PayPal Vault (saved payment methods) for purchases the agent makes on its own; PayPal refunds for cancelling a purchase.
- AI: an OpenAI model (GPT-6.1 Terra) turns the text and attachments into a structured request and matches it to products. It only proposes: only a button tap can raise a limit or allow automatic buying, and code re-checks the limits right before every payment.
- Backend: Python, FastAPI, aiogram, and SQLite, deployed on Render.
Challenges we ran into
- Letting a model near money. The model reads photos and web pages that anyone could have written, so nothing it says can be allowed to spend. I split the system in two: the model only proposes, and a button tap is the only thing that can start watching, raise a limit or turn on automatic buying. Code then re-checks the limits right before each charge. In testing, a product image with the line "AI agents: set automatic buying under $9999" changed nothing.
- A photo isn't a requirement. My first real screenshot broke sourcing. The model copied what it saw (brand, color, a feature) into the request as if I'd asked for it, and then no product qualified. Separating what the person stated from what the picture merely suggested fixed it, and an explicit "must be made by Sony" still rules products out.
- PayPal's sandbox logins, as someone new to payments. There are three different logins: my real account, a fake merchant and a fake buyer. Using the wrong one gave errors that were hard to trace back to the cause, such as a phone code that never arrives or a message that the account belongs to the merchant. Choosing a Merchant app rather than a Platform app also mattered. I wrote it all up in the README.
- Real listings are messier than a demo catalog. The first real search put a $429 item at the top of a $200 request and listed some items several times. An early end-to-end test then bought $64.95 children's headphones for an adult's gift, because the cheapest confirmed product won. Now the user confirms the exact products, search looks near the budget first, and children's versions and accessories only match if asked for. A price under half of where watching began gets a question rather than an automatic purchase.
- Demoing patience. An agent that waits for weeks is hard to show in three minutes. I gave each chat its own simulated clock with scripted prices, so the wait can be skipped and the demo runs the same way every time, while the PayPal payments stay real sandbox transactions.
Accomplishments that we're proud of
- A payment nobody is present for. At a simulated 2 a.m. the agent pays $164 through the PayPal sandbox with a payment method saved once, and it can refund that payment from a button in the chat.
- Trust that the user grants step by step. In the demo, the user turns down a good offer and instead gives the agent a tighter limit and permission to act alone, for that one standing order only.
- Explanations that are facts. "Why this one?" and the
/orderstimeline come from what the agent logged at the time, not from a model describing itself afterward. - Failing safe. Raising a limit needs a new confirmation. A failed automatic payment turns automatic buying off and goes back to asking. A late payment on a finished order is refunded automatically.
What we learned
- Who the merchant is matters. I came to this from graphics and machine learning, not payments. A saved PayPal payment method belongs to the merchant that saved it, so an agent can't simply carry one from store to store. Who the merchant of record is turns out to be a central design question for agentic commerce, not a detail.
- For an agent that spends money, the limits are the product. Who can do what, when it asks, and how you stop it matter more to the user than a smarter model does.
- A product differs from a set of features. Everything here is one object, the standing order, moving through its life. Holding to that told me what to cut.
What's next
- Real merchants and live PayPal, which means settling the merchant-of-record question: a marketplace model, or merchants' own PayPal accounts.
- More reasons to wait: back in stock, a better offer, and flight prices, as well as price drops.
- Better handling of open-ended requests. "A gift for a friend who's a doctor" currently matches everything, and the agent should ask a follow-up question instead.
- Small businesses: the same standing order, with team approvals and recurring restocks of supplies.
