This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
My first idea for this challenge was a lamp that lights up when the weather is nice enough to go outside. I dropped it halfway through planning, because getting people outside isn't really the problem.
People already go out. Look around any park or café: half of them are filming reels, checking how the story looks, scrolling while they walk. They're outside, but they're still on the screen.
And I get why. A lot of that phone use comes from a real want: to remember the moment, to make something out of your day. The phone is just the only tool most of us have for that.
So instead of pushing people out the door, Field Notes gives that urge somewhere else to go. You don't film the bird, you say "there's a bird." You don't post, you just talk. And at the end of the day you still get something made from your outing, a journal entry, written for you and not for an audience.
What I Built
Field Notes is a screen-free voice journal. While I'm outside, I press a button on a small homemade recorder and say whatever I notice: "pretty bird out here, gonna get a salad." My phone stays in my pocket the whole time. When I get home, a local app on my laptop transcribes the notes with Whisper, and Gemma 4 turns them into a short journal entry for that outing, with a nudge for next time and a weekly recap.
It also comes with a weather alarm, which tells the user if its a good time to touch grass.
Nothing leaves my laptop. No account, no cloud, no internet needed.(except for weather data if the user wants it)
Code
AryanGarg-beep
/
touch-grass
Field Notes: a pocket voice recorder (Pico 2 W) and an offline journal app (Whisper + Gemma)
Field Notes
A pocket voice recorder for going outside with your phone put away, and a laptop app that turns what you said into a journal.
The recorder is a Raspberry Pi Pico 2 W with a microphone and one button: press to start a note, press again to stop. Back home, the app copies the notes off, transcribes them with Whisper, and has Gemma (through Ollama) write a journal entry for each outing and a weekly recap. Everything runs on your laptop.
What's here
fieldnotes/
app.py the laptop app (a small local web server + window)
ui.html its interface
fonts/ bundled fonts (SIL OFL), so the app loads nothing from the internet
install_launcher.sh adds Field Notes to your app launcher
recorder/main.py the Pico firmware
record_test.py 5-second mic test for the Pico, to check the wiring
The recorder
- Raspberry Pi Pico 2 W running MicroPython
- Electret mic, amplified by one…
How I Built It
Parts used for the recorder:
- Raspberry Pi Pico 2 W running MicroPython
- An electret mic capsule I found in my parts box
- A 2N2222 transistor as a one-stage amplifier (2.2k mic bias, 4.7k collector, 470k feedback, 1 µF coupling cap)
- One push button, the onboard LED, a power bank
It records at 8 kHz and stores each note as 8-bit µ-law, which keeps about 14 bits' worth of dynamic range in half the space. The Pico has roughly 5 minutes of storage, and a note can be up to 30 seconds (it has to fit in RAM before saving). Each note is logged with the seconds since power-on, so the journal can say "12 minutes in" even though the Pico has no clock.
It was exam week and nothing could be ordered in time (5-day delivery), so everything is built from what I already had, plus one 1 µF capacitor from a local shop.
Getting the recording right was the hardest part. Initial readings capped out at a few milivolts, which meant my voice was drowned by the electrical noise. The 2N2222 helped fix that.
The noise was still bothering me a lot.
This is a comparision with different power inputs. Notice all that static noise? That mean't that barely anything i was saying was getting through. Whisper needed quiter audio. Luckily, the Raspberry has a modulated 3v3 output, which reduced the noise by half, enough for the models.
Ollama setup with gemma4 was quite easy. It is whats used for transcribing. The user gets the option to choose between models they have installed. The app autodetects new models pulled by ollama. Whisper also provides the same options-The user can choose which model they want for maximum clarity.
The model is responsible for interpreting the data from whisper, generating tips, weekly blog, and figuring out if the data from SerpAPI is good enough to touch grass.
There is also a SerpAI integration for periodic weather checks. A bit of motivation to "Touch grass" when it detects the weather is good. User can use their Pincode or city to set the location.
Why Does Open Innovation Matter?
A diary is about the most private thing you can write. Your thoughts, where you went, how you felt, in your own voice. With open models running locally, none of it leaves my laptop. I wouldn't want to send voice recordings of my walks to a company's server, and with this setup I don't have to.
It works offline and costs nothing. No API key, no subscription, no usage limits. After the one-time model download, it runs with Wi-Fi off.
Only thing needing wifi is the weather alarm, which is optional.
I can pick the model that fits. On my laptop (32 GB RAM, no dedicated GPU), I switch between Gemma 4 E2B, E4B and the 26B mixture-of-experts model from a dropdown, trading speed against writing quality. With a closed API, that choice isn't mine.
It's mine to change. I can rewrite the prompt, swap Whisper sizes, or (next) fine-tune a model on my own entries so it writes the way I do. None of that requires anyone's permission.
Trying it out
Got a lot of looks walking around with whats essetially a recorder without bodywork, I sucessfully took a couple tours of the campus and some tests in my room.
A video of me using it around campus
Prize Categories
Best Use of Gemma - Its the backbone of the project. Every decision is taken by this model.
Best Use of SerpApi - Thought I could sneak this in, with my weather report.






Top comments (1)
tr.ee/dev-to