Skip to content

02 — Architecture

Account, interaction, network.

Three layers. A latent behavioral state of accounts, edges, and events, consumed as a private probabilistic prior — never as a public score.

What the system is allowed to believe

Not bot / not-bot. A small taxonomy of participation:

  • verified unique human (optional proof-of-personhood, separate system)
  • likely independent human
  • human-assisted agent
  • declared agent
  • automated service
  • coordinated / inauthentic cluster

Banning every machine is the wrong product. The heartbeat exists so unlabeled optimization loops cannot pretend they are people.

Layer 1 — Account pulse

Treat an account as a marked point process plus a slowly changing latent state. Actions arrive at times tᵢ with marks (type, target, text, client, dwell, edits).

λᵤ(t) = μᵤ(sᵤ(t)) + Σ φ(t − tᵢ, mᵢ, sᵤ(t)) for tᵢ < t
Intensity with a latent behavioral state, not a constant baseline.

sᵤ(t) is a latent behavioral state. The system does not know whether somebody is fatigued, angry, watching television, or using an accessibility device. Observed manifestations: session progression, interaction density, latency distributions, topic transitions, editing patterns. Humans are non-stationary even inside one session. Bots are close to stationary unless someone spends money faking drift.

Estimated factors, not a dashboard:

Hᵤ(t) = (T, R, S, C, E, G, A, D, I, CI)
FactorWhat it scores
T temporalConditional latency, not raw delay.
R reactionResponse to surprise: correction, joke, disagreement.
S semanticTracking the thread versus matching keywords.
C continuityFollow-ups, abandoned thoughts, self-corrections.
E entropyStructured irregularity: log-normal gaps, circadian, burstiness.
G graphAsymmetric reciprocity. One-sided, decaying, uneven.
A automationTemplate mass, client regularity, API cadence.
D driftChange in latent state that is explained by context.
I independenceResidual independence given stimulus and feed.
CI counterfactualPredictive lift of a cluster residual after the stimulus shown.

Output is a posterior over the taxonomy, not a binary expectation:

pᵤ(t) = P(zᵤ | Hᵤ(t))

zᵤ ∈ {human, human+agent, declared-agent, service, coordinated}. Liveness is a functional of that posterior. Mixture accounts are the default future.

Lᵤ(t) ∼ posterior, carried as (μ_L, σ_L)

Mismatch across timescales is the catch: language human, sleep human, drift absent, relationships synchronized, timing optimized — liveness collapses even if each slice looks fine.

Cold start is the hole. New accounts have no pulse, and that is when bots are born. Lᵤ needs a weakly informative prior and a wide credible interval, not a ban. A point of 0.72 with interval [0.31, 0.94] is “do nothing.”

Layer 2 — Interaction pulse

An edge is not “A replied to B.” It is a signature:

I(A, B) = f(H_A, H_B, latency, semantic fit, history, who initiated)

Classify the edge: human→human, human→agent, agent→human, agent→agent, cluster→stimulus. Higher-order traces — co-reply, co-repost, near-simultaneous reaction to the same item — are where botnets still leak.

Layer 3 — Network pulse

This is the part worth the word heartbeat. An event E enters N timelines. Measure the reaction field:

P(E, t) = { latency distribution, response diversity, conversation depth, propagation shape, residual independence }

Organic pulse: heavy-tailed, desynchronized, lots of non-response, some people coming back hours later. Synthetic injection: compressed, correlated microstructure, even if the operator smoothed the outer envelope. You can hide a square wave. It is much harder to hide the missing interior.

The field is streaming. Ranking at time t may only see P(E, [t−W, t)), never the reaction that has not happened yet.

Algorithmic pulse

Outside detectors only see responses. A platform knows the stimulus. After a ranking change:

ΔL = L_after − L_before

Did human↔human conversation rise? Did agent↔agent loops rise? Did residual coupling across supposedly independent viewers rise? Did CI lift after controlling for the feed actually shown? That is a better offline metric than “more likes.”

Tiny ranking perturbations as probes are theoretically clean and product-dangerous. Shadow experiments on a slice. Never a user-facing challenge. If people can feel the probe, it is a CAPTCHA and it will be trained against.