Skip to content
William Peytz

2026 · Solo build · full-stack & AI

PeytzNotes.dk

An AI study assistant that turns five years of university notes into a searchable, connected, personalized knowledge base, with semantic search, cited chat, exam summaries, and auto-generated flashcards.

  • Next.js
  • FastAPI
  • pgvector
  • Supabase
  • OpenAI
  • Docker

Overview

PeytzNotes is the tool I wished existed during exam season. It ingests five years of my Notion notes from the BSc, embeds them, and turns them into a searchable knowledge base I can actually talk to, with every answer grounded in the original notes via citations.

The design point is selfish: this is built for one user (me), so the product can skip everything that makes general-purpose study tools mediocre (auth, multi-tenancy, sharing, payment plans, mobile support) and focus entirely on being useful for one person preparing for real exams.

What it does

  • Import. Notion exports get parsed and cleaned into structured notes with course and year metadata.
  • Search. Semantic and keyword search, filterable by course.
  • Chat with notes. Ask a question, get an answer plus the specific notes the answer drew from. Citations are non-optional.
  • Exam summaries. Pick a course, get a structured summary generated from your own notes for that course.
  • Flashcards. Auto-generated Q/A pairs from any selection of notes.

Architecture

Classic RAG pipeline, with the discipline of being honest about each stage:

Notion export → Parser → Chunking → Embeddings → pgvector

              User query → Retrieval → LLM → Response + Sources
  • Ingestion (Python). Parses Notion exports, cleans the text, chunks notes into retrieval-friendly pieces, generates embeddings, and writes everything to the database.
  • Backend (FastAPI). Endpoints for search, chat, summary, and flashcards.
  • Frontend (Next.js). Chat UI, search UI, filters, and a results display that always shows the source notes.
  • Database (Supabase Postgres + pgvector). Notes, chunks (with embeddings), and chat history.
  • Orchestration (Docker Compose). The whole stack (DB, ingestion, backend, frontend) comes up with one command.

Design decisions

  • Single-user by design. No auth flow, no row-level security gymnastics, no “share with classmates” feature. The product is better because it refuses to scale.
  • Citations required. An answer with no source pointers is not an answer; it’s a guess. The UI surfaces which notes were used for every response.
  • No fine-tuning. Pure RAG. Adding new notes is a re-ingestion away, not a training run.
  • Notion-first import. Five years of my actual notes already live in Notion. Designing for that reality matters more than supporting every possible source.