This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass.
What I Built
“I should go outside” can turn into another half-hour on a screen: searching places, comparing reviews, checking opening hours, and wondering whether the trip fits the time available.
Outproof turns that decision into one outing, with proof before GO.
It is for someone with limited time, a budget, and real constraints. You choose your starting area, available time including the return journey, budget, walking limit, and hard rules. You can search a public landmark, select a point on the map, or use your current location.
A successful compilation gives you:
- One plan that passes the hard checks.
- Plan Proof: the sources and calculations supporting it.
- GO: one next instruction, with Next and Back controls.
The product is designed to end the search and make the screen a smaller part of going outside. Whether it achieves that during actual outings still needs field measurement.
Its governing rule is:
LLMs interpret. Data grounds. Code verifies.
Gemma interprets what you mean. Source data supplies the facts. Deterministic code decides whether the outing satisfies your limits.
When those facts are missing, Outproof returns a specific refusal. It does not turn uncertainty into a confident itinerary.
Demo
Watch the 73-second recorded demo · Direct video
The recording shows the actual public application: constraint intake, an accepted plan, its proof, and the GO loop.
For the reviewed example, choose the labelled Chandigarh walking start. Compilation checks the venue’s applicable hours and current source availability.
Current reviewed live coverage consists of four venue corridors:
- Shanti Kunj, Chandigarh.
- Terraced Gardens, Chandigarh.
- Cubbon Park, Bengaluru.
- Singapore Botanic Gardens, Tanglin entrance and main grounds.
These are scoped garden walks. Food, purchases, parking, and optional paid attractions are excluded.
Worldwide location search is available; verified outing coverage remains limited to reviewed evidence. If a route cannot begin at your selected point, the app may offer a nearby mapped start for explicit selection. Travel to that new start is unverified and excluded, and accepting it requires a fresh compilation.
Availability note: inference runs on my laptop through an authenticated temporary tunnel. The laptop must remain awake and connected. Free-hosting cold starts and upstream outages can also interrupt compilation. The recording demonstrates software execution; it contains no physical field outing.
Code
Outproof
One outing. Every limit checked. An open-weight Gemma outing compiler for Touch Grass.
Open Outproof · 73-second public Outproof execution recording · Production API.
Reviewed live support includes Singapore Botanic Gardens/Tanglin and mapped pedestrian corridors at Shanti Kunj and Terraced Gardens, Chandigarh, and Cubbon Park, Bengaluru. Official venue admission/hours, exact OSM access geometry and independent Valhalla round trips ground main-ground walks. Cubbon's general grounds close Mondays and second Tuesdays; the checked path excludes the mapped High Court grounds. India mapped access is not physically checked. The actual 100-area India baseline accepted zero plans; these narrow repaired corridors do not establish broad coverage. See India execution evidence.
Anna Nagar's previous accepted result was withdrawn: a civic listing and general schedule do not prove zero admission or venue-specific hours. The correct area is 57,927 m² (~14.31 acres). See release evidence audit.
Core law: LLMs interpret. Data grounds. Code…
Explore the repository, including the implementation, deployment configuration, architecture decisions, and release evidence.
Application source is MIT licensed. Model weights, map data, and audio retain their separate terms and attribution, documented in NOTICE.
How I Built It
The implementation combines a React frontend, a FastAPI backend, local Gemma inference, and a deterministic Python verification layer.
Gemma has two bounded jobs.
First, it parses fuzzy language into typed hard constraints and soft preferences. Second, it ranks plans that have already passed validation. Structured model responses are schema-checked before use.
The deployed API reaches gemma4:e2b-it-qat through Ollama, running on an RTX 3050 laptop with 4 GB of VRAM and CPU/RAM assistance. An authenticated backend proxy protects inference access, and credentials remain server-side.
Gemma does not supply venue facts, calculate prices, or override failed checks.
The grounding pipeline supplies the operational evidence.
Photon and OpenStreetMap resolve starting locations and mapped identities. Reviewed official visitor sources supply admission and opening information. SerpApi assists with discovering official source links; search snippets do not become authoritative venue facts.
Valhalla independently calculates outbound and return walking legs. The validator checks currency-safe costs, the complete trip duration, opening intervals, walking limits, evidence freshness, and hard exclusions.
Only surviving plans reach the ranker. The successful response contains exactly one.
Real execution exposed defects that passing controlled tests had missed.
One routing audit found that a provider echoed the requested coordinate while its actual path began about 21 metres away. That missing connector had no verified travel time. I withdrew the whole-trip claim and added validation against the actual route geometry.
The resulting recovery requires an explicit choice of a mapped start and recompilation with the same limits. Public Bengaluru and Singapore recovery runs are recorded in the repository.
Another public run reached a valid plan but failed immediately on GO because the browser clock lagged behind the API. The frontend now uses server-owned response time to evaluate freshness conservatively. The freshness and return-deadline limits stayed intact, and the original failed run remains recorded.
Public browser checks also exercised the complete intake → proof → GO → Next/Back journey using Tab, Enter, and text typing. Responsive layouts were checked at widths from 320 to 1440 pixels.
Deployment checks exercise behaviour, not just a health endpoint.
GitHub Actions runs locked builds, contract and policy checks, malformed-model and missing-evidence regressions, browser journeys, dependency audits, and secret scanning.
A separate production workflow verifies an actual accepted public compilation and expected refusals for incompatible constraints. Controlled tests and live-provider results are reported separately.
Sentry adds technical tracing without recording private prompts or raw location history. One retained production trace measured approximately 6.46 seconds for the HTTP request, including 3.08 seconds for grounding/validation and 1.63 seconds for Gemma ranking. That is one observed request, not a latency benchmark. Inspect the sanitized trace.
The remaining limits are documented.
The live campaign across 100 original India starting points produced no accepted outing: 76 typed refusals and 24 provider failures. Potheri remains unsupported. Broad India coverage is unfinished.
Three physical India field trials remain UNEXECUTED, and physical screen ratio is unmeasured. Source-backed software checks do not certify physical access or personal safety.
The release handoff preserves both successful execution and unresolved failures.
Why Does Open Innovation Matter?
Local open-weight inference made this project possible on hardware I already had.
I could run Gemma, revise its parser and ranker contracts, inspect their outputs, and test the deployed API against the same local runtime. The verification rules remain independent of the model, so changing inference does not require handing arithmetic or evidence authority to it.
OpenStreetMap and Valhalla also make the geographic layer inspectable. When a route started away from the chosen pin, the underlying geometry gave me something concrete to investigate and correct.
The practical value is control over the boundaries: which facts the model may interpret, which sources establish evidence, and which rules code must enforce.
The complete application still needs network access for fresh sources and routing. Local inference gives me ownership of the model runtime; it does not make the whole product offline or continuously available.
My Agent Session
AI-assisted development included a real GitHub Copilot CLI review of the parser, ranker, and their callers.
The review identified a dietary-negation defect: phrases such as “I’m not vegan” could be mistaken for a hard dietary requirement. That finding informed a correction, regression checks, and actual authenticated Gemma parser verification.
Read the sanitized Copilot review session.
I also captured that genuine exported session with Entire. Automatic capture did not work for the noninteractive review, so I used its supported manual attachment workflow. The partner evidence ledger records the checkpoint and this limitation.
Prize Categories
I am entering the Best Use of partner categories for the following technologies:
| Technology | Executed contribution |
|---|---|
| Gemma | Local open-weight constraint parsing and ranking of validated plans. |
| Render | Public HTTPS frontend and production API deployment. |
| Sentry Agent Tracing | Observed production grounding and Gemma-ranking spans, with sanitized timing evidence. |
| SerpApi | Authorized live discovery of official source links used in grounding. |
| ElevenLabs | Generated and tested an optional spoken GO cue, with attribution. |
| GitHub Copilot | Actual CLI defect review that informed a parser correction. |
| Entire | Manual capture of the genuine development review session shared above. |
The evidence ledger distinguishes runtime integrations from development tools and records unsuccessful attempts. Category eligibility remains subject to judging.
Top comments (1)
tr.ee/dev-to