LaundryXAILIVE in Brooklyn
LaundryXAI

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.

Built with GeminiGoogle CloudXPRIZE · Small Business Services
  1. 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.

    ★☆☆☆☆ · Google review

    The woman there does not help you — she does not know English, and the owner only knows how to agree.

    ★☆☆☆☆ · Google review

    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?

    Li's Family Laundry storefront at nightInside the laundromat with the wash-and-fold price board
  2. 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.

    Amazon cart: Raspberry Pi 5, BRIO 4K webcam, stand — $441.06
  3. 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.

    Unboxing the Raspberry Pi 5 kitThe Raspberry Pi 5 board with case and fan
  4. 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.

    Assembled Raspberry Pi in its case with SD card
  5. 04June 9

    First boot

    “Setup Complete — Your Raspberry Pi is now set up and ready to go.” The brain was awake.

    Raspberry Pi setup complete screen
  6. 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.

    Terminal showing the Logitech BRIO webcam detected24-hour capture test complete — 1,405 frames
  7. 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.

    Installing the Gemini SDK on the PiGemini vision returning structured observation JSON
  8. 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.

    Unboxing the Verizon mobile hotspot
  9. 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.

    The equipment loaded into a wagon in the elevator
  10. 09June 18

    Arrival

    Li's Family Laundry, after hours. Time to give the AI a home on the wall.

  11. 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.

    The BRIO 4K camera rig on its mountInstall workstation with Claude Code on screen
  12. 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.

    Pre-departure verification: 5 checks passed
  13. 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.

  14. 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.

  15. 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.

    An ESP32 board, an SW-420 vibration sensor, and jumper wiresThe sensor wired to the ESP32 with three jumper wires
  16. 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.

    The ESP32's blue LED lit — the moment it detected the machine running
  17. 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.

    The store camera, zoomed, reading the W1 board through its clear case: “W1 OP”
  18. 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.

  19. 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.

  20. 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.

  21. 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.

16Today

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.

The founder holding the Li's Family Laundry sign, Pi and camera on the left, machines on the right
65,161
AI observations
28,984
with customers seen
58 days
running 24/7
LIVE in Brooklynlast heartbeat 12m ago · 67,213 total
QR code to order laundry

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 →