Posted on Oct 10
Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission 🌿
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
WildQuest is a mobile-only, offline-first nature exploration game. You pick a 15-, 30-, or 60-minute walk and a theme (plants, birds, textures, general nature), and the app generates 3–5 short missions from an on-device open-weight LLM — with a bundled curated mission library as fallback, so it works with zero connectivity.
The point is the screen stays secondary: you read one mission, put the phone away, and go outside. When you come back you photograph what you found, describe it in a sentence or two, and the same on-device model structures it into an ID suggestion (label, confidence, key features). Everything — quests, photos, notes, AI text — lives in on-device SQLite, including half-typed drafts that survive app restarts. The walk ends with a field journal: completions, observations grouped per mission, and questions for the next walk.
It is for anyone who walks past nature without noticing it: beginners who want structure, parents, run-club regulars who want a reason to look up.
Demo
There is no deployed link — it is a native Android app, not a website. Install the release APK (arm64, 128 MB) directly:
adb install -r app/build/app/outputs/flutter-apk/app-release.apk
Offline proof you can repeat: turn on airplane mode, generate a 15-minute plants quest (it arrives with a "Curated" chip), complete a mission, save a note, kill the app, reopen — quest, drafts, and history are intact. With the model downloaded once (~1 GB, Settings tab), the same flow runs fully offline with the chip reading "On-device AI". A field-test video is still TODO before the deadline.
Code
https://github.com/SpreadSheets600/WildQuest
Note: the code push is in flight (local commits verified, remote push pending) — the repo will hold the full history: Flutter app, Python dev backend, docs with architecture diagrams.
How I Built It
The open-source AI is the core, in three places:
- Quest generation — Qwen2.5-1.5B-Instruct Q4_K_M (official Qwen GGUF on Hugging Face, ungated, Apache-2.0), run on-device through llamadart 0.11 (llama.cpp), CPU, 2048 context. The prompt demands strict JSON (missions with time, difficulty, safety notes); every output is re-validated by a rules engine (timebox fit, difficulty cap, banned-phrase safety check with negation handling). Any failure falls back to the curated library — and the UI chip always names the true source.
- Photo suggestions — the same Qwen model, describe-then-structure: no vision model on purpose (multimodal GGUFs are ~2 GB+ and experimental on low-end phones). You describe what you saw; the model returns structured JSON offline. Without a model the box honestly says "No model — not AI".
- Why this model: an earlier build used Gemma 3n + MediaPipe and thrashed on real phones. Q4_K_M is the community-default quant (~1% perplexity cost), ~1 GB weights with a small KV cache — the phone bottleneck is memory, not speed, so the app runs CPU with a short context.
No server, no account, no API keys. A Python/FastAPI + Ollama backend exists in the repo purely as a dev reference with the same prompt shapes and rules.
Why Does Open Innovation Matter?
Four things a closed API could not do here:
- Airplane-mode nature walks. A birding trail with no signal is the whole use case — a cloud API makes the app a brick exactly where it matters.
- Location privacy by construction. Photos, notes, and implicitly where-you-walked never leave the device. There is no server to trust.
- Swappable, inspectable behavior. The model URL is a setting, not a vendor lock-in — the rules engine, prompts, and validation are all in the repo to read and change.
- Zero marginal cost. A free app for beginners cannot pay per-token for every quest and every photo description.
My Agent Session
Session transcript available on request — happy to embed it via DevRelay before the deadline.
Prize Categories
None — the build uses no partner technology (the earlier Gemma integration was removed for on-device performance reasons). Entering for the overall prize only.
Top comments (0)
For further actions, you may consider blocking this person and/or reporting abuse
