Case Study 01

My Notes Chatbot

Digitize handwritten journals, search them by content and date, and chat with them using an LLM with RAG.

My Notes Chatbot

ChatBOT with RAG // 2026

The What

I built an end-to-end pipeline that digitizes personal handwritten journals and makes them queryable via a custom RAG (Retrieval-Augmented Generation) Chatbot.

Phase 1 OCR Optimization - I iterated through different OCR engines, reducing the Character Error Rate (CER) from 22.7% to < 4%. The extracted text and metadata is store in SQLite, while using ChromaDB as a vector store to enable semantic search (search by meaning not just words).

Phase 2 Chatbot with RAG implementation - testing two distinct chatbot architectures: Local: Llama 3.1 8B running on macOS (M4) via Ollama and a custom Flask UI. Cloud-Hybrid: Gemini 3.1 Pro-Preview integrated through AnythingLLM.

The Gemini-powered setup provided the best reasoning and retrieval accuracy. By using the Gemini API with AnythingLLM, I maintained data privacy: all notes are indexed locally on my Mac, and only specific, encrypted text snippets are sent to Google’s API. In the paid tier, these prompts are excluded from model training.

Tools: Claude Code, Cursor

The Why

"If you would not be forgotten, as soon as you are dead and rotten, either write things worth reading, or do things worth writing"

I have several handwritten journals that store thoughts and memories of great moments through the years. Now I can chat about them with a Chatbot on my laptop, while still keeping them private. My notes are in both Portuguese and English and sometimes my handwriting is so bad I have a hard time understanding what I wrote, a problem that OCR solved!

TECH STACK

document_scanner

OCR

Gemini 3.1 Pro Preview via Gemini AI API

database

Database

SQLite (structured) + ChromaDB (semantic)

smart_toy

LLMs

Llama 3.1 8B via Ollama and Gemini 3.1 Pro Preview

chat

Chat UIs

AnythingLLM and Flask server

Handwritten page from my notes

Image 01. Handwritten page from my notes

Fig 02. Asking Chatbot about highlights of my Japan trip

Key
Learnings

01

LLM with RAG

Giving an LLM context specific to the task, in this case my handwritten notes

02

Running an LLM Locally

Using Llama 3.1 8B via Ollama, ensuring privacy when required

03

Using Skills with an Agent

Storing specific Skills files - in this case for access to updated API documentation

04

Using "local by default" tools for Chatbot with RAG

Experimented with AnythingLLM and Open WebUI

View the source on GitHub

Explore Repository