Trail Notebook: Birding Offline with BirdNET and Gemma A developer built Trail Notebook, an offline field journal that runs BirdNET bird-call detection and a local Gemma 3 4B model to turn trail recordings into Markdown journal entries with species tables, confidence scores, and timestamps. The pipeline processes audio locally via birdnetlib, avoiding uploads and per-request API charges, and the developer cautions that BirdNET detections can be wrong in noisy recordings and should be verified against the source audio. Description A local-first birding journal that turns trail recordings into BirdNET detections and AI-written notes, without uploading your audio. Post Content This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass https://dev.to/challenges/hacktoberfest-week1-2026-10-05 . Trail Notebook is an offline field journal for people who want to remember the sounds of a walk without spending the walk looking at a screen. The idea is simple: record birdsong while outside, put the phone away, and analyze the recording afterward. BirdNET identifies candidate bird calls. Then a local language model turns those detections into a short journal entry, saved as Markdown with a species table, confidence scores, and timestamps. The video walkthrough is in the project README https://github.com/Fiza-Naaz339/trail-notebook . birdnetlib , analyzes the selected recording locally. gemma3:4b . Recordings folder, or passed in batches. Journals are saved as Markdown files named from their recordings. Bird recordings and location details can be personal. Processing them locally means I don’t have to upload them to a service I don’t control. After setup, the workflow can run without an internet connection or per-request API charges. Using an open-weight model also gives me control over the writing step: I can change the model or prompt without replacing the bird-detection pipeline. The model helps organize the results; it does not determine what was actually present. BirdNET can misidentify calls, especially in noisy recordings. Confidence scores are useful context, not proof, so detections should be checked against the recording and the generated journal should be reviewed. The built-in demo uses sample detections to show the output format; they are not real field observations. The setup instructions and source code are in the GitHub repository https://github.com/Fiza-Naaz339/trail-notebook . To try the sample journal: python trail notebook.py --demo --no-llm To choose a local recording: python trail notebook.py --browse