Skip to content
scsiwygest. ‘26
Sign in
get startedmcpcommunityapiplaygroundswaggersign insign up
project-state·Intelligence, not insights: the eight things organizations never track1 Jun 2026David Olsson
project-state

Intelligence, not insights: the eight things organizations never track

#design#intelligence#substrate#decision-latency#knowledge-risk#reporting-matrix#building-in-public

David OlssonDavid Olsson

Every organization runs a second ledger it never reads. Not the financials, not the project plan — those get audited. The second ledger records how the work actually moved: how long a decision sat unmade, who was the only person who understood a system, how often a stakeholder learned something too late to do anything about it. Nobody keeps this ledger, because nobody owns it, and nobody owns it because it lives in the gaps between the artifacts everyone does track.

I want to make a specific claim about that ledger. project-state doesn't give you insights about these things. It gives you intelligence. The difference is the entire point, so let me start there.

Insight is an event. Intelligence is a property.

An insight is something that happens to you. Someone looks at data, notices a pattern, and tells you about it. Insights are retrospective — "last quarter your decisions took too long." They're episodic — they happen when someone bothers to look. And they're human-powered — they need an analyst, a consultant, a retro facilitator. An insight is a slide. It's true on the day it's delivered and decays immediately, because the moment you act on it the underlying reality has already moved.

Intelligence is a property of a system, not an activity performed on it. It's continuous, attributed, timestamped, and produced as a byproduct of doing the work — so it's there the instant you ask, about right now, without commissioning anyone to go find it. Intelligence doesn't wait for the quarterly retro. It's the difference between "a consultant found that your knowledge is dangerously concentrated" and "this milestone can't be reviewed by anyone but Priya, and the system knew that the moment she became its only editor."

The reason organizations get insights instead of intelligence about these eight things is structural: the data was never captured in a form you could query. A status report is prose. A decision lives in a Slack thread or someone's memory. A handoff is a meeting that happened and then stopped existing. You can't derive intelligence from artifacts that don't retain their own history.

project-state changes exactly one thing, and it's the thing that matters. It stores work as a typed, append-only, actor-attributed, timestamped substrate. Every milestone, decision, risk, and document is a file with created_by, last_modified_by, and ISO timestamps. Every state change is one immutable line in logs/activity.ndjson. That single choice converts most of the second ledger from "untracked" to "already recorded, just not yet read."

The eight gaps that ledger usually hides:

  • Decision latency — how long a question sits between raised and resolved
  • Blocked time — how long work waits, measured as a duration, not a status line
  • Stakeholder surprise rate — how often people learn things too late to act on them
  • Context loss — the reasoning that leaves the building when a person does
  • Handoff quality — what actually survives a transfer, and what silently doesn't
  • Knowledge concentration risk — how much depends on a single person nobody can replace
  • Communication debt — the backlog of updates owed to stakeholders but never sent
  • Rework caused by misunderstanding — progress spent undoing work that wasn't understood

Here's how each one actually happens — and what the substrate already knows.

1. Decision latency

A question comes up in a Tuesday standup: should we engage ACME as a subcontractor for the trials? Everyone agrees it matters. It isn't anyone's explicit job to close it. It surfaces again in two weeks, then a third time, and gets decided five weeks later — by which point the trial window has shifted and two other milestones quietly slipped waiting on it. Nobody experiences this as a five-week delay. Each person experiences it as "we talked about ACME a few times."

The decision gets recorded when it's made. The clock that mattered — from raised to resolved — was never started, because the raising wasn't an artifact.

In project-state a decision is a first-class entity with a created timestamp and a decision.recorded event in the log. To measure latency you add one field — when the question opened — and latency stops being something a post-mortem digs up and becomes resolved − raised, computed across every decision: median decision latency this phase: 19 days; three open longer than 30. The intelligence is that the slow decisions are named and aging in front of you, not discovered after the trial window closed.

2. Blocked time

