This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
Most outdoor AI apps do the exact opposite of touching grass: they trap your attention behind an augmented camera viewfinder or buzz with continuous notifications.
Paper Trail turns the screen into the shortest part of the experience. It is a local-first walk generator that builds a calibrated loop route from OpenStreetMap data, extracts verified real-world points of interest (trees, water, shrines, historic markers, benches), synthesizes multi-sensory observation prompts (look, listen, count, touch, sketch) with an open LLM, and compiles an ink-friendly, monochrome PDF pocket card.
You enter a start point and your available time budget (30, 45, or 60 minutes). You click print, slip the folded card and a pencil into your pocket, and leave your phone at home.
Demo
- Repository & Code: github.com/SynthReaper/ghw-hacktoberfest26/tree/main/paper-trail
-
Local Web UI & Field Cards: Check the
/examplesfolder in the repository for compiled vector PDF cards (cubbon_park_calibrated.pdf) ready for A4/A5 printing.
Code
MLH x Hacktoberfest Challenge Projects (2026)
Workspace containing hackathon projects for DEV Hacktoberfest Challenges.
Projects
-
paper-trail/: Paper Trail — Offline Local Walk Generator & Analog Field Card (DEV Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass).
The complete codebase lives under /paper-trail:
-
ingest.py: Overpass spatial ingest, POI extraction, and offline cache loader. -
route.py: NetworkX walkable graph builder with perimeter-calibrated loop routing. -
facts.py: Strictly typed, isolated fact records containing verifiable map ground truth. -
clues.py: Sensory observation generator with a strict programmatic Anti-Hallucination Validator. -
render.py: ReportLab monochrome vector field card PDF renderer. -
cli.py: Unified offline/online CLI tool. -
tests/: Pytest suite verifying routing boundaries and validator edge-case rejections.
How I Built It
The Core Architectural Invariant: The Model Never Owns Facts
When language models generate exploration clues, they inevitably invent nonexistent landmarks—hallucinating a "banyan tree next to the temple" where none exists.
Paper Trail eliminates this through a strict architectural rule: Code selects the facts; the model only phrases them.
-
Deterministic Graph Loop:
route.pybuilds a walkable pedestrian graph from OpenStreetMap ways and solves a loop through 4–7 spatially diverse POIs. It dynamically scales the perimeter radius to calibrate total walking distance to within ±15% of the walker's target duration (at 4.5 km/h). -
Fact Isolation:
facts.pypackages each stop into a minimal, whitelistedFactRecordcontaining only verified tags, compass bearing, and distance in meters. -
The Anti-Hallucination Validator: Every clue generated by Gemma (via local Ollama inference) passes through an automated rule engine:
- Rejects unverified proper nouns not present in the OSM tags or navigation stopwords.
- Rejects unverified biological species (e.g., claiming "oak" or "pine" when the map only tags
natural=tree). - Rejects unverified metrics and numbers.
- If an open model fails validation across 3 retries, Paper Trail deterministically falls back to a fact-grounded template and logs the rejection to
runs/<id>_clues.jsonl.
-
Physical Vector Card:
render.pycompiles an ink-friendly, high-contrast monochrome PDF featuring a topological route polyline, numbered waypoints, north indicator, sensory prompt badges, and physical pencil boxes for notes and field sketches.
Why Does Open Innovation Matter?
- Zero Location Data on Remote Servers: Where, when, and how you walk is sensitive personal telemetry that should never leave your hardware. Because Paper Trail uses open-weight models (Gemma) and local OSM extracts, not a single byte of coordinate data or personal habits is sent to third-party cloud APIs.
- True 100% Offline Capability: Using bundled OSM extracts, Paper Trail generates routes, evaluates spatial graphs, and generates observation prompts on a laptop with Wi-Fi completely disabled.
- Auditability & Grounding: With proprietary APIs, guardrails are opaque black boxes. With open weights and local code, we can inspect every token, measure latency, track hallucination rates, and prove that map truth is strictly enforced.
Prize Categories
- Best Use of Gemma: Used Gemma as the local open-weight clue generation model, with low-temperature structured JSON prompting and strict validator enforcement.
- Best Use of Entire: AI agent pairing and architecture session tracked with DevRelay.
Top comments (0)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.