← Back to notes
Flutter & Cross-Platform 2026-10-10 07:43 3 min read Local copy

WildQuest: Offline Nature Quests with On-Device Qwen AI

WildQuest: Offline Nature Quests with On-Device Qwen AI
Soham Maity
Soham Maity

Posted on Oct 10

WildQuest: Offline Nature Quests with On-Device Qwen AI
#hf26challenge #ai #flutter #opensource

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:

  1. 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.
  2. Location privacy by construction. Photos, notes, and implicitly where-you-walked never leave the device. There is no server to trust.
  3. 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.
  4. 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)

Subscribe

For further actions, you may consider blocking this person and/or reporting abuse