In Build

Memoato

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.

WaspReactPostgresHetzner

Personal software case study

The product bet

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.

Role
Founder and hands-on engineer
Period
2025 - Present
Stage
Live private beta, active development

Product loop

From public record to trusted input

  1. 01Capture a short natural-language note from the web app, an MCP client, or another trusted integration.
  2. 02Store the raw entry first, then extract structured facts with deterministic rules and a scoped AI fallback.
  3. 03Match confident facts to existing categories, keep uncertain material visible, and avoid silently inventing history.
  4. 04Turn accumulated entries into timelines, progress views, and useful recall without making dashboards the primary input model.

System shape

Simple boundaries, explicit sources of truth

Product app

Wasp and React for authenticated capture, timelines, category views, and account workflows

Source of truth

PostgreSQL through Prisma for users, raw entries, structured events, categories, and timestamps

Ingestion

Raw-first API pipeline with deterministic parsing, optional model fallback, and asynchronous processing

Integrations

Revocable, hashed API keys scoped to raw-entry writes, plus a private MCP bridge

Privacy

Cloud, encrypted-cloud, and local-first product modes kept as explicit user choices

Operations

Hetzner deployment behind Caddy and systemd, with GitHub Actions release automation

Engineering judgment

Decisions that keep the product legible

Raw before derived

The original note is stored before parsing begins. Structured events can be corrected or rebuilt without erasing what the user actually recorded.

Confidence is a product concern

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.

Categories are views

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.

Narrow integration access

MCP and automation tokens can write raw entries without receiving broad account access, and every key can be revoked or expired.

Current proof

What is already delivered

  • Natural-language quick logging with raw-entry preservation and asynchronous fact processing
  • Timeline, category, goal, chart, ordering, and human-readable daily summary views
  • Deterministic parsing plus optional AI-assisted extraction with unmatched notes retained
  • Scoped API keys and MCP ingestion for low-friction logging from trusted tools
  • Email and Google authentication, privacy modes, PWA support, and Hetzner production deployment

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.