{"slug": "outingfold-a-pocket-field-guide-that-shows-what-gemma-left-out", "title": "OutingFold: a pocket field guide that shows what Gemma left out", "summary": "A developer built OutingFold, a browser-based field-guide tool that uses a local Gemma model (gemma4:12b-it-q4_K_M) to select excerpts from pasted park notes while displaying the source lines the model omitted alongside those it chose, requiring reader review before export. The app validates model-returned JSON selection IDs and sections, copies original substrings rather than generating prose, and disables exports until the reader confirms review. A first evaluation run recorded request times of 8.533 s, 10.835 s and 3.490 s, with the sparse-observation-notes case returning no selections and missing two relevant lines.", "body_md": "*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass](https://dev.to/challenges/hacktoberfest-week1-2026-10-05).*\n\nOutingFold turns park notes into a small field guide you can fold and take outside. Paste the source text, let local Gemma suggest useful excerpts, review the selection, then save an offline page or print it.\n\nThe card has places for practical details, things to look and listen for, cautions, and a detail you notice yourself. It is for a short visit where a few source excerpts would be useful and another open browser tab would not.\n\nThe difficult part was deciding what a model should be allowed to put on that page. A fluent summary can drop the second half of a warning. An exact quotation can do the same thing if it leaves out the next sentence. OutingFold therefore shows the lines the model left out alongside the ones it chose. Both need review before export.\n\n[Open OutingFold](https://hyunsikparker.github.io/outingfold/). No account or installation is needed for the recorded example or manual selection.\n\nClick **Try the park example**. This loads an actual saved response from `gemma4:12b-it-q4_K_M`, using nine excerpts from the National Park Service's [Theodore Roosevelt Island page](https://www.nps.gov/this/planyourvisit/things2do.htm). It does not run inference in the browser.\n\nThe response leaves the ranger-program paragraph out and puts two trail-surface descriptions under “Look and listen.” To try the review controls, add S2 and move S6 and S7 to “Plan the visit.” Read the remaining source lines, tick the review confirmation, and continue to the Save step to download or print. Those edits produce the example below; they are reader edits, not a better model response.\n\nThe downloaded HTML keeps all the pasted notes, including omitted excerpts, in an expandable section. It has no scripts or external assets. The printout keeps only the selected excerpts and space for handwritten observations.\n\n[Download that PDF](https://github.com/HyunsikParker/outingfold/raw/b4ee57827bf3a066f9f2e520f4499d3d95759487/media/reviewed-example.pdf). This is a browser-generated PDF, not a photograph of a field trial. I have not tested OutingFold outdoors or on a physical printer.\n\n[Source, setup and test records](https://github.com/HyunsikParker/outingfold) · MIT license\n\nThis is a new project begun on October 5 for Week 1. The app uses plain browser modules and a Node server, with no npm dependencies. To run fresh selections, install Node.js 22 or later and Ollama, then:\n\n```\ngit clone https://github.com/HyunsikParker/outingfold.git\ncd outingfold\nollama pull gemma4:12b-it-q4_K_M\nnpm start\n```\n\nOllama must be running. Open `http://127.0.0.1:4318`. The model download is roughly 8 GB; the recorded run used an Apple M4 with 32 GB RAM. Smaller machines have not been tested.\n\nEach source line gets an ID. Gemma reads those lines and returns a short JSON selection:\n\n```\n{\"picks\":[{\"id\":\"S6\",\"section\":\"plan\"},{\"id\":\"S9\",\"section\":\"care\"}]}\n```\n\nThat is an illustration of the format, not a recorded response. The actual prompt, schema and raw outputs are in the repository.\n\nThe application validates the IDs and sections, then copies the original substrings. It rejects unknown IDs, duplicate IDs and extra fields. There is no field for generated card prose. Length limits keep the selection small enough to review, and exports stay disabled until the reader confirms that review. Changing a source line or selection clears the confirmation.\n\nThe first completed evaluation exposed the gap between exact copying and useful selection:\n\n| Predeclared case | What happened | Request time | \n|---|---|---|\n| NPS park excerpts | Retained the selections required by the test | 8.533 s | \n| Synthetic closure and exception | Kept the restriction and its qualification | 10.835 s | \n| Sparse observation notes | Returned no selections and missed two relevant lines | 3.490 s | \n\nThe run stopped at that failure. A fourth, prompt-injection case was not run. One earlier request had been cancelled without a result. The [complete report](https://github.com/HyunsikParker/outingfold/blob/main/evidence/report.json) includes the failed case; these three examples are too few to estimate general accuracy.\n\nAll completed responses passed the source-copy check, but the empty response passed it by selecting nothing. That check alone would make a poor success metric. The interface now tells the reader when Gemma selects nothing and lets them choose from the unchanged source. It also leaves empty card sections explicitly marked as having no selection.\n\nNine software tests pass without running a model. They cover source copying, invalid selections, limits, HTML escaping, retention of omitted notes, and local API boundaries. Browser checks covered source edits, manual recovery, downloads, keyboard focus, 320 px and 390 px viewports, the three-step editor, and the one-page A4 example shown above.\n\nThe model runs on the reader's computer through Ollama. After downloading the weights, this selection step needs no hosted inference account or API key. The app sends notes only to its loopback server and local Ollama, which is useful when the notes contain private plans. The public demo does not send typed notes to a model.\n\nAn API could perform the same selection task. Running open weights locally gives this version control over where the notes go and avoids a per-request inference charge. The tradeoff is real: a large initial download, memory requirements, and speed that depends on the machine. This prototype uses one fixed model; changing it requires changing the code and retesting.\n\nThe prompt, validation rules, failed response and export code are available together. A reader can inspect why a line appeared on the card and repair a poor selection without waiting for another model call. The app's job ends when the reviewed page is saved. The blank fourth panel leaves something for the visit itself to supply.\n\n**Best Use of Gemma.** Gemma performs the local excerpt selection in the running app. The hosted example preserves one real response from the recorded evaluation.\n\n**AI assistance and sources:** I used OpenAI Codex to help develop the code and write-up. The woodland image was generated with GPT Image and is an illustration, not a photograph of the example park. Test results above come from the saved run and software/browser checks. The park example quotes NPS text, retrieved October 5; it is a collection of excerpts, not the entire page or a current conditions report. No claim to original U.S. Government works. OutingFold does not verify the source or plan a route; check hours, closures, weather and access before leaving.", "url": "https://wpnews.pro/news/outingfold-a-pocket-field-guide-that-shows-what-gemma-left-out", "canonical_source": "https://dev.to/hyunsik_park_7c24c2e4f4fc/outingfold-a-pocket-field-guide-that-shows-what-gemma-left-out-4n2c", "published_at": "2026-10-05 21:16:08+00:00", "updated_at": "2026-10-05 21:17:53.759450+00:00", "lang": "en", "topics": ["ai-tools", "large-language-models", "ai-products"], "entities": ["OutingFold", "Gemma", "Ollama", "National Park Service", "Theodore Roosevelt Island", "Hacktoberfest", "Node.js", "Apple M4"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/outingfold-a-pocket-field-guide-that-shows-what-gemma-left-out", "markdown": "https://wpnews.pro/news/outingfold-a-pocket-field-guide-that-shows-what-gemma-left-out.md", "text": "https://wpnews.pro/news/outingfold-a-pocket-field-guide-that-shows-what-gemma-left-out.txt", "jsonld": "https://wpnews.pro/news/outingfold-a-pocket-field-guide-that-shows-what-gemma-left-out.jsonld"}}