A detector that always fires carries no information
If every thread produces a turning point, the output is not a finding, it is a formality. The claim is only worth something if the tool is capable of saying nothing happened.
Grey Mirror detects the point where a relationship measurably changed. The hard part is not finding changes; it is refusing to find them when nothing happened. This page publishes the false positive rate, the detection rate, the localisation error, and the method behind them, so the numbers can be checked rather than taken on trust.
By Layne Weant
Updated
Across 40 synthetic threads containing no real change, Grey Mirror reported a turning point in 0% of them. Across 40 threads containing a known planted change, it detected the change in 100%, identified the correct direction in 100%, and dated it with a median error of 0 days. A 730-day, 10,283-message thread completes in about 4 seconds. These are results on synthetic data where ground truth is known, which is the only setting where a false positive rate can be measured at all.
Why this number and not another
Any changepoint algorithm can be tuned until it finds something in every conversation. That version demos well and is worthless: if the tool always finds a turning point, finding one tells you nothing. So the first thing worth measuring is how often it claims a change in a relationship that never changed.
If every thread produces a turning point, the output is not a finding, it is a formality. The claim is only worth something if the tool is capable of saying nothing happened.
Message activity is streaky: quiet weeks follow quiet weeks. A naive detector will split that ordinary variation into periods and report a turning point that exists only in the arithmetic.
Grey Mirror only reports a turning point when the change stands out from the thread's own normal rhythm. Otherwise it says nothing happened.
Method
The evaluation runs 40 trials per arm. One arm contains threads with no change; the other contains threads with a planted change of known date and direction. Ground truth is known by construction, which is exactly why synthetic data is used here rather than real conversations.
Warmth, curiosity, reciprocity, responsiveness, repair, conflict, investment and initiation are read together across the timeline, so a single loud week cannot dominate the result.
A turning point has to appear across several behaviours at once, not in one noisy channel.
Without a meaningful before, there is no turning point to find. Rather than manufacture periods out of single messages, Grey Mirror declines to answer.
The same thread produces the same answer every time, so a result can be checked rather than taken on trust.
Limits
Published accuracy figures are easy to overread, so the boundaries are worth stating plainly.
A 0% false positive rate on generated threads shows the significance gate is doing its job. It does not promise the same rate on every real conversation, and no benchmark on synthetic data can.
The analyzer dates a shift and names which behaviours moved. It cannot say why they moved. A job change, a bereavement, and a loss of interest are indistinguishable in message timing alone.
The evaluation runs entirely on generated threads with known ground truth. Nothing on this page is derived from any uploaded message history.
On the published benchmark, 0% false positives across 40 threads with no real change, 100% detection and 100% direction accuracy across 40 threads with a known planted change, and a median dating error of 0 days. Those figures come from synthetic threads where the correct answer is known in advance.
Because a detector that fires on every conversation would score highly on detection alone while being useless. The false positive rate is what separates a tool that finds real turning points from one that manufactures them, and it is the figure most tools in this space never publish.
A false positive rate can only be measured where the truth is known. In a real conversation nobody can say with certainty that nothing changed, so there is no ground truth to score against. Synthetic threads are the only setting where the question is answerable, and no user data is involved.
It builds the null distribution by shuffling contiguous blocks of the timeline rather than individual time buckets. Shuffling individual buckets would destroy the natural clumping of messages and make almost any candidate look significant. Permuting blocks keeps that structure, so a changepoint has to beat a realistic null rather than an artificial one.
No. It can date the change and name which behaviours moved around it. Why those behaviours moved is not present in message metadata, and the report does not guess.
Follow the sequence
Visual guide updated
Read how synthetic stationary and changing threads are constructed for the test.
Check the definition of detection, direction accuracy and false positives in that setup.
A controlled result supports a claim about that test, not guaranteed accuracy on every real relationship.
Keep the benchmark arm, denominator and limitations with any percentage you quote. Detection performance is separate from the meaning of a real-life change.