DEV Community

Cover image for MicroWild: Find the Wild in the Places You Already Are
Ayush Shandilya
Ayush Shandilya

Posted on

MicroWild: Find the Wild in the Places You Already Are

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

MicroWild — Find the wild in the places you already are.

Nature doesn't have to mean a national park, a hiking trail, or a weekend trip. Sometimes it's a plant growing through a pavement crack, lichen on a wall, a repeating pattern in balconies, or a small sign that an animal passed through.

MicroWild turns these overlooked details into short, personalized observation quests. You choose your surroundings, available time, energy level, focus, and whether you're exploring alone or with someone. The app gives you three concrete steps to try outdoors, then encourages you to put your phone away and experience the world directly.

The idea is simple: use AI to help someone leave the screen, not stay on it.

MicroWild is designed for people in ordinary urban environments, including those who don't have easy access to large parks or nature trails. It doesn't require GPS, a camera, photo uploads, or an account.

Demo

Source code: MicroWild on GitHub

Live demo: No hosted demo is currently available. MicroWild runs locally using Ollama and Gemma 3 1B.

To run it, you need Node.js 22 or later and Ollama with gemma3:1b available. From the project directory:

npm install
npm test
npm run dev -- -p 3100
Enter fullscreen mode Exit fullscreen mode

The application has been tested locally. Automated checks pass, but comprehensive browser and mobile-device testing remains unverified.

Code

The core implementation is organized around a small, testable quest pipeline:

  • app/page.tsx — user flow, preferences, quest display, outdoor mode, and reflection.
  • app/api/quest/route.ts — quest-generation endpoint, input validation, and timeout handling.
  • lib/quest.ts — prompt construction, model-output normalization, strict quest validation, saved-quest parsing, and curated fallbacks.
  • tests/quest.test.ts — automated tests for quest behavior, validation, and fallback handling.

The key design choice is that generated output is not trusted just because a model returned it. Quests pass through validation, and the app can select a curated quest when inference fails or the output is unusable.

How I Built It

MicroWild uses Gemma 3 1B locally through Ollama. The app is built with Next.js and TypeScript, with the quest-generation logic separated into testable functions.

The pipeline is:

  1. The user selects preferences such as environment, duration, energy, focus, and company.
  2. The server builds a prompt for the local model.
  3. The response is normalized and checked against the quest schema and content constraints.
  4. If generation fails or the result is invalid, a curated quest is returned instead.
  5. The user takes the quest outdoors and can return to reflect on the experience.

The model is deliberately not treated as an infallible source of instructions. The validator is the enforcement layer; the prompt alone is not the safety guarantee.

Why include curated fallbacks?

Local inference is not consistently fast on every machine. During testing on a 2015 MacBook Air, a valid model response took approximately 91.7 seconds, while earlier successful generations took approximately 26–33 seconds. The server timeout was raised from 90 to 150 seconds after the slower valid response demonstrated the need.

That improves the chance of allowing slower generations to finish, but it does not make inference instant or guarantee that every request will succeed. When generation is unavailable, MicroWild can return a clearly labeled curated quest instead of pretending the model succeeded.

The latest automated validation reported 25 passing tests, a clean TypeScript check, and a successful production build.

Why Does Open Innovation Matter?

MicroWild depends on being able to inspect, run, and adapt the model locally rather than treating intelligence as an opaque remote API.

Using an open-weight model through local inference makes experimentation possible without requiring a hosted model API key for quest generation. It also keeps the core experience local-first: the app doesn't need to send a user's location, photographs, or account profile to a remote AI service to produce a quest.

Open innovation also means being able to inspect the whole pipeline—from prompt construction to validation and fallback behavior—and change the parts that fail in practice.

There are trade-offs. Local inference depends on available hardware and can be slow, as the latency measurements showed. MicroWild handles that limitation with a curated fallback rather than claiming the model is always available.

My Agent Session

I used an AI coding agent during development to help implement and test the application. I don't have a published DevRelay session to embed in this submission.

What I Learned

The first real outdoor test was useful precisely because it wasn't a perfect success story. I completed a curated quest and found the steps understandable, but the experience made the walk only a little more interesting. The wording was the main friction point.

That feedback led to a small change in one quest: replacing the vague instruction to order marks “by feel” with visible clues such as wear depth, underlying paint layers, and softened edges. The updated wording passes the automated tests, but I have not yet verified that revision in a second outdoor test.

That distinction matters to me: a passing test can establish that software behaves as expected under tested conditions. It cannot establish that an experience is genuinely engaging for a person outside.

MicroWild is an experiment in using AI as a bridge to the physical world. The goal isn't to generate more content for someone to consume on a screen. It's to give them one good reason to look up.

Top comments (2)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.