Human-AI Chat Interaction Observatory 120-second introduction
Interaction analytics

Every chat is a conversation.
Almost nobody measures it.

The problem

We evaluate what the model said.

Thumbs up. Thumbs down. A preference score. None of it tells you who did the talking, who was kept waiting, who took initiative, or where the exchange quietly broke down and had to be repaired.

The idea

Measure the exchange, not the content.

Language production. Timing. Initiative and response. Repair. Semantic contribution. Influence between human and artificial participants — treated as properties of an interaction rather than of an answer.

The central abstraction

One completed turn.

A turn is the unit — who spoke, when the first token appeared, when the last one landed, what the provider actually spent. Post it once when the message finishes, and everything else is derived.

Layer 1 · deterministic

Runs for every thread with no external calls and returns inside the ingest response. Production ratios, lexical measures, five timing measures, speech-act structure, participation, trajectory.

Layer 2 · optional

Never enabled implicitly. Two semantic engines over a shared kernel, queued and streamed back as they complete.

Two theories, kept apart

LCC is not ICCC.

Learner's Characteristic Curves

One designated learner

Measured against a versioned reference model of expectations and misconceptions, across four quadrants of relevance and novelty.

not the same as
Individual Conversation Characteristics Curves

Every participant

Measured against the evolving discussion itself — six curves, including a Social Impact value that later turns can revise.

They share a semantic kernel and stay computationally separate. There is no merged score anywhere in the system.

How it works

Synchronous where it must be. Queued where it should be.

01

Ingest

Your app posts one finished message with its streaming timings.

02

Layer 1

Deterministic measures computed in-request and returned.

03

Queue

Classification and semantic work enqueued — never blocking the chat.

04

Worker

Engines run; versioned envelopes persist with full provenance.

05

Stream

Results arrive as live events, resumable after a dropped connection.

Why you can trust the numbers

It would rather say nothing than guess.

null is not zero

A missing measure returns null with a quality flag explaining why — never a fabricated zero that would corrupt every average downstream.

Preconditions enforced

An interaction that does not qualify for an engine returns not_applicable with reasons, rather than a plausible curve.

Prohibited interpretations

Every metric ships with what it explicitly does not establish — published alongside the formula, not buried in a caveat.

Coverage

Instruments, counted.

40Speech acts
11Act families
6ICCC measures
4LCC quadrants
31Quality flags
16Live event types

Read from the codebase, not estimated — alongside 285 passing tests and 17 pages of reference documentation.

What you get

An API, not a dashboard.

Real-time ingestion

Idempotent on your own message id, so at-least-once delivery is safe.

Live event stream

Sixteen event types with replay after a dropped connection.

Scoped research access

Fifteen scopes on revocable, audited grants with pseudonymised projections.

What changes

A vocabulary for conversation quality
that doesn't depend on asking.

Product teams get interaction shape instead of ratings. Researchers get provenance that survives the pipeline. Participants get ownership enforced in the token rather than promised in a policy.

Human-AI Chat Interaction Observatory

Measure the conversation.

Content-agnostic interaction analytics, and two semantic engines that know when to stay silent.

0:00 / 2:00
Space · ← →