This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
“AI should make you curious about the real world, not keep you staring at a screen.”
Modern nature apps often suffer from a counter-productive irony: they turn outdoor walks into another screen-time addiction, trapping users in infinite scrolling feeds, leaderboards, and social feeds.
WildLens is an AI-powered outdoor companion built specifically for the “Touch Grass” challenge. Its design mandate is the exact opposite of attention-economy apps: make screen interaction as brief as possible, and prompt the user to put their phone in their pocket.
$$\text{Step Outside} \longrightarrow \text{Point Camera} \longrightarrow \text{Gemma AI Taxonomy} \longrightarrow \text{Look Closer Tip} \longrightarrow \mathbf{Phone\ In\ Pocket} \longrightarrow \text{Physical Exploration Quest} \longrightarrow \text{Earn Nature XP}$$
Large Viewfinder & Nature Scanner (/scanner):
facingMode: environment).
Real-World Nature Challenges:
PutPhoneAwayPrompt)
Nature Passport / Field Journal (/passport):
Touch Grass Session Mode (/session):
Nature XP & Progression System:
Level 1 — Seedling (0–99 XP)Level 2 — Explorer (100–249 XP)Level 3 — Trail Seeker (250–499 XP)Level 4 — Naturalist (500–999 XP)Level 5 — Wild Guardian (1000+ XP)
Safety & Foraging Guardrails:
Live Link: https://wildlens-hacktober.vercel.app/
GitHub Repository: https://github.com/rudraism19/Wildlens-Hacktober
Instant Demo Mode: Includes 4 pre-configured biological specimens (** Peepal Tree**, Indian Robin, Plain Tiger Butterfly, French Marigold) so judges and testers can experience the entire scanner, taxonomy, and challenge pipeline without needing camera permissions or API keys.
The complete source code is open source and hosted on GitHub:
👉 github.com/rudraism19/Wildlens-Hacktober
flowchart TD
A["📷 Camera / Drag & Drop Image"] --> B["WildLens Viewfinder"]
B --> C{"AI Provider Router"}
subgraph OpenWeight ["Open-Weight & Local Tier"]
C -->|"Default / Offline"| D["Gemma 2 Open-Weight"]
D --> D1["Vision Feature Extraction"]
D1 --> D2["Gemma Botanical Reasoning Engine"]
end
subgraph CloudTier ["Cloud Multimodal Tier"]
C -->|"Cloud Toggle / API Configured"| E["Gemini 3.5 Flash API"]
E --> E1["Server-side Secure Route /api/analyze"]
end
D2 --> F["Strict Zod Schema Validation"]
E1 --> F
F --> G["Nature Identification Card"]
G --> H["Observation Tip ('Look Closer')"]
G --> I["Ecological Fact ('Did You Know?')"]
G --> J["Real-World Outdoor Challenge"]
J --> K["📴 Put Phone Away Modal & Timer"]
K --> L["User Explores Real World"]
L --> M["+50 Nature XP Earned"]
M --> N["IndexedDB Nature Passport Field Journal"]
WildLens is built on a modern, offline-first open-source stack:
#08100b, #12231c, emerald, moss, and warm off-white). NatureIdentificationSchema. idb stores passport entries, outdoor sessions, and XP progression entirely in the browser.
WildLens implements a modular AI provider abstraction (IAIProvider):
GemmaProvider) GEMMA_ENDPOINT_URL (Ollama gemma2:9b, Hugging Face google/gemma-2-9b-it, or local GPU server). GeminiProvider) gemini-3.5-flash with dynamic API key resolution./api/analyze and /api/challenge) — API keys are never exposed to client bundles.
“The best outdoor AI is one that still works when the internet doesn't.”
Building WildLens around open-weight models (like Google Gemma) is an intentional architectural choice driven by five critical pillars:
True Wilderness Resilience:
Real nature exploration happens on forested mountain ridges, remote ravines, and national parks where cellular towers don't reach. Closed, cloud-only proprietary APIs fail completely the moment you lose signal. Open-weight models empower users with a fully functional field naturalist directly on their device.
Privacy-First Exploration:
Where you hike, what you discover, and the nature photos you capture should belong to you. Open-weight inference ensures personal location and photography data are processed locally without being scraped into proprietary corporate training databases.
Freedom from Proprietary Lock-In:
With a modular provider abstraction (IAIProvider), users and organizations are never trapped by single-vendor price hikes, sudden deprecations, or terms-of-service shifts.
Zero Per-Token Tax on Curiosity:
Commercial vision APIs charge per-query token fees, which penalizes spontaneous curiosity. Running open-weight Gemma models eliminates recurring API bills, allowing students, schools, and park rangers to explore nature without metering.
Fine-Tuning for Local Bioregions:
A generic black-box model treats the entire world with broad strokes. Gemma's open weights can be fine-tuned on regional botanical datasets (such as Western Ghats flora, Appalachian lichens, or Alpine mosses), enabling localized taxonomic precision that monolithic closed APIs overlook.
This application was engineered with the assistance of Google DeepMind's Antigravity agentic coding pair programmer:
npm test) to validate levels, XP rewards, and provider failover logic.
git clone https://github.com/rudraism19/Wildlens-Hacktober.git
cd Wildlens-Hacktober
npm install
cp .env.example .env.local
npm run dev
npm test
Built with ❤️ for the Hacktoberfest 2026 Touch Grass Challenge.