DEV Community

Cover image for Runningo: Less Scrolling, More Running - Powered by Gemma
Aman Jain
Aman Jain

Posted on

Runningo: Less Scrolling, More Running - Powered by Gemma

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

Sometimes the barrier to getting outside is a small decision: where should I go with the time I have?

I built Runningo, a mobile-friendly walking and jogging route planner. Choose your starting point, available time and preferred stops, then get a real pedestrian route back.

You can also describe your outing:

“A 30-minute jog with greenery and a 5-minute stop.”

Gemma interprets the request. Runningo reserves five minutes for the pause and plans around the remaining moving time.

The map highlights parks, gardens, scenic viewpoints, fruit shops and drinking-water points where OpenStreetMap has relevant data. Suggested routed stops are distinguished from nearby markers, with warnings when preferences cannot be met.

The goal: less time deciding, more time outside.

Demo

Watch the Runningo demo on Loom

This is a local demo using Gemma through Ollama. There is no public deployment yet.

I manually tested time changes, walking versus jogging and pause-time budgeting in the browser. Jogging produced a longer route for the same time; adding a pause reduced the route distance.

One verified local request returned a 3.221 km pedestrian round trip, with 24.15 moving minutes + 5 pause minutes = 29.15 minutes total.

I have not field-tested the route outdoors.

Code

Runningo source code and setup instructions

How I Built It

Runningo uses React, TypeScript and Leaflet for the interface, FastAPI and Pydantic for the backend and Gemma 3 4B through Ollama for local natural-language interpretation.

The responsibilities are deliberately separated:

  • Gemma extracts activity, available time, place preferences and pause time.
  • Pydantic validates the structured response.
  • FOSSGIS OSRM foot supplies real pedestrian geometry.
  • Overpass retrieves OpenStreetMap places.
  • Code calculates time from routed distance and the selected pace.

Gemma never invents route geometry or calculates distance.

A smaller model was not automatically the better choice

I compared three Gemma sizes using the same seven fixed requests, prompt and expected results:

Model Correct interpretations
Gemma 3 270M 1/7
Gemma 3 1B 3/7
Gemma 3 4B 7/7

The cases included negated preferences, preserving defaults and stop-time allocation. These are results from a small development evaluation, not a claim of general accuracy.

The smaller models sometimes returned structurally valid JSON with incorrect preferences. That taught me to test meaning as well as format. Gemma 4B handled all seven cases correctly, with a warm mean response time of approximately 5.75 seconds on my computer.

Malformed or unavailable model responses trigger an explicitly labelled form fallback.

Handling imperfect external services

Place lookup can time out. I added bounded requests, an alternative endpoint and caching, with separate messages for unavailable data and successful empty results.

Testing also exposed a bug: a failed place lookup could drop the requested pause from the time budget. I fixed it so pause time remains included even without an assigned mapped stop.

The backend has 57 passing tests. TypeScript checking and the production build also pass.

I used Codex to help build and debug the project, then tested the main browser experience myself.

Why Does Open Innovation Matter?

Gemma’s open weights let me run inference locally, compare model sizes and inspect failures without a hosted inference subscription or per-request API charges.

Natural-language interpretation stays on my computer. The mapping portion still needs internet access and sends coordinates to routing and place providers, so Runningo is not an entirely offline app.

OpenStreetMap provides inspectable place data. Rather than treating an AI-generated location as fact, Runningo uses mapped sources and reports missing information.

Together, these pieces let me build a reproducible local AI application with clear boundaries between model interpretation, geographic data and calculations.

Limitations and Next Steps

The current planner tries at most three route candidates and includes at most one preferred mapped place. Routes may retrace paths or undershoot the time budget.

Walking and jogging estimates use fixed speeds. Mapped centres are not verified entrances, and nearby markers do not imply visits. Opening hours, access, road suitability, fruit availability and drinking-water quality remain unverified.

Next, I want to improve route selection, verify park entrances and deploy a public version. Longer term, I’d like people to invite friends for scheduled walks and runs.

Prize Categories

Best Use of Gemma

Gemma 3 4B powers natural-language preference extraction, with documented comparisons against smaller Gemma models.

Attribution

Top comments (0)