M05 is waiting on a data-sharing agreement from a partner. It sits blocked for three weeks. The weekly status says "M05: in progress, awaiting partner sign-off" — the same sentence, three weeks running. The blockage is visible as a state and invisible as a duration, so it never accumulates into a number anyone reacts to.

This one needs no schema change at all. When a milestone is flagged blocked, that's a timestamped milestone.updated event. When it unblocks, another. Blocked time is the interval between them:

{"ts":"2026-05-04T09:12:00Z","event":"milestone.updated","id":"M05-data-share","summary":"status → blocked (awaiting partner DSA)"}
{"ts":"2026-05-25T16:40:00Z","event":"milestone.updated","id":"M05-data-share","summary":"status → in_progress (DSA signed)"}

Twenty-one days, sitting in the log, waiting to be summed. Across a portfolio, "we lost 47 milestone-days to blocks this quarter, 60% of them external dependencies" is a query, not a study. The intelligence is that blocked time competes for attention with delivered work on the same dashboard, instead of hiding inside an unchanging status line.

3. Stakeholder surprise rate

A risk materializes — a key reagent goes on six-month backorder. The team has known it was a risk for weeks. The steering committee learns about it as a fait accompli at the next meeting, with no runway to help. The committee's experience is "why are we only hearing this now?" The team's is "we'd been tracking it." Both are true. The failure was in the cadence of communication, not in anyone's awareness.

I'll be honest about this one: surprise is a state in someone else's head, and no substrate can read it directly. Claiming otherwise would be selling an insight dressed up as intelligence — exactly the thing this system exists to stop. What project-state can compute is the condition for surprise: a risk.materialized or change-order event affecting a stakeholder group for whom the reporting matrix shows no signal went out beforehand. That isn't "surprise." It's "a communication the cadence should have caught and didn't." The reporting matrix — who gets what, at what cadence, on which surface — is the instrument. Surprise risk is high precisely where material events outrun the cadence meant to telegraph them, and the system can warn you before the meeting, not survey you after.

4. Context loss

The engineer who chose the buffer chemistry leaves. Six months later someone asks "why did we rule out the phosphate buffer?" — and nobody knows. The decision survived (we use this buffer); the reasoning evaporated. So the team re-litigates it, or worse, silently reverses a choice that had a good reason behind it.

This is the substrate's strongest suit, and it's prevention rather than measurement. A decision entity isn't just the outcome — it carries context, options, and rationale. The log is append-only, so the sequence of how understanding formed is never overwritten. Documents get promoted to source-of-truth with a traceable lineage. And the onboarding skill can reconstruct everything known about a milestone on demand. There's no "context-loss score" — there's the fact that the context didn't leave when the person did. You can't lose what the system structurally refuses to forget.

5. Handoff quality

A milestone transfers from a departing engineer to a new hire over a 30-minute call and a half-finished doc. Three weeks later the new owner hits a wall the old owner had already solved and forgotten to mention. The handoff "happened." Its quality was never an artifact, so its failure shows up later, disguised as the new person being slow.

Like surprise, there's no first-class "handoff" entity, and grading handoff quality numerically would be overclaiming. So project-state attacks the cause instead of scoring the symptom: the receiving person gets an onboarding brief assembled from live state — open decisions, current risks, rationale, document source-of-truth — instead of one person's lossy recollection. Bad handoffs happen when context is concentrated in a head. The substrate's job is to make sure it never was.

6. Knowledge concentration risk

Priya set up the pipeline, owns the trial milestones, wrote the protocols, and is the last editor on every related document. Everyone knows "ask Priya." Nobody computes that if Priya is out for a month, four milestones and the entire protocol corpus have no second reader. The risk is obvious in hindsight and invisible in advance, because no one ever counts editors.

