Signals & Operations

How We Do SEO:
signals, not schedules.

We run SEO as an instrumentation problem. Four sensors feed one signal store nightly. A deconvolution pass separates algorithm weather from page voice and checks its own arithmetic. A hysteresis machine — cleared through a four-run backtest whose criteria never moved — decides which pages need work. And a publication queue releases new pages only when mechanical predicates permit. Every decision leaves a receipt.

The four sensors

Search Console gives impressions, clicks, and position per page per day. GA4 gives sessions — including the AI-assistant referral channel, which is where an increasing share of our reach actually lives. A citation log records each time an AI answer engine quotes a page verbatim. And a LinkedIn intake captures on-platform reach, because for practitioner content the impact often stays on the platform where the conversation happens. All four land in one store, nightly, on cron.

One collection detail matters more than it looks: Search Console omits zero-impression days entirely. For a low-volume page, the days that are missing are the strongest decay signal there is — so the store materializes explicit zeros for qualifying pages before anything downstream reads the series. We learned this from a backtest failure, not from a checklist.

Deconvolution: weather vs. voice

When an algorithm update moves the whole site, every per-page chart lies to you. The nightly deconvolution pass computes each page's rolling baseline, extracts the site-wide common-mode movement per day, and stores the residual: what this page did beyond what the whole site did. A zero on a site-wide dip day is weather; a zero on a calm day is decay — and only a pass that sees both the calendar and the common mode can tell them apart.

The pass checks its own arithmetic in the same transaction: the median residual across pages must be zero for every site, metric, and day. If that invariant breaks, the transaction aborts — a deconvolution that cannot prove it removed the weather does not get to write results.

search console sessions (GA4) AI citations LinkedIn deconvolution hysteresispage states predicatesthen release storm hold every stage checkable; every release carries a snapshot of the conditions that permitted it

The chain, left to right — with the one branch that matters: during sustained site-wide depressions, the storm hold freezes all page-state changes.

Hysteresis: states with memory

Thresholds without memory thrash. Our page-state machine enters needs-work only after the deconvolved signal stays below its entry threshold for a sustained run of days, and exits only after a longer sustained recovery — separate thresholds, deliberately asymmetric. New measurement windows get a burn-in period before any verdict counts. And during a sustained site-wide depression the storm hold freezes every counter: median subtraction removes the weather's center, but not its dispersion, so during a storm the harder-hit half of pages sits below expectation by construction. The machine simply refuses to judge pages while it is raining on everyone.

The machine earned its authority through a pre-registered backtest over ninety days of our own data, and the honest score was: fail, fail, fail, pass. Run one was blind to missing days. Run two fixed that and broke weather-silence doing it. Run three exposed that our dip criterion was testing weekends, not storms. Run four — with the storm hold — passed all three criteria that had never moved: 1.33 state transitions per qualifying page against a ceiling of 2, zero entries across thirty real storm-days, and every firing mapped to a visible sustained drop. Two of those failures were instrument defects the backtest caught before a single decision depended on them. That is what backtests are for.

Impulse response: publications don't overlap

A publication is an impulse into the index: crawl lag, a settling period, then a measurable steady state. Publish two pages into the same window and neither response is attributable. So every release opens a refractory window for its site, and nothing else fires until it closes. The window lengths are parameters today; as firings accumulate, the measured settle times of our own pages replace the defaults — the system learns its own time constants instead of being configured with guesses.

The publisher that says no

New pages enter a queue carrying predicates, not dates: no storm active, no refractory overlap, prerequisites live. A human approves the item; a ticker evaluates it; the item fires only when every predicate clears — and any predicate that cannot be evaluated blocks release, because an unreadable calendar is a closed calendar. Each firing writes a snapshot of every condition it checked.

The first real firing happened at 07:24 UTC on August 1, 2026. Its receipt reads: storm active — false; refractory overlap — false; prerequisite the reference article — present. The page it cleared was, fittingly, an essay about enforcement beating instruction. This page you are reading entered the same queue behind it, and was held by the refractory window that firing opened — released only when its own snapshot came back clean.

What this replaces

A content calendar, mostly — and the panic audit that follows every traffic dip. When the whole site moves, the deconvolution has already said whether it was weather. When a page genuinely decays, the state machine says so with a date attached, after the storm has passed, above a signal floor that keeps it silent about pages too small to judge. The same discipline that runs our engineering feedback loops runs our publishing: listen to the system's own signals, and make the instruments prove themselves before trusting them.

Common questions

What is signal hysteresis in SEO?

A page-state machine with memory: enter needs-work only after a sustained run below threshold, exit only after a sustained recovery, with a storm hold freezing all changes during site-wide depressions. Asymmetric thresholds plus persistence requirements prevent noise from ever driving a verdict.

Why not publish on a content calendar?

A calendar encodes guesses about the right moment. Predicates encode the conditions that make a moment right: no storm, no open measurement window, prerequisites live. Production is batched; release is metered.

What happens during a Google algorithm update?

Deconvolution subtracts the site-wide movement from every page signal, and the storm hold freezes the state machine while the depression is sustained. In our backtest: zero state entries across thirty real storm-days. Decayed pages re-enter afterwards, with honest timestamps.

Does this replace human judgment?

No — it concentrates it. Humans approve content and merge to production. The machine decides timing, refuses mechanically when conditions fail, and writes a receipt for every decision so the judgment is auditable.

Related writing