A capture arrives from a phone, a chat app or a folder. It's read — handwriting, speech, PDFs — classified against a vocabulary that changes, and drafted into a finished note. A person approves it. It's filed as plain markdown, embedded, clustered into topics, and served as a browsable 3D map, with a content-hashed mirror into Postgres running nightly underneath. Thirteen of the 516 nodes are a language model.
Two engagements: a personal knowledge system, and an organisational signal layer. Neither client is identified and no instance is reachable from here. Every diagram is the real canvas — positions and wiring read off the platform, not redrawn — and node descriptions marked • are the builder's own comments rather than anything written for this page.
Six stages. Each one is a separate workflow, or several, and the handoff between them is deliberately a file or a row rather than a call.
The second engagement, the signal layer, runs the same shape against an organisation rather than a person: read the org's structure on a schedule, diff it against the last run, and report what changed into a chat channel.
The nine workflows of the knowledge system hardly call each other at all. They're joined by files.
There are four direct calls in the whole system. Everything else is coupled through 17 files on a Drive, 13 of which more than one workflow touches — the rebuild and the web server alone share ten. One workflow writes a file; another notices.
That's a deliberate trade. A file handoff survives a workflow being edited, republished or failing halfway, and any stage can be run on its own with real data. The cost is that the coupling is invisible on any single canvas — which is exactly why it's drawn here.
The two signal-layer workflows sit apart from this entirely: a schedule, a read of the organisation's structure, a diff against the last run, a message. Same shape, different subject.
The interesting number isn't how much AI is in here. It's how little, and how deliberately placed.
Thirteen AI nodes, and only eight of them are a call — six agents plus a vision read and a transcription. The other five are the model bound to an agent, wired in on a second port rather than in the main line.
Models get exactly one kind of job: judgement about content — reading a photographed page, transcribing speech, classifying against a vocabulary that changes, drafting the note, grouping notes into topics a person would recognise.
Everything that writes, deletes, renames, schedules, locks, deduplicates or separates domains is deterministic code with an explicit condition. That's why a bad model response produces a refused run rather than a damaged vault.
Open one to see its real canvas. Drag to pan, scroll to zoom, hover any node to read what it does. Filtering narrows the list and dims the diagram to match.
78 conditional nodes — one in every seven.
Most check a precondition and refuse: does the response carry the field it should, is the rebuild lock free, has this capture already been queued, would this rebuild retire more topics than it keeps.
32 webhooks and 72 response nodes, nearly all in one workflow.
The map, the review queue, the approve path and the digest are served straight out of the automation platform — no separate app, no separate deploy.
80 Drive operations, 13 Sheets, 3 Postgres. Notes are plain markdown the owner holds outright; Postgres carries a content-hashed mirror of all of them, verified by identity in both directions rather than by matching counts.
134 code nodes, 101 of them opening with a written explanation of what the step is for and, often, which incident produced it. Those comments are the descriptions on this page.
Both systems are live and in daily use. These are the next pieces, in order.
Topic clustering re-reads the entire corpus on every rebuild, so cost and memory both climb with every note ever filed.
The Postgres mirror already knows which notes changed. Reading only those turns a seventeen-minute step into a query, and flattens a curve that otherwise compounds forever.
A forwarding address, so anything read in a mail client joins the same pipeline as a photograph — with whatever the sender types above the forward treated as their own commentary on it.
Every filed note traceable back to the capture that produced it, so an incident can be answered rather than reconstructed.
A layer holding explicit expectations about the systems' own behaviour — what should have run, how long real work takes — reporting only the divergences. Silence only means something once something is expected.
Anything irreversible is allowed to say no. A refused rebuild leaves a stale map; a bad one destroys the structure underneath it.
Counted from the live instance, not written from memory. Every figure below is the result of walking the workflows, so it can be checked against the maps above.