Product app
Wasp and React for authenticated capture, timelines, category views, and account workflows
I am building Memoato as a low-friction personal memory system: capture a real-life note in natural language, preserve what was actually said, and turn the useful parts into structured history without forcing life into a spreadsheet first.
Personal software case study
Most tracking tools make the user choose a category, form, unit, and exact structure before recording anything. That friction is especially expensive on busy days, which are often the days worth remembering. Memoato has to accept imperfect input quickly while keeping the raw record, derived facts, privacy choices, and later corrections understandable.
Product loop
System shape
Wasp and React for authenticated capture, timelines, category views, and account workflows
PostgreSQL through Prisma for users, raw entries, structured events, categories, and timestamps
Raw-first API pipeline with deterministic parsing, optional model fallback, and asynchronous processing
Revocable, hashed API keys scoped to raw-entry writes, plus a private MCP bridge
Cloud, encrypted-cloud, and local-first product modes kept as explicit user choices
Hetzner deployment behind Caddy and systemd, with GitHub Actions release automation
Engineering judgment
The original note is stored before parsing begins. Structured events can be corrected or rebuilt without erasing what the user actually recorded.
A plausible parse is not automatically a fact. Confident matches can become events; uncertain notes stay visible instead of being forced into the wrong category.
Goals, charts, and category pages remain useful, but capture starts with the user's words rather than requiring the user to navigate the data model.
MCP and automation tokens can write raw entries without receiving broad account access, and every key can be revoked or expired.
Current proof
Next proof
The next step is to make recall as useful as capture: improve correction flows, alias memory, provenance for derived facts, and summaries that help without pretending the system knows more than the underlying entries support.