LIVE in Brooklyn
How we built an AI that watches a Brooklyn laundromat 24/7
A build diary — from an Amazon cart to a Raspberry Pi running Gemini vision on the floor of Li's Family Laundry. Every photo below is real.
- 00Where it started
It started with a one-star review
Li's Family Laundry is a real family business in Bay Ridge, Brooklyn — 40 machines run by a couple who don't speak much English. Their public reviews told the story: machines that failed mid-cycle, and customers no one could help.
“The machine left some of my clothes completely wet and others dry.”
“The woman there does not help you — she does not know English, and the owner only knows how to agree.”
They're not bad people. They're overwhelmed — no one can watch 40 machines and speak four languages at once. What if an AI could?


- 01June 6
It started with a shopping cart
One Amazon order, $441.06: a Raspberry Pi 5 (8GB), a Logitech BRIO 4K webcam, and a gooseneck stand. The entire eyes-and-brain of the system — cheaper than a month of a part-time clerk.

- 02June 8
Unboxing the brain
A Pi 5 board, a 128GB card, a heatsink and fan, and the BRIO. Small enough to hold in one hand; powerful enough to run Gemini vision every minute.


- 03June 8
Assembling it, step by step
Heatsink on, fan wired, card seated, case closed. A Samsung EVO card became its memory; a 45W supply, its heartbeat.

- 04June 9
First boot
“Setup Complete — Your Raspberry Pi is now set up and ready to go.” The brain was awake.

- 05June 9–10
It opened its eyes
The BRIO was detected, ffmpeg grabbed the first frame, and a 24-hour test ran overnight — 1,405 frames captured without a hitch. The camera worked.


- 06June 15
Teaching it to understand
We wired in Gemini 2.5 Flash Vision. Every frame comes back as structured JSON — scene, people, machine states — never a stored photo. The Pi could finally read the room.


- 07June 16
Cutting the cord
A Verizon 4G hotspot made it fully wireless — no store Wi-Fi needed. Plug in power, and it's online anywhere.

- 08June 18
A night run to Brooklyn
The whole rig went into a little red wagon and across the city after dark — over the bridge, into Bay Ridge.

- 09June 18
Arrival
Li's Family Laundry, after hours. Time to give the AI a home on the wall.
- 10June 18–20
Mounting the eyes
The BRIO went up on a gooseneck aimed across all 40 machines; the Pi tucked beside it. A whole install bench — laptop, drill, ladder — in the middle of a working laundromat.


- 11June 20
Going live
A five-point pre-flight check — camera, capture loop, network, fresh observation, heartbeat — all green. We walked out; the AI stayed on, watching.

- 12July 23
It learned to speak — in four languages
The very first review said no one there speaks English. So we gave the store a voice. The customer app now takes an order in English, 中文, Español or العربية, quotes every price straight from Li's in-store board, and hands back a real Stripe payment link. The language barrier that earned a one-star review is gone.
“3件衬衫” → $12.00, pay now. The same question, answered the same way, in whatever language you speak.
- 13July 25
A live window on the floor
We opened the AI's eyes to everyone — a public live room. Every minute it posts what Gemini sees on the floor: how busy it is, which machines look free, the light, the hour. No faces, no footage — each frame is hashed and thrown away; only the AI's read is kept. Alongside it, a “Today's Story” that narrates the day — who opened up, the busiest moment, when it all wound down.
- 14July 25
Teaching the machines to feel
Seven weeks after the first cart, another Amazon order — but this time for the machines themselves: ESP32 boards and SW-420 vibration sensors. The idea is simple: fix a sensor to a machine and it feels the tumble, so the AI knows in real time which machines are actually running.


- 15July 27
The first machine spoke
Tonight we wired the first sensor to a bare ESP32 on a desk, flashed the firmware, and shook it. Forty seconds of steady motion later, a value flipped in the Brooklyn cloud — and the assistant said it out loud: “Dryer D15 is in use, free in about 29 minutes.” Stop shaking, and two minutes later it went quiet again: “D15 is free.” A one-dollar sensor, a $6 chip, Wi-Fi, and Gemini.
It started with a camera that could see. Now the machines themselves can speak.

- 16August 7
Sixty blocks away
The boards came off the desk and onto two real washers, W1 and W15 — then we drove home to Queens and did not go back. From a laptop an hour away we placed a hold, and a machine in Brooklyn scrolled it. To see it ourselves we went looking through the store's own camera and found something nobody had used: the BRIO has pan, tilt and 5× zoom, and for two months we had been pointing it straight ahead at 1080p, wasting half the sensor on the ceiling. Tilted down, zoomed 2.5×, one 4K frame — and there it was.
The AI's eye reading the AI's own display. Nobody was in Brooklyn.

- 17August 7
We made our own numbers smaller
The day's story on this site said 291 machines started, 543 frames with someone in them, and that the store “came to life at 12:31 AM.” None of it survived a look. One flickering frame — zero washers running, then twelve, then zero again inside a minute, in an empty store before opening — was being counted as twelve starts. 543 frames with a person was more frames than the store had even been open. And the wall clock reading 19:32 that the model kept citing as proof the store was shut is a convex security mirror on the far wall, reflecting a washer's own display back at the lens. So: a reading now has to hold for three frames before we believe it, opening hours come from the clock and never from the camera, and the model is forbidden to read a time off a picture. 291 became 0.
A system that audits itself is worth more than one with better-looking numbers.
- 18August 8–9
The machine paid for itself
A hold costs $0.99. On W15 we stopped asking the customer for it. The agent has its own wallet on Base; when it sees a hold with nothing paid against it, it pays — 0.99 USDC, no checkout, no signature, nobody clicking anything. The first two attempts died on bugs that only bite on Windows, both silent: the agent would simply never have paid, and every dashboard would have looked fine. Fixed, it settled in thirty-four seconds. W1 kept its card reader. Two identical washers, the same $0.99, two different rails, running side by side in the same store on the same day.
At $0.99 the card rail takes a third of the fee. The other one takes less than a cent.
- 19August 13
A regular paid
A regular at Li's — a man we had never met, who does his laundry here — took out his own phone, opened the app, held Washer #1, and paid the ninety-nine cents. He had never seen a laundromat do this; he thought it was worth trying. Then he walked over to the machine and the board on it was already scrolling his reservation, and he liked what it did. Ken filmed it, and afterwards asked him whether we could show his face. The database row matches the clock in the corner of his phone to the minute. Everything on this page up to here, we built and we tested. This one a customer did, with his own money, because he wanted the machine.
Then Ken sent one more message: “我继续叫客人.” — I'll keep bringing customers over.
- 20August 14
Nobody paid, and it was paid
The next day a customer did the same thing on Washer #15 — the machine on the other rail. She opened the app on her own phone, typed her first name, held the washer, and walked over to find the board already scrolling it. She was not asked for a card, because on this machine the customer is never asked: the agent settled the fee itself, 0.495 USDC — the store's half of the $0.99 — out of its own wallet on Base. Her reservation row carries no Stripe payment id and is still marked captured, which is the whole difference between the two washers written down in one line of a database. She was filmed with her permission.
She tapped hold at 4:34:03 PM. The agent saw it at 4:34:11 and the payment was on-chain at 4:34:29 — twenty-six seconds, with nothing for her to do.
It's still watching. Right now.
Since June, the Pi has captured a structured observation every minute — through the day, through the night, through a 10-day carrier outage it survived on local storage. Today the AI also takes customer orders in any language and hands them a payment link.


Order from the same AI
Scan the code, or tap below — order Wash & Fold or Dry Clean in your language, priced from the real in-store board.
Try the customer app →