Take two photos of a thing — the agent checks it's real, prices it against the live market, lists it on eBay, talks to the buyers, and hands you a shipping label. Your only decision is one tap to approve the price range.

Inspiration

Everyone owns things they'd sell "if it weren't such a hassle" — pricing, writing the listing, then an inbox of lowballers and scammers. That middle is exactly what agents are for. And 2026 added a twist: AI-generated fake listings flooded marketplaces, so an agent that lists things FOR you must also prove the thing is real before it lifts a finger.

What it does

  • Verify 2.0 — the anti-fake gate. Qwen3.7-VL examines 2–4 frames from a live capture: same physical object across viewpoints? A real scene — not a screen, a print, or an AI render? A confident fake is refused outright, with the reasoning shown.
  • Acts on its own uncertainty. In the gray zone it doesn't guess — it asks for one specific extra shot ("tilt it and photograph the underside") and re-examines. The decision policy is a pure function with unit-tested boundaries.
  • Prices with receipts. DashScope forced_search pulls live comps; the agent proposes a range. The human approves it — the one money decision in the flow.
  • Lists for real. One tap creates an actual eBay listing through the Inventory API — OAuth, category from taxonomy, item specifics auto-filled — and the live listing id comes back into the UI.
  • Negotiates inside bounds. Buyers are ranked, scam patterns flagged, replies drafted. Counter-offers are clamped in code — never below your floor, never revealing it. The model suggests; the code enforces.
  • Closes. A payout breakdown (sale minus the real marketplace fee) and a ready shipping label. Your next touch is a box.

The benchmark (measured, not asserted)

A labeled suite ships in the repo — including AI fakes generated with qwen-image, so the examiner is tested against its own model family:

kind cases correct
ai (qwen-image renders) 4 4/4
screen re-shot 1 1/1
catalog re-shot 1 1/1
object mismatch 1 1/1
honest live captures 7 7/7

7/7 fakes caught · 0/7 false blocks on real items · median verdict 5.4s · $0.057 per full run. It didn't start perfect: two AI renders passed at 0.95 confidence until the prompt switched from per-frame realism to cross-frame consistency — the viewpoint may change, the world may not. bun run bench reproduces everything.

How we built it

~1,000 lines of zero-dependency TypeScript (plain fetch, no SDK) as one Node.js web function on Alibaba Function Compute behind a custom domain. All intelligence is Qwen on Model Studio (DashScope intl): qwen3.7-plus VL as the examiner and pricing/triage brain, qwen3.6-flash for angle requests and the live buyer chat, qwen3.7-max for the weekly digest. Platform finding: enable_search: true alone is silently ignored — you need forced_search. Optional immutable evidence locker on OSS; every model call metered into a cost ledger.

Challenges

  • A photo of a screen fooled single-frame verification ("a screen showing a real photo IS a real photo"). Fix: two frames while the camera moves, judged together for parallax and scene continuity.
  • Letting a model negotiate safely: money limits live in TypeScript, not in the prompt — the floor physically can't be crossed or revealed.
  • eBay sandbox quirks (Business Policies opt-in, required item specifics, duplicate detection) — all handled honestly in code.

What's next

Portable "proof of physical reality" badges other marketplaces can consume; ARKit parallax fusion (the production onlist app already captures it); negotiation memory across a buyer's messages.

Built With

  • alibaba-cloud
  • dashscope
  • ebay-api
  • function-compute
  • qwen
  • qwen-cloud
  • typescript
Share this project:

Updates

Submission history