Update (2025-03-12): After some additional research and reflection on the motivations of commercial AI companies, I’d approach building this differently if I were starting from scratch today.
The main difference is that I would use a locally run and sandboxed LLM to transcribe and format the journal entries, using a tool like LM Studio or the like to house the LLM and a tool like Daniel Mieesler’s fabric and/or a self-hosted n8n instance to house workflow.
One piece of media that inspired this change was the “You Are Witnessing the Death of American Capitalism” video—particularly its section on sentiment analysis and its potential interplay with the interests and motivations of consumer LLM providers.
I encourage you to also consider the tools you’re using, and the motivations of their providers.
Ōs, –Jamey
Journaling has been an invaluable habit for my self-reflection, organization, and mental clarity. But keeping up with daily journal entries can be difficult when life gets busy (or I just don’t have time to sit down at my desk).
To address this, I built an automated workflow that allows me to capture voice notes on the go, transcribe them into text, format them into structured journal entries, and store them in my Notion database—all without requiring manual intervention.
To do this, I built a system that uses:
- n8n – an automation tool that connects services and triggers workflows
- Notion – a database to store and organize journal entries
- OpenAI Whisper API – a speech-to-text tool for accurate transcription
- OpenAI GPT Assistant – an AI model that formats the raw transcription into a structured journal entry
Now when I use this workflow, journaling becomes seamless (even on the busiest days).
Here’s how I built it, how you can replicate it, and potential improvements for future versions.
Step 1: Identifying the Problem and Solution
Before jumping into automation, it’s essential to define the problem clearly and break down a solution that meets practical needs.
The Problem: Journal writing is time-consuming
On some days, I don’t have the time or ability to sit down and type out a journal entry. But I still want to capture my thoughts, reflections, and priorities for the day.
The Solution: Voice notes as journal entries
Instead of skipping journaling entirely, I can record a quick voice note using my phone. Then, an automated system will:
- Capture the voice note and use it as a trigger
- Transcribe the voice note into text
- Format the text into a structured journal entry
- Save the formatted entry into my Notion database
With this approach, I ensure that all journal entries—whether typed or voice-recorded—are stored in one place. That way they’re not scattered about when I want to review and reflect.
Step 2: Structuring the workflow for automation
To implement this idea, I need to create a workflow diagram that outlines the process from start to finish.
Why a workflow diagram matters (to me)
As I build, a clear workflow diagram helps me:
- Prevent unnecessary complexity
- Ensure that each step is logically connected
- Make implementation easier by breaking down the process into small, manageable tasks
Quick note: Workflow diagrams are also known as flowcharts! I didn’t know that until editing this post.
High-level overview of the workflow
- Trigger: A voice note is added to my Notion database.
- Processing: The audio file is retrieved and sent to OpenAI Whisper for transcription.
- Formatting: The transcribed text is processed by a GPT Assistant to structure it into a journal format.
- Storage: The final journal entry is saved in Notion for easy access.
With this structure in place, I’m ready to start building the workflow in n8n.
Step 3: Implementing the workflow in n8n
Setting up the trigger
The workflow begins when I upload a voice note to Notion. n8n monitors my Notion database for new entries and automatically triggers the next step when a voice note is detected.
Retrieving and processing the voice note
When n8n notices a new file, it kicks off the next step which is to:
- Retrieve the audio file from Notion
- Download the file using an HTTP request (since Notion’s API had issues with direct downloads when I built this)
Transcribing the voice note with OpenAI Whisper
Next, I want to create a high-quality transcript. I went with OpenAI’s Whisper for this (partially to learn about using non-text to prompt an API).
I decided to use Whisper over other transcription tools because it:
- Supports multiple languages and accents
- Accurately transcribes proper nouns and technical terms
- Produces high-quality transcriptions
And as I go, I’ll want to take a few considerations into account:
- Whisper API has a file size limit of 25MB → Voice notes should be kept short
- File format compatibility → Use MP3 or WAV for best results
Once transcribed, the raw text transcript now needs to be formatted into a structured journal entry.
Step 4: Formatting the journal entry with AI
Next I’ll go from a somewhat-structured blob of thought to a more strictly structured format: my journal entries. For sake of simplicity, I’ve used a pared down version for this build. I can always update it in the future.
Defining the journal entry structure
To maintain consistency, I use a standard template for my journal entries:
- Gratitude – Things I’m grateful for
- Top Three Priorities – The 3 key tasks for the day
- Reflections – Recently notable thoughts and experiences
- Lessons Learned – Takeaways from the previous day
Building an AI assistant to format the journal entry
Even with a clear structure, AI needs clear instructions to process text correctly. To ensure accuracy, I created a system prompt for my GPT Assistant.
The prompt includes:
- A role definition → “You are an expert transcript editor…”
- XML tags to structure input and output
- A strict rule → Never fabricate missing details
AI prompting (often referred to as prompt engineering) is its own skillset. I know I can improve this prompt later, but for now these core rules do the trick!
Integrating the Assistant into the workflow
After defining the prompt, it’s time to add the Assistant into the workflow. To do this I:
- Create an Assistant in OpenAI
- Upload the system prompt and journal template
- Connect the assistant to n8n for automated processing
If everything’s working correctly so far, I should get a formatted and accurate journal entry as output from running all the steps up to this point.
Step 5: Saving the journal entry in Notion
Handling the Notion API’s character limit
Notion’s API limits blocks to 2,000 characters per entry. I still don’t understand why this is—but I don’t have to understand why a boulder’s in the road to know I want to find a way around it.
Solution:
- The workflow runs a fairly long sub-workflow to split long journal entries into multiple blocks.
Final Steps in n8n
To finish the workflow, I now want to push everything into the same Notion database! To do this I:
- Save the formatted journal entry in Notion
- Update the original voice note’s status to “Logged” to prevent reprocessing
Step 6: Testing and validating the workflow
Finally (and to ensure reliability) I tested the system with multiple voice notes. Aside from a few workflow runtime limits, everything went as expected!
Future Improvements
As I use this workflow more day-to-day, it could evolve in some useful ways. Here’s what I foresee:
Enhance AI accuracy
- Fine-tune prompts to handle different speaking styles
- Improve how the AI handles missing journal sections
Expand workflow triggers
- Enable WhatsApp, Slack, or Discord voice notes as inputs
- Automate file uploads without requiring Notion
Improve formatting and usability
- Enhance markdown rendering in Notion for better readability
- Experiment with visual journal layouts
Add advanced AI features
- Sentiment Analysis → Detect mood and emotional tone
- Feasibility Check → Evaluate whether daily priorities are realistic and suggest modifications
Final Thoughts
This automated journal transcription workflow ensures that I never miss a journal entry, even on my busiest days. The system:
✅ Saves time compared to manual transcription
✅ Ensures consistent formatting for better reflection
✅ Stores journal entries in Notion for easy access
If you were to build a similar system, what features would you add?
Share your thoughts by commenting on the core content—the video linked at the top of this page!