But every entity carries created_by, last_modified_by, and owner — written incidentally, every time, for governance reasons. Bus-factor is therefore directly computable across the whole substrate: the fraction of milestones, decisions, and documents touched by exactly one actor. "62% of M03–M06's artifacts have a bus-factor of one, all Priya" is a query against fields you were already writing for other reasons. This is the purest version of the thesis — concentration risk was latent in the attribution data the entire time. The system can flag the single-owner cluster before the person goes on leave, instead of eulogizing it after.

7. Communication debt

The weekly report didn't go out for two weeks because things were busy. The Q2 claim draft is sitting un-submitted. Last meeting's minutes were never distributed. Each omission is individually forgivable and collectively corrosive — stakeholders drift out of sync, and the gap is only felt when someone asks "wait, what's the current status?" The debt was never on a balance sheet, so it never got paid down deliberately.

The reporting matrix is an explicit ledger of obligations: every stakeholder group, every report, every cadence. The orchestrator knows what's due; the activity log knows what's been produced; and because Gmail is always-draft by design, unsent drafts physically accumulate as evidence. Communication debt is the delta — scheduled-but-not-produced plus drafted-but-not-sent. The intelligence is a standing balance — 3 reports overdue, 1 claim draft aging 11 days, 2 sets of minutes undistributed — that pays itself down as work happens, instead of a guilty realization three weeks later.

8. Rework caused by misunderstanding

Two teams build to slightly different readings of the same spec. A decision made in March is quietly reversed in May because someone didn't know it had been settled. Each reversal feels like normal iteration. Nobody tallies that a measurable share of the quarter's "progress" was undoing prior committed work that wasn't understood.

This is the hardest of the eight — it's mostly qualitative, and the substrate can't infer "misunderstanding" on its own. What it can capture is the mechanical signature: a supersedes / reverses reference on decisions and change-orders, so the system surfaces "this change-order undoes a decision committed eight weeks ago." The lessons skill captures the human texture continuously — "we lost two weeks because 'validated' meant different things to QA and dev." Together you get rework that's named and linked to its cause, instead of absorbed invisibly into the burndown.

Why this is intelligence and not insight

Step back and notice what did the work in every one of these. It was never a clever analysis. It was that the work was stored in a form that retained its own history and authorship. Three properties of the substrate do all of it:

Append-only logs. logs/activity.ndjson is never rewritten; corrections are new lines. So duration and sequence — blocked time, decision latency, the order understanding formed in — are recoverable, because the past is still physically there.

Actor attribution on every entity. created_by / last_modified_by / owner are written every time, for governance. Knowledge concentration and handoff exposure fall out of fields nobody set out to analyze.

The reporting matrix as a ledger of obligation. Because "who should hear what, when" is itself state, communication debt and surprise risk become a comparison between what was owed and what was sent.

That's why the framing is intelligence, not insights. An insight needs someone to go looking, and is true only on the day it's delivered. Intelligence is what you get when the answer was already in the substrate — attributed and timestamped — waiting for the question. The gap was never in capture. It was in derivation. project-state was built on the premise that routine reporting should be a byproduct of normal work; these eight metrics are simply the byproducts nobody has written the report for yet.

An honest accounting

It would undercut the whole argument to overclaim, so here's the real scorecard:

  • Four are fully addressable today, with no schema change — blocked time, knowledge concentration, communication debt, and, as prevention, context loss. The data is already there; only the report is missing.
  • Two need a single field — decision latency (raised_at) and rework (supersedes). Small extensions, then they're as derivable as the rest.
  • Two are prevention, not measurement — stakeholder surprise and handoff quality. These live in people's heads, not in files. The substrate attacks their causes and can warn on proxies, but it can't honestly claim to measure a feeling.

Six of eight, then — four for free, two for a field — turn from invisible into queryable. Not because project-state is a better analytics tool, but because it's a better place to keep work: one where the second ledger writes itself.

The most useful thing you can do with this isn't read it once. It's to compute it continuously — a standing "latent metrics" report that derives blocked-time, bus-factor, and communication-debt from the log and the matrix on every status cycle, with no migration at all. That's the move from insight to intelligence, in one report.

Share
𝕏 Post