This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass.
OutingFold 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.
The 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.
The 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.
Open OutingFold. No account or installation is needed for the recorded example or manual selection.
Click 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. It does not run inference in the browser.
The 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.
The 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.
Download that 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.
Source, setup and test records · MIT license
This 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:
git clone https://github.com/HyunsikParker/outingfold.git
cd outingfold
ollama pull gemma4:12b-it-q4_K_M
npm start
Ollama 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.
Each source line gets an ID. Gemma reads those lines and returns a short JSON selection:
{"picks":[{"id":"S6","section":"plan"},{"id":"S9","section":"care"}]}
That is an illustration of the format, not a recorded response. The actual prompt, schema and raw outputs are in the repository.
The 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.
The first completed evaluation exposed the gap between exact copying and useful selection:
| Predeclared case | What happened | Request time |
|---|---|---|
| NPS park excerpts | Retained the selections required by the test | 8.533 s |
| Synthetic closure and exception | Kept the restriction and its qualification | 10.835 s |
| Sparse observation notes | Returned no selections and missed two relevant lines | 3.490 s |
The 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 includes the failed case; these three examples are too few to estimate general accuracy.
All 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.
Nine 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.
The model runs on the reader's computer through Ollama. After down 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.
An 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.
The 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.
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.
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.