Playbook · proposal

Build a brain that gets smarter.

Most AI tutorials stop at the stateless briefing: read an inbox, summarize, repeat. This is the playbook for the next layer — a system that remembers, maps how everything connects, and improves itself from feedback. Part 1 is the methodology, buildable on any stack. Part 2 lands it on Open Brain. Part 3 stands it up on a machine you own.

A briefing bot is a function. A self-improving system is an asset that's worth more every day you run it.
Part 1 · stack-agnostic

The methodology

Three pillars. Miss any one and you're back to a briefing bot. Together they compound.

1

Persistent memory

A real database — not the context window — holding every fact, decision, source, and preference. It survives restarts and time. The model forgets; the store doesn't.

2

A relational graph

People, projects, tools, ideas, and the edges between them. This is what lets the system answer "what connects to what" and "have we done this before" — questions a flat list can't.

3

A feedback loop

Capture what landed and what didn't, turn it into rules and patterns, fold it back in. This is the pillar that makes the thing compound instead of plateau.

Why stateless briefings plateau

A read-email-and-summarize bot is exactly as good on day 100 as on day 1, because it keeps no state and learns nothing. The moment you add durable memory + relationships + feedback, day 100 is dramatically better than day 1 — and the gap widens. The asset isn't the code; it's the accumulated, connected, feedback-tuned data underneath it. Time becomes a moat you can't be shortcut on.

Build it on any stack

The pattern is portable. Minimum viable version:

The one rule Nothing is read-and-discarded. Every input becomes durable, connected state — and every output earns a feedback signal that sharpens the next one.
Part 2 · the proposal

Bringing it to Open Brain

Open Brain is further along than most people realize. It already has persistent Postgres memory, semantic search, and a real, typed, time-aware knowledge graph. The one pillar it hasn't closed yet is the self-improvement loop — the feedback signal that re-ranks what gets surfaced based on what actually worked. Here's the honest map, then the recipes, built in OB1's existing extension/recipe format.

✓ What OB1 already has — including the graph Persistent Postgres store · pgvector semantic search (1536-dim) · agent-memory schema · and a genuine knowledge graph across three pieces: Plus provenance-chains and an entity-wiki recipe that already renders pages from the knowledge graph. The graph isn't missing — it's good.
✗ The real gap: the feedback loop What OB1 doesn't have yet is a loop that captures outcomes — which surfaced memories actually got used, loved, or were wrong — and folds that back in to re-rank future retrieval. Extraction confidence isn't the same as usage feedback. Close this and OB1 stops being a (great) memory and starts being a system that compounds.

Recipe 1 — Traverse the graph you already have

Because OB1's graph lives in plain Postgres tables (thought_edges, edges, graph_edges), multi-hop "everything connected to X" is a recursive query — no new engine, no migration. This recipe ships the traversal helpers OB1 doesn't bundle yet, respecting the temporal-validity columns so decayed edges drop out automatically.

recipes/graph-traversal · difficulty: intermediate · requires: typed-reasoning-edges, entity-extraction

graph-traversal

Recursive multi-hop walks over OB1's existing typed edges — the "pull in everything connected" primitive, built on what's already there.

recursive CTEmulti-hop recalltemporal-aware
multi-hop traversal over the edges OB1 already stores
-- "Everything connected to a thought, up to 3 hops,
--  skipping edges that have decayed out (valid_until set)."
WITH RECURSIVE connected AS (
  SELECT to_thought_id AS id, relation, 1 AS hop
  FROM thought_edges
  WHERE from_thought_id = :start_id
    AND valid_until IS NULL
  UNION ALL
  SELECT e.to_thought_id, e.relation, c.hop + 1
  FROM thought_edges e
  JOIN connected c ON e.from_thought_id = c.id
  WHERE c.hop < 3
    AND e.valid_until IS NULL
)
-- DISTINCT ON keeps one row per thought at its nearest hop
SELECT DISTINCT ON (t.id) t.*, c.hop
FROM connected c
JOIN thoughts t ON t.id = c.id
ORDER BY t.id, c.hop;
Optional — Cypher ergonomics with Apache AGE If you ever want graph query syntax (Cypher) instead of recursive SQL, Apache AGE is a Postgres extension that adds a property graph in the same database — fully in line with OB1's "one database" philosophy. It's a nicety, not a foundation: OB1's graph already works without it. Project the existing entities/edges into an AGE graph only if the ergonomics are worth it to you.

