Turn chores into quests. Point your camera at the mess — AI finds it, AR turns cleaning it into a game you actually want to finish.
Chorémon is a gamified chore app that turns a room into a quest board. No chore charts, no nagging, no manual logging — you point a camera at the mess and the game builds itself.
| The loop | Scan the room → AI builds the quest → cleaning becomes AR gameplay → earn XP, keep your streak, climb the leaderboard |
| AI vision | Gemini API primary, with a resilient fallback chain (Featherless Gemma → OpenRouter → NVIDIA Nemotron) plus an on-device TensorFlow.js COCO-SSD path |
| AR — Coin Mode | WebXR + Three.js: coins are anchored to your real floor with a hit-test; you physically walk around collecting them while you clean |
| AR — Tile Mode | Unity + ARCore (Android): the floor is mapped into a tile grid and cleaned in real time as you vacuum over it |
| Companion | Rascal — a snarky raccoon with an ElevenLabs voice, emotion-tagged lines and idle detection |
| Built at | Hack Indy 2026 — MLH Best Use of Gemini API 🏅 |
After every quest: XP, streak multiplier, and the family leaderboard — which, for kids and roommates, is the whole point.
Every camera frame is base64-encoded and classified live — no manual input.
photo ──► Gemini API (primary)
│ failure
▼
Featherless AI (fine-tuned Gemma)
│ failure
▼
OpenRouter (same Gemma, routed)
│ failure
▼
NVIDIA Nemotron VL models (object detection / classification layer)
│ failure
▼
graceful mock data so the demo never dies
Responses are constrained to raw JSON (item ids, labels, locations, XP, a roast line), with
client- and server-side parsing that strips markdown fences before JSON.parse. Every fallback
exists because the hardest lesson of this build was that a chain of five models has five ways
to fail.
- Voice: ElevenLabs
eleven_multilingual_v2(Finn voice), stability 0.35, similarity 0.75, style 0.6, speaker boost on — driven per line from therascal-speakroute. - Emotion tags: lines carry inline tags like
[annoyed],[sarcastic],[sighs heavily]that are passed raw to the voice model. - Never repeats: lines are pre-written per category (greeting, laundry, trash, sweeping, dishes, idle) and tracked in a set until a category is exhausted.
- He notices: the first quip lands 8–15 s after a chore starts, then every 25–60 s — and if
the
devicemotionAPI sees acceleration drop below 1.5 for 12 s, Rascal calls you out. - SFX: coin collection and quest fanfares are synthesized with Web Audio API oscillators at zero latency.
git clone https://github.com/pfarell/choremon.git
cd choremon
npm install
cp .env.example .env.local # fill in your keys
npm run dev # http://localhost:3000| Variable | Used by |
|---|---|
GEMINI_API_KEY (+ optional GEMINI_API_KEYS) |
primary vision + chat |
NEXT_PUBLIC_GEMINI_API_KEY |
client-side Multimodal Live |
ELEVENLABS_API_KEY |
Rascal's voice |
OPENROUTER_API_KEY, FEATHERLESS_API_KEY |
trash-detection fallbacks |
OPENAI_API_KEY |
optional vision route |
Check connectivity for every service at once:
node tools/check-apis.mjs- Web app — Vercel (Next.js 14 App Router). Set the env vars above in the project settings,
then
vercel --prodor connect the repo. - Tile Mode APK — build the Unity/ARCore scene for Android and sideload it on the demo
device. The web app hands off with
choremon://ar?mode=tile; Unity readsApplication.absoluteURLand returns coverage data on completion so XP can be awarded.
The full decision log — AR platform evaluation, the deep-link handoff, tile-coverage math, the voice architecture and the honest limits — lives in docs/ENGINEERING.md.
Built in 44 hours at Hack Indy 2026 by:
- Praditya Farell — AR modes, web app, AI pipeline
- Winner R. Rasendriya — Unity/ARCore
- iOS: WebXR needs Mozilla's experimental XRViewer app (no MacBook in the team → no ARKit build). Android browsers run Coin Mode natively.
- Tile Mode is Android-only — it ships as a sideloaded Unity APK, not on the web.
- Keys: the hosted demo runs on the authors' keys; when quotas run out it degrades to mock data by design. Running locally needs your own keys.
- No license file yet — this is a co-authored hackathon project; please talk to the authors before reuse.