Gil EskayoAI Engineer · Security · Research

Hackathon Winner: Agentic AI Marketplace

First place at AI Tinkerers SF: an agent that buys underpriced listings and explains every call.

TypeScriptLiquidMetal RaindropHonoSmartBucketsVitest
GitHub ↗
The story

On October 1, 2025, AI Tinkerers San Francisco ran a mini-hack with LiquidMetal and Vercel called Agents That Buy & Sell. I entered solo and took first place.

My agent is a flipper. It scans listings from three marketplaces, prices each one against what that item usually sells for, buys the underpriced ones within its budget and books the expected profit. Every buy and every skip comes with a written reason, so you can watch it think.

01

Why I built it

The theme asked for agents that trade, and flipping is the cleanest version of that: buy low, sell higher, and every decision has a dollar value anyone can check. An agent that spends money has to earn trust fast, so I made mine show its work. Each listing gets a score, a decision and the rule behind it, right there in the log.

02

What it does

Here is one real scan, run from the repo's own code: 15 listings across eBay, Craigslist and Facebook Marketplace. The agent bought nine for $2,370 of its $5,000 budget and skipped six, and it says why for each one. The listings are simulated, as they were on demo day. Generating them let me show the whole loop live without API keys or anti-bot walls.

A table of 15 listings from one scan: nine marked BUY with their profit and margin, six marked SKIP because the margin was below 20 percent.
One scan from the repo's code, run October 6, 2026 on its simulated listings. Nothing is edited.
03

How it works

The agent is one TypeScript application on LiquidMetal's Raindrop platform: three services and three stateful actors. A public Hono API router takes a scan request, asks the scraper service for listings, the valuation service for scores and the decision actor for a verdict. The decision actor hands each purchase to a transaction actor, which books purchases, resales and profit, and an inventory actor, which tracks what the agent owns. Four SmartBuckets hold the listings, price history, transactions and inventory.

Valuation is four weighted scores, each 0 to 100: where the price sits in the item's historical range (40%), how far below retail it is (25%), scarcity words in the title such as "limited" or "discontinued" (20%), and the price against the item's average sale (15%). The decision actor then buys only if the margin is at least 20%, the profit is at least $50, the price fits the remaining budget and it has never bought that listing before.

A scan request goes to the API router, which calls the scraper service, the valuation service and the decision actor; the decision actor calls the transaction and inventory actors; each writes to its own SmartBucket.
The whole agent is one Raindrop application: three services, three actors, four SmartBuckets.
04

The hard calls

Simulate the market, keep everything else real. Scraping live marketplaces means API keys, login walls and anti-bot defenses, and that fight would have eaten the hackathon. So the scraper generates realistic listings and everything downstream of it is real code with real tests. A live feed replaces one service; real sold prices replace one table.

Rules a judge can read. The buy decision is four plain checks. Every buy shows the profit and margin that justified it, and every skip names the check that failed.

State lives in actors. The budget and the list of purchased listings sit in a stateful actor that saves to storage, so a second scan can't buy the same listing twice.

05

Where it stands

It's a hackathon build. Every component has its own tests: 206 in Vitest, and 200 pass today. The 6 failures sit in one integration-test file whose stand-in actor storage is missing a method the actor now calls. The demo-day deployment is gone, but the code runs; the scan above came straight from it.

A real version needs two things: live listings and real sold prices. The price table covers five product families, so everything else gets a default resale of $500. That's how an $80 iPad Pro scored a perfect 100 above. And the API resets the budget to $5,000 on every scan, so the balance doesn't carry between runs yet.

← More AI & Machine Learning   All projects →