work/streetwise/
Streetwise
Four AI agents that find shops nearby, collect quotes, block hidden fees and place the order
Solo (Team SOLOX): agents, messages, maps, payments · 2026

Manual work before
To buy a few things locally, a buyer walks to a shop or calls around to ask what is in stock and what it costs, then does it again at the next shop. Hidden packing fees and closed shutters show up only at the counter.
What it automates
- -Finding open shops nearby
- -Asking each shop for a quote
- -Checking quotes for hidden fees and wrong totals
- -Placing and confirming the order
- -Collecting the agent charge
The workflow
- triggerThe buyer types a shopping list in ASI:One, or scans the QR sticker on a shop.
- step 1The Shopper Agent turns free text or Hinglish into an item list with the ASI1 LLM.
- step 2The Store Locator Agent finds real open shops on OpenStreetMap around the buyer's live location, widening 500 m → 1 km → 2 km until it has 3.
- step 3Each shop's Merchant Agent quotes from that shop's own price list.
- step 4The Trust Agent blocks hidden fees, wrong totals and closed shops, then builds up to 3 options: cheapest, nearest, one shop.
- step 5The buyer picks one; the shop owner taps YES or NO.
- step 6The shop's agent pays a small per-order agent charge in FET on the Fetch.ai testnet, and the Shopper Agent checks it on-chain.
- outcomeOne chat replaces the walking and calling. The buyer gets a Verified Receipt; the owner's YES is the only manual step.
status Built for Fetch-A-Thon 3.0. All four agents tested end to end locally; prices and orders are demo data.
In short
- -Prices, totals and fee checks are plain code. The LLM only turns the buyer's text into an item list, so it can't make up a number.
- -Typed messages between agents: ShopSearch → ShopList, QuoteRequest → QuoteList, CheckQuotes → Verdict, OrderRequest → OrderResult.
- -Live location through a one-time link that expires after 30 minutes, or a pasted Google Maps pin.
- -Agent charge through Fetch.ai's AgentPaymentProtocol: a real 0.002 FET transfer on the Dorado testnet, verified on-chain. The code refuses any other chain.
Architecture
Four kinds of uAgents talk in typed messages. The Shopper Agent is registered on Agentverse with a mailbox, so buyers reach it from ASI:One. Shops come from OpenStreetMap; quotes, checks and payments stay in code.
- user
- ai
- service
- guard
- external
- call
- ← scroll →
- 01Buyer chats in ASI:One (Agent Chat Protocol) or scans a shop's QR
- 02Shopper Agent reads the item list (ASI1 LLM; keyword parser as fallback)
- 03Store Locator Agent searches OpenStreetMap: 500 m → 1 km → 2 km until 3 shops
- 04Merchant Agents quote from each shop's price list
- 05Trust Agent blocks bad quotes and builds up to 3 options
- 06Buyer picks; shop owner taps YES / NO on the owner screen
- 07Shop's agent pays 0.002 testnet FET; the Shopper Agent checks it on-chain and sends the Verified Receipt
Decisions
+ The LLM only reads the item list; prices, totals and fee checks are code- Let the model quote and add up the order A model can invent a number. The buyer's money should never depend on that.
+ One Merchant Agent per shop, quoting from that shop's own price list- One central agent holding every shop's prices Each shop keeps control of its stock and prices and confirms its own orders.
+ Ripple search: 500 m → 1 km → 2 km until there are 3 shops- One fixed search radius Busy markets get the nearest shops; quiet areas still get enough options.
+ Free OpenStreetMap search (Nominatim), held to 1 request per second- A paid maps API No key and no bill for a hackathon build; the rate limit respects the free service.
Failure handling
The LLM is off or returns a bad list
A keyword parser reads the list instead (longest words first, so "peanut butter" isn't also "butter").
OpenStreetMap search fails
One retry, then the demo shops in shops.json, so the chat still works offline.
A quote hides a fee, has a wrong total or the shop is closed
The Trust Agent blocks it before the buyer sees it.
The scanned shop is closed or misses items
Nearby open shops are searched instead, so the QR still helps.
The owner doesn't answer
No tap within 60 seconds means the order is not confirmed.
Payment pointed at the wrong chain
The code refuses any chain other than the dorado-1 testnet.
- user
- ai
- service
- guard
- external
- call
- ← scroll →
- user
Buyer asks in ASI:One or scans a shop's QR
- ai
Shopper Agent
ASI1 LLM → item list
LLM off or fails → keyword parser
- service
Store Locator Agent
OpenStreetMap · 500 m → 1 km → 2 km
search fails → one retry, then demo shops
parallel ×3 · one Merchant Agent per shop
serviceShop 1 quote
serviceShop 2 quote
serviceShop 3 quote
- guard
Trust Agent
builds up to 3 options
hidden fee · wrong total · closed → blocked
- user
Buyer picks an option
- user
Shop owner taps YES
no tap in 60 s → not confirmed
- external
Agent charge
0.002 FET on the testnet, checked on-chain
- client
Verified Receipt
Let the model quote and add up the order
The LLM only reads the item list; prices, totals and fee checks are code
A model can invent a number. The buyer's money should never depend on that.
One central agent holding every shop's prices
One Merchant Agent per shop, quoting from that shop's own price list
Each shop keeps control of its stock and prices and confirms its own orders.
One fixed search radius
Ripple search: 500 m → 1 km → 2 km until there are 3 shops
Busy markets get the nearest shops; quiet areas still get enough options.
A paid maps API
Free OpenStreetMap search (Nominatim), held to 1 request per second
No key and no bill for a hackathon build; the rate limit respects the free service.
The LLM is off or returns a bad list
A keyword parser reads the list instead (longest words first, so "peanut butter" isn't also "butter").
OpenStreetMap search fails
One retry, then the demo shops in shops.json, so the chat still works offline.
A quote hides a fee, has a wrong total or the shop is closed
The Trust Agent blocks it before the buyer sees it.
The scanned shop is closed or misses items
Nearby open shops are searched instead, so the QR still helps.
The owner doesn't answer
No tap within 60 seconds means the order is not confirmed.
Payment pointed at the wrong chain
The code refuses any chain other than the dorado-1 testnet.
Numbers
4
Agent roles
500 m → 2 km
Search rings
≤ 3
Options shown
cheapest · nearest · one shop
0.002 FET
Agent charge
testnet, no money value
Next
- ○ Real shop prices once shops join
- ○ Owner dashboard (Next.js + Supabase)
- ○ Saved shop data for Delhi NCR so search doesn't depend on a free service