Vendomo Kata¶
Welcome, and thanks for taking the time to work through this with us. This page explains the format so there are no surprises. Have a read before we start — you're welcome to ask questions at any point.
What you'll be working on¶
Vendomo is a vending-machine fleet-management app: a single place for an operations team to see where every machine is, what state it's in, and what's been serviced recently, plus tooling to onboard new machines.
The stack is:
| Layer | Tech |
|---|---|
| Frontend | React + Vite + TypeScript + Leaflet |
| API | FastAPI (Python 3.12) |
| Database | PostgreSQL 16 |
| Cache/bus | Redis 8 (cache, streams, GEO, query engine) |
| Worker | Async revenue-event generator |
- Source code: https://github.com/slorello89/vendomo
- See the Environment page for how to run it and what's provided.
Format¶
This is a pair-programming kata in two phases, taking about an hour in total. Modern engineers code with an AI assistant every day, so this is designed around that reality — we want to see how you work both without and with one.
| Phase | Focus | Time | AI assistance |
|---|---|---|---|
| 1 | Bug bash | ~20 min | Unassisted — no AI |
| 2 | Implementation | ~30 min | AI-assisted — use your tools |
There's a short intro at the start and a short wrap-up at the end. Throughout, we're most interested in how you think — your reasoning, how you scope a problem, and how you evaluate the work in front of you. A clear, well-narrated investigation matters more to us than racing to a finished pull request.
Ground rules¶
Phase 1 is unassisted. No coding agent, no LLM autocomplete. You may:
- read the code,
- run the app,
- hit the API / Swagger,
- read logs,
- use a debugger,
- and use plain documentation.
We just want to see you reason about an unfamiliar system with your own debugging skills.
Phase 2 is AI-assisted. Use any coding agent or AI tool you like — Claude Code, Cursor, Copilot, Windsurf, whatever you're fastest in. Please use whatever you'd reach for in your day-to-day; we're not testing a specific tool. Share your screen and think out loud as you go. We're watching how you direct the tool, how you review what it produces, and how you integrate it — as much as the final code itself. Treat it like a fast teammate whose work you're responsible for.
Where to go next¶
- Environment — run the app, ports, the API surface, and everything the app provides that you'll build on.
- Phase 1 — Bug bash
- Phase 2 — Implementation