A scheduled agent that reads every recorded conversation end to end, writes sourced entries into a Notion knowledge base, and hands back a ranked digest of what needs attention.
An orchestrator that routes and writes, readers that only read, and no arrow into a task database — the absence is the claim.
The interactive data-flow diagram is built for a larger screen.
Open the full diagram in its own tab ↗
Around three hours of recorded conversation accumulate per working day — decisions, figures, disagreements, commitments — and none of it is retrievable later without someone doing the reading. Doing that reading by hand is not a job anyone does twice. The engine exists so the record gets built whether or not there was time to build it, and so the person who was actually in the room can spend their attention on what changed rather than on transcription.
On a fixed schedule it reads an operational-state note for its marker and rules, pulls every recording since the last run with a deliberate one-day overlap, and dispatches one subagent per recording. Each subagent reads that transcript to verified full coverage and returns a structured extraction — coverage count, structural findings, figures, apparent contradictions tested against what the note base already believes, a routing suggestion, and a sensitivity assessment by category only. The orchestrating session never reads a transcript itself; it holds the note-base context and does all the writing. It then routes findings to existing note containers, commits dated entries with full provenance, and advances its marker only when every recording in the window is accounted for as noted, deliberately skipped with the category recorded, or explicitly blocked with the file identifier named. The run ends in a digest: a task list ranked by leverage rather than urgency and capped at eight items, each with a source link and a suggested container, plus a standing section for non-events — expected things that failed to surface, which turned out to be the highest-yield thing it does. A separate weekly pass consolidates for quality rather than coverage and closes with two to four specific calibration questions. It writes zero tasks. Everything actionable is a proposal a human accepts or ignores. There is no repository and no server: the engine is a prompt, versioned as markdown.
A window that could not be processed, and the ceiling that came out of it. A three-and-a-half-week gap produced a window of 36 recordings — roughly 33 hours of audio — that was structurally unprocessable in one session. Not slow: impossible. That failure produced the rule that governs everything now: a window never exceeds a week, and anything past about ten recordings is batched from the outset, with the batching announced before starting rather than discovered halfway through. The subtlety that cost more time afterwards was a wording defect in the rule itself. It says pulls run "at most weekly," which reads as a frequency ceiling and would forbid the three-times-weekly cadence that is actually correct. It is a window ceiling. The rule now carries an explicit note saying so, because two separate runs argued themselves into the wrong reading.
Transcripts are enormous and mostly not durable; extractions are small and entirely durable. That sentence is the architecture. A single four-hundred-segment recording will not coexist in a context window with the note-base knowledge needed to route it well, and an agent that reads blind reports content while missing significance — it sees what was said, and not that it contradicts something the base has believed since March. The resolution inverts the usual pattern: the main session never reads, and one subagent per recording reads to full coverage with the surrounding note-base context in hand, returning a structured extraction rather than a summary. It carried 21 recordings at verified 100% coverage in a single session. Coverage is verified rather than claimed because the transcript call returns a total, which makes full coverage a checkable arithmetic statement. The pagination cursor is a base64-encoded offset that has to be computed, and a cursor shape documented in an earlier reference file turned out to be a corrupted placeholder that is not valid base64 for any offset — which is a memorable way to lose an afternoon.
Two identical-looking failures needing opposite handling. An empty result from the recording platform has two causes. If the underlying source list is populated but the summary has not been built, that is processing lag and the correct move is to re-pull later. If both the source list and the note list are empty, the recording was never transcribed, is unreadable by any agent at any depth, and the correct move is to record it as blocked, name the file identifier, and exclude it from coverage so it never silently counts as read. The trap is that on a same-day recording, a build that has not started yet looks exactly like one that permanently failed. Solved by treating the never-transcribed signature as provisional on same-day recordings and re-probing next run — which the deliberate one-day window overlap already does for free. Validated end to end: one file was recorded provisional at three hours old and confirmed dead at five days.
The failure that nearly poisoned the record was about time, not volume. Recordings must be ordered by timestamp rather than date, and same-day recordings must be read as a set before anything from any of them is committed as a decision. Two back-to-back recordings from one afternoon reached different conclusions about the same decision. On another day, a group discussion settled a question that a one-to-one an hour later reopened with a different proposal. Reading either in isolation produces a confident, sourced, wrong record — and the signature of the failure is always a confident claim about when a thread started or stopped. Seven of nine known instances were split days: one recording processed, its sibling not. The danger is never the recording you read badly. It is the sibling nobody read.
Every digest carries a standing section for expected things that failed to surface. It turned out to be the highest-yield thing the engine does. Above it, the task list is ranked by leverage rather than urgency and capped at eight, with the number cut stated out loud.
The recording platform returns a total segment count with every transcript, so a reader paginates until segments read equals that total. Full coverage becomes an arithmetic statement rather than a promise, and a recording that was never transcribed is recorded as blocked instead of silently counted as read.
This is the scheduled writer. The store it writes into, and the protocol that governs every write, is its own project: Durable Memory.