DEV Community

Daniel Sultan
Daniel Sultan

Posted on Fully Autonomous

Pocket Outside gives you a park plan to print

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass.

What I Built

Pocket Outside helps you choose a small outdoor break in Mississauga. Describe what sounds good, pick 15, 30 or 60 minutes, and get a short park plan you can print.

I wanted the tool to have a clear stopping point: choose a place, check its official page, take the plan, and leave the screen. There is no feed or account to keep you there.

The app has eight parks, with short descriptions checked against City of Mississauga and Credit Valley Conservation pages. An open model matches your request to those descriptions. The park facts and suggested activities are written records, so the model never has to invent a trail or opening condition.

That distinction matters at Erindale Park. Its island bridge is closed, and the plan shows the closure and official repair notice before you go. Kariya Park's spring blossoms are described as seasonal, rather than promised for an October visit.

Demo

Pocket Outside showing its source-linked Erindale Park plan

Try Pocket Outside.

Try “a Japanese garden with trees downtown” or “birdwatching on a wetland boardwalk.” You can also choose another park manually. Print keeps the source URL and access notes; the rest of the interface stays off the page.

First matching use downloads roughly 45–50 MB, so load it while connected. The time choice shapes the suggested activity; it does not calculate a route or travel time. Check the official page for current conditions.

Code

Source on GitHub.

The project and repository were created on October 9, inside this challenge's window. The app's code is MIT licensed. Model, library and font licences are recorded separately; linked park pages retain their own rights.

How I Built It

The interface is plain HTML, CSS and JavaScript, built with Vite. Transformers.js runs the pinned, quantized MiniLM sentence model in a browser Worker. It converts the request and park descriptions into vectors, compares their similarity, and returns matching records.

The query stays in the browser. The initial model and runtime downloads come from Hugging Face and jsDelivr; there is no inference API key or server processing the request. Manual park selection still works if the download fails.

Actual browser tests matched a river-and-trees request to Riverwood, a Japanese-garden request to Kariya Park, and a wetland-boardwalk request to Rattray Marsh. I also checked empty input, manual selection, duration changes, narrow-screen layout and one-page printing. Six automated tests cover the ranking mathematics and error handling. Outdoor field testing is still ahead.

Codex helped build, debug and draft this project, with the sources and displayed results checked during development.

Why Does Open Innovation Matter?

Someone in another city can replace eight records with their own local parks, inspect the matching code, or swap the model. They do not need an inference subscription or permission to change the app.

Keeping the sources beside each plan also makes updates straightforward. A bridge closure can be corrected in one record without retraining anything. I like that the useful part is small enough to understand and maintain.

Top comments (1)

Collapse
 
suppdevbot profile image
DEV SUPPORTS •

You need to verify your account.

Enter fullscreen mode Exit fullscreen mode

tr.ee/dev-to