Recipe 2 — The self-improvement loop

The genuinely missing pillar. A lightweight extension that captures a feedback signal on anything OB1 surfaces, writes it back, and re-ranks future retrieval + output.

extensions/feedback-loop · difficulty: intermediate · requires: open_brain

feedback-loop

One-tap feedback on any surfaced item → stored as a signal → used to re-weight retrieval and prompt the next pass. The thing that makes OB1 compound.

feedback capturere-rankingself-improvement
schema.sql — feedback signals folded back into memory weighting
CREATE TABLE IF NOT EXISTS feedback_signals (
  id            bigserial PRIMARY KEY,
  thought_id    bigint REFERENCES thoughts(id),
  signal        text NOT NULL,          -- 'used' | 'dismissed' | 'loved' | 'wrong'
  weight        real NOT NULL DEFAULT 1,
  note          text,
  created_at    timestamptz DEFAULT now()
);

-- A retrieval view that boosts what's worked before
CREATE OR REPLACE VIEW ranked_thoughts AS
SELECT t.*,
  coalesce(sum(f.weight) FILTER (WHERE f.signal IN ('used','loved')), 0)
  - coalesce(sum(f.weight) FILTER (WHERE f.signal IN ('dismissed','wrong')), 0)
  AS feedback_score
FROM thoughts t
LEFT JOIN feedback_signals f ON f.thought_id = t.id
GROUP BY t.id;
Why this one matters most Without it, OB1 is a great memory with a great graph. With it, OB1 becomes a system that gets better the more you use it — the difference between a filing cabinet and a colleague who learns your taste.

Recipe 3 — Hybrid recall (vector × graph × feedback)

Tie the three together: a retrieval primitive that blends semantic similarity (pgvector, already there), graph proximity (the traversal in Recipe 1, over edges already there), and feedback score (Recipe 2, the one new piece) into a single ranked context payload. This is the whole methodology expressed as one OB1 query path — and it's what turns "Open Brain" from a brain that stores into a brain that learns.

Part 3 · own the hardware

Or stand it up yourself

You don't need a cloud or any particular product to run this. The entire methodology fits on a single always-on computer you own — a Mac Mini in the corner, a spare laptop, a mini PC, even a Raspberry Pi. That's exactly how the system behind the daily briefs runs: a Mac Mini that never sleeps. Here's the blueprint, mapped to the three pillars.

The body
An always-on machineA dedicated computer that's always powered — a Mac Mini, mini PC, or spare box. It works while you sleep.
The heartbeat
cronThe built-in scheduler. Fires the ingest → update → improve → deliver loop on a clock. No orchestration framework required.
Memory
A local SQLite fileFacts, decisions, preferences, session logs — one file on disk you fully own. Pillar 1, no server.
Connections
A local graph storeA graph DB (or graph-style edges in SQLite) for "what connects to what." Pillar 2, running locally.
The brain
An LLM via APIThe reasoning layer is a drop-in. Swap models the day a better one ships — the data layer never changes.
The loop
A reach-you channelTelegram, iMessage, email — so it surfaces work and collects your feedback (Pillar 3) wherever you are.
The fleet
Agents as scheduled jobsEach a process with its own scope and local store, all sharing the one memory — so nothing gets scraped twice.

Why own the box

Your data stays homeIt never leaves hardware you control. No third party holds your memory.
No SaaS billNo per-seat pricing, no vendor that can deprecate or sunset it. It runs for the cost of electricity.
Always onIt works overnight and between your sessions — the compounding happens whether you're at the desk or not.
Model-agnostic & durableBuilt on primitives (cron, SQLite, files) that have outlasted every framework. Swap the brain; keep the body.
The point OB1 (Part 2) and a self-hosted box (Part 3) are two delivery vehicles for the same three pillars. Pick the one that fits — managed and shareable, or fully owned and private. The compounding asset is identical either way.