DEV Community

Cover image for This Week Outside: a field guide you print, built from open data and a local LLM ๐ŸŒฟ
Saurabh Chauhan
Saurabh Chauhan

Posted on

This Week Outside: a field guide you print, built from open data and a local LLM ๐ŸŒฟ

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 ๐ŸŒฟ

Most "get outside" apps ask you to stare at your phone while you're outside.
This one does its thinking at your desk, then hands you a sheet of paper and gets out of the way.


What I Built

This Week Outside is a hyperlocal field guide you print and take with you.

You type your town. It asks iNaturalist what people within a few kilometres have actually spotted in the last two weeks, checks the 7-day forecast, and works out which species have just showed up: logged recently, but not in the two months before. A small open-weight model running on your own machine then writes the friendly parts (an intro, a weekly mission, and a short what to look or listen for tip per species). You hit print, leave the phone at home, and tick things off with a pen.

It's for anyone who would walk more if the walk came with a tiny quest, and who would rather not have an app open on the trail to get it.

The screen is the shortest part

01 ยท Pick your patch Type a town or share your location. Coordinates are rounded to about 1 km before they leave your computer.
02 ยท Read the neighbourhood Recent sightings plus the forecast, with a โ˜… on the best day and the golden-hour time. A local model writes the tips.
03 ยท Print it. Go. A clean, ink-friendly sheet with a tick box beside every species and a ruled space for field notes.

A minute at the screen. The rest is the point.


Demo

The home page

![The This Week Outside home page: a forest-green hero reading "Something wild is near you", a big search bar, and die-cut leaf, bird, mushroom, sun and acorn stickers]

The UI borrows its look from hacktoberfest.com: forest green, cream paper, sticker art, an italic accent inside a bold headline.


Code

Hacktoberfest 2026

This repository collects projects for Hacktoberfest 2026. Each project lives in its own top-level folder.

Projects

  • NoFumble - local-first cash-flow forecasting and expense checks.
  • This Week Outside - a hyperlocal field guide for things to look for outdoors this week.



The project lives in this-week-outside/. It has a Dockerfile and compose file, and a CI workflow that runs the test suite on Python 3.10, 3.11 and 3.12.


How I Built It

 browser โ”€โ”€โ–บ Flask (app.py) โ”€โ”€โ–บ fieldguide/guide.py
                                   โ”œโ”€ inat.py     iNaturalist species_counts  (recent window + 60-day baseline)
                                   โ”œโ”€ weather.py  Open-Meteo 7-day forecast   (+ best-day score, golden hour)
                                   โ”œโ”€ geocode.py  Open-Meteo geocoding        (place name โ†’ lat/lng)
                                   โ””โ”€ llm.py      local model via Ollama or any OpenAI-compatible server
Enter fullscreen mode Exit fullscreen mode

Stack: Python + Flask + requests, vanilla JavaScript with no build step, and no API keys anywhere.


Why Does Open Innovation Matter?

Because of four things I couldn't have promised with a hosted model:

What I wanted What open made possible
Private The AI text is written on your machine. What leaves it is the place name you search for and a coordinate rounded to ~1 km, sent to the public iNaturalist and Open-Meteo APIs.
Free to run, forever Open data and an open-weight model mean no API key, no bill, and no tier to outgrow. Anyone can run a card for their own town.
Swappable Try another model, or another server (Ollama, llama.cpp, LM Studio, vLLM), by changing one variable.
Useful where signal isn't Once the card is printed, the trail needs no connection at all.

And where open is harder. A 3B-parameter model is not as reliable as a frontier model, and it will sometimes get a species tip wrong. That's exactly why the architecture is "data decides, the model decorates", with a validator and a safe fallback around it. Working with a small open model pushed me toward a more careful design than I'd have bothered with otherwise.

Honest limits

  • Sightings reflect where people use iNaturalist: dense in cities and popular parks, sparse elsewhere. Widen the radius if a card looks thin.
  • "Just showed up" means newly logged, which can also mean newly noticed.
  • Everything the model says is a hint, not an identification.

Credits & attribution

If you try it, tell me what you found near you. ๐ŸŒฟ

Top comments (0)