Inspiration
Free food tables, community fridges and campus snack drops all run into the same problem: a few people take everything, and the people who need it most show up to an empty shelf. The usual fix is sign-ups, IDs or someone standing guard, and that scares off the exact people you're trying to help. We wanted a way to keep things fair without asking anyone who they are.
What it does
Dispenserve is a kiosk that gives out one free item per person, per day. You walk up, it recognizes that you're a new face, and it drops your snack. Come back later and it knows you already got yours, so there's enough to go around.
No app, no ID, no sign up. No photos are ever saved. Your face is turned into a list of numbers that only lives in memory and gets wiped every 24 hours.
Organizers get a live dashboard with stock levels, busy hours, restock suggestions and a public on-chain record of what was given out, so donors can see the impact without seeing anyone's personal data.
How we built it
- Hardware: a cardboard enclosure, an Arduino Uno and a servo turning a slotted disc under a chute. Items drop down a ramp and out the front. Green and red LEDs show served and already served.
- Vision: a webcam and InsightFace embeddings. Two faces match when their cosine similarity is over a threshold:
$$\text{sim}(a,b) = \frac{a \cdot b}{|a|\,|b|} > 0.42$$
The same person scored 0.59 to 0.93 in testing. It runs at about 62ms per frame, and a match decision takes about 1ms.
- Kiosk: an iPad showing a camera-free UI served over the local network.
- ElevenLabs: a friendly voice for each state, so it's accessible without reading the screen.
- Gemini: turns raw events into plain-English insights and restock suggestions for organizers.
- Tiger Data + Snowflake: anonymous events only (machine, bay, event, time) for live time-series stats and daily impact reports.
- Solana (devnet): daily totals and restocks written as memos for a public, verifiable record.
- DigitalOcean: the fleet API that ties machines together and feeds the dashboard, hosted on Vercel.
Challenges
- Getting the disc to drop exactly one item. We went through two servos, a glued-off arm and a lot of jammed Kit Kats before adding a chute.
- The servo browning out the Arduino until we switched to barrel power and detached the servo between sweeps.
- Designing it so privacy isn't a promise but the architecture: nothing identifying ever touches disk or the cloud.
- Building almost the whole thing solo overnight.
What we learned
Hardware takes 5x longer than you think, cardboard is an underrated prototyping material, and privacy is way easier when you design it in from the start instead of bolting it on.
What's next
Multiple machines per campus, a sturdier build, more item types, and partnering with food pantries and community fridges to test it for real.
Built With
- arduino
- css
- digitalocean
- elevenlabs
- gemini
- html
- insightface
- javascript
- opencv
- postgresql
- python
- snowflake
- solana
- tiger-data
- timescaledb
- vercel

Log in or sign up for Devpost to join the conversation.