Walk into a store. Leave with its stock.
Nothing to buy. The brand pays for the visit.
Apple Stores pay AAPL. Ford dealers pay F.
Brands fund a pool of tokenized stock at their own doors on Robinhood Chain. Stand within 40 m, prove you are there, and a slice of the pool lands in your wallet. No purchase, no receipt, no app store.
Paid for showing up, not for clicking.
A brand puts, say, half a share of its own stock into a pool at one of its stores. Every wallet that stands at that door gets a fixed slice, once a day, until the pool is empty. The brand is buying verified foot traffic, and it pays in the one thing it never runs out of.
The money is decided on chain. What a visit pays, the first-visit bonus, the boost window, the streak ladder, the daily cap and the city challenge are all fields on the pool, enforced by the contract. The only thing decided off chain is whether you were really standing there.
Three steps, none of them a purchase.
Open the map.
Every pin is a real door from OpenStreetMap: an Apple Store, a Ford dealer, a lululemon. A pool on it says what a visit pays and how much is left today.
Stand at the door.
Get within 40 m with a real GPS fix. The server checks distance, accuracy, and how fast you got there from your last visit. Then it signs one voucher that says you were here.
Claim.
The voucher goes to the contract, the contract works out what the visit is worth from the brand's rules, and the stock token moves from the pool to your wallet.
What a brand can turn on.
Each of these is a field on the pool. None of them can mint anything: they only spend the budget faster or slower.
First visit bonus.
A wallet's first ever claim at this door pays extra. The contract remembers who has been, so it pays once.
firstVisitBonus, lastClaim[pool][wallet] == 010x opening hours.
A window where every visit pays a multiple. Set it for the morning rush, the launch day, the hour the shop is usually empty.
setBoost(pool, 100000, start, end)Mystery doors.
The pool is funded and visible, the location is not. The map says which city; the door is revealed when the pool starts.
mystery, place is a hash until startVisit streaks.
Come back on consecutive days and the visit pays 1.25x from day 3, 1.5x from day 7, 2x from day 14. The streak is yours, across every brand.
streaks, streakBpsFor(days)City challenges.
Visit three of a brand's doors in one city and a bonus lands. A door counts once, so it is three places, not three days.
openCampaign(token, needed, bonus, budget)Limited pools.
"Half a share of AAPL at this store today." A daily cap that resets at midnight UTC, and a budget that ends when it ends.
dailyCap, leftToday(pool)Pools on the chain right now.
Read from the contract on every load. A figure here is a figure on chain.






For the brand: a visit, priced.
You set what a visit is worth and how many you will pay for. The contract holds your budget in its own pool, spends it only against signed visits, and hands back whatever is left the moment you close it. Your money never pays for another brand's door.
The signer cannot inflate the bill. A voucher carries no amount. If the presence key were stolen, the worst it could do is hand out visits at the rate you already agreed to, until your daily cap.
Vyran