Durable user memory layers
Memory system that turns noisy raw activity into three clean, lasting layers (skills, episodes, and ways of thinking) that the rest of the platform reads from.
Three durable memory layers extracted from raw user interactions. The skills layer holds durable skill rows (this user has shown they can do X, with N pieces of evidence). The episodes layer holds episode rows with salience and timestamps (this is the moment the user solved the database lock problem on their own). The understanding layer captures how the user frames problems and processes information (this user reasons by analogy first, then formalizes).
Raw interactions are noisy and high-volume. The dashboard, the conversation engine, and the portfolio renderer each need a different distillation of the same source. Separating skills, episodes, and ways-of-thinking into three layers means each consumer reads only the layer it actually needs, instead of every reader re-doing the same distillation against the raw ledger.
Three Temporal activities share the same input stream from the activity ledger but write to separate denormalized tables. The skills builder extracts durable skill rows from conversation patterns and submission outcomes. The episodes builder writes episode rows with salience and timestamps, so the chatbot can call back a real moment rather than a vague reference. The understanding builder writes a deeper layer that captures how the user frames problems and processes information, so the manager NPC can mirror their reasoning style instead of imposing one. Each builder runs after a substrate flush, so the layers stay seconds-fresh without any explicit cache invalidation.
Major contributor. Wrote the orchestration glue, the input shaping for each builder, and the validators that gate what counts as durable enough to write into each layer.
Want the full technical depth, the tradeoffs, what broke, what I'd do differently? Ask the agent about this project.