sandroid.dev
sandroid.dev

Journalling Workflow: Using LLMs to Organise My Notes

I find notes extremely helpful for day-to-day life and for organising projects and tasks. However, the problem with my notes is that my note taking platforms keep changing, and I keep scattering my notes across different tools and files. Google Keep, Apple Notes App, txt files in OneDrive, markdown files in GitHub repos, paper notes, sending emails to myself, sending whatsapp messages to myself, Obsidian, etc etc.

The tool I’ve liked most is jrnl - it is a CLI utility that allows you to write a command like jrnl "3D printing idea: pottery stamps" to quickly add a journal entry to a single .txt file. It’s great.

There’s a couple of issues with this workflow though:

1. I have to have a terminal open and type the command!

I generally do have a terminal open on my PC, but it’s still an extra bit of faff finding the right window and typing the command.

To solve this, I envisaged being able to press a global shortcut and have a small textbox pop up where I could just type the entry and hit enter to save it.


So I built jrnl-launcher, a small Python utility that runs in the background on Windows and gives me a global hotkey (Win + J) to instantly pop up a minimal entry window.

It works really well! And it’s helped me get into the habit of writing notes much more consistently. It still calls jrnl in the background with the actual note. Which might not be necessary, but I like the idea that the notes taken will be compatible with jrnl’s file format.

I’ve also added a feature to attach files to entries, which I think will be useful for keeping track of timelines and screenshots for projects.

2. Syncing notes across devices

I use both a PC and a laptop, and I want my notes to be available on both. I want to be able to swap between them at will.

To solve this, I’ve saved my jrnl file to OneDrive, so it stays in sync across both devices.

github would probably be more ideal and safer, but OneDrive was the easiest to use on my windows systems without any extra faff.

A problem that’s unsolved as of yet is syncing these notes to my iphone. TBD.

3. Keeping notes organised by project

So the above works great for quickly taking notes and keeping them in sync across devices, but what I end up is a big chronological dump of notes.

I’ve got lots of different projects on the go simultaneously, and I’d like each project to have it’s own notes file to keep track of progress and next steps etc.

To do that I could:

  • Manually open the correct notes file and take my notes there.

    That works okay, but it adds another piece of context switching which leads me getting distracted.

  • Periodically go through my journal and copy relevant notes over to the right project files.

    Absolutely not

  • Have someone else go through my journal and sort the notes for me.

    And that someone else is Gemini

4. Letting an LLM sort my notes with gemini-helpers

Gemini CLI is a great utility that’s helped me a lot for filesystem processes and rote things like troubleshooting python environment installations etc, which are always a massive pain to do manually when working with different machines and setups.

I recently learned that you can define custom commands for it, which are basically scripts that run in response to a specific gemini /command-name input. They can be a mix of natural language instructions and code, and you can pre-approve certain tool calls like cat, ls, ffmpeg etc which are safe.

As my first foray into this, I built a custom command that:

  1. Reads through my journal entries from the last month [or since the last time the tool ran]. jrnl entries are all timestamped, which makes this part easy.
  2. Looks at the directory structure of my projects folder to understand what projects I have on the go. Note: It might be useful to instead make this a separate command, and run this periodically instead of running it as part of this job each time. Or have this job trigger it itself as a sub-process?
  3. Matches entries to projects’ notes.md files based on natural language understanding(!!! This is the real use of the LLM)
  4. Copies the relevant notes to the right project files, preserving the original text and timestamps.

It’s a pretty sweet setup. And a great use of LLMs to do the drudgery of sorting and organising information for me, leaving me more time for doing things in the real world.