Cognee × Qdrant Hack Night · Berlin · 2026-08-14

Reaction Dynamics

Most misunderstandings at work aren't disagreements — they're translation errors. This reads a room's emoji culture and its answer culture from reaction timing: a signal Slack's API cannot give you, and nobody can reconstruct after the fact.

36,779
Timestamped reactions
24 threads · 2,294 messages · 16,725 people · 2016→2026
22 min
Until someone reacts
Median wait for the first reaction, across 232 messages
29.2 h
Until the room finishes
Median span from first reaction to last
97%
Top follow rate
How often the room copied its strongest first mover

🏆 Emoji highscore

Every reaction in the corpus, ranked. Two emoji do 86% of all the work — everything else is a rounding error.

⚠️ Read this before you read the chart — 👎 at 18.5% is not normal

It shouldn't be, and it isn't. The corpus was fetched with --min-reactions 10, so these are the most-reacted issue threads in a contested product repo — GitHub pile-ons, selected precisely because people were arguing. In an ordinary workplace Slack, 👎 is close to nonexistent.

That skew is deliberate and useful: you cannot study disagreement in a sample with no disagreement in it. But it means this ranking is a picture of contested conversation, not a baseline of how teams talk. The dialect comparison below is unaffected — both rooms were sampled the same way, so the difference between them is real.

👍 is the most overloaded glyph in professional communication — two thirds of everything. That is exactly why it fails: one symbol is carrying "yes", "seen", "fine", and "I'm done arguing" all at once.

⏱️ How fast does a room answer?

Time from a message being posted to its first reaction. Median, because the mean is dragged around by messages that sat for days.

0 min 10 20 30 microsoft/vscode 21.6 min kubernetes/kubernetes 34.0 min everything 22.4 min

The contested room is faster to respond and slower to settle. The consensus room takes half again as long to say anything at all — then agrees quickly. Speed of first reply is not enthusiasm; it's how safe people feel going first.

🎭 Reaction personalities

Everyone who reacts first is doing something to the room, whether they mean to or not. These are archetypes measured from behaviour — never a score, never a ranking of people.

🐑
The Bellwether
Zielak · moved first 7×
97%
of what followed copied them. When this person picks an emoji, the argument is effectively over.
🎯
The Quiet Anchor
pohmelie · moved first 5×
96%
copied, on half the appearances. Rarely first — but when they are, the room lines up behind them.
🦅
The Lone Voice
igolskyi · moved first 5×
65%
copied — the lowest here. Goes first just as often, and the room decides for itself. This is the healthy one.

The interesting one is The Lone Voice. A room where everybody hits 97% isn't harmonious — it has stopped thinking independently. A spread of follow rates is the sign of a room that still makes up its own mind.

Emoji culture

Share of reactions by emoji. The same 👍 does different work in different rooms.

  • microsoft/vscode · 211 msgs
  • kubernetes/kubernetes · 21 msgs
0% 25% 50% 75% 100% 👍 +1 52% 69% 👎 −1 27% 6% ❤️ heart 8% 14% 😄 laugh 5% 0% 🎉 hooray 4% 4% 🚀 rocket 0% 4%

vscode is a contested room — a quarter of all reactions are dissent. kubernetes is a consensus room — dissent is 6%.

Answer culture — arrival shapes

Share of classified messages, by how the reactions arrived in time.

  • microsoft/vscode
  • kubernetes/kubernetes
0% 25% 50% 75% 100% trickle 65% 90% cascade 12% 5% split 12% 0% mixed 10% 5% stall-burst 0% 0%

Honest limit: the emoji-mix difference rests on 11,654 kubernetes reactions and is robust. The shape-mix difference rests on 21 classified kubernetes messages against 211 — suggestive, not established.

📚 Which emoji are actually misunderstood — and by whom

Not measured here. Everything in this section is published research, cited. Reaction data carries no age, no gender and no country — so this is the literature that motivated the product, kept visibly separate from our own numbers.

Miller et al. · ICWSM 2016
Shown the identical rendering of an emoji — same image, same screen — people disagreed about whether it was positive or negative 25% of the time. The misunderstanding is not a rendering bug. It survives when everyone sees exactly the same picture.
Zhukova & Herring · Indiana University
The generational split, in both directions: Gen Z and non-binary respondents read 👍 and 😂 as significantly more sarcastic and passive-aggressive. Older respondents rated 🔥 and 💣 more negatively. The same 👍 means different things to two people in the same channel today — and each side thinks the other is being rude.
Glikson et al. · SPPS 2018 · replicated N=847, Lai & Mayiwar, Collabra 2023
Smileys in a work email lowered perceived competence. The effect held in a preregistered replication at N=847 — though the claimed formality moderation did not. Warmth and competence are not the same signal, and emoji trade one for the other.
Atlassian / YouGov · 10,000 workers, 5 countries
65% of workers use emoji to convey tone at work. This is not a fringe habit to be trained away — it is the primary tone channel in text-first teams, which is why the goal is to disambiguate the emoji people already use, never to nudge them into using more.
🌍 Country-by-country breakdown — deliberately absent

We were asked for one and we're not showing one. GitHub reactions carry no country field, and the Atlassian study's 5-country sample isn't broken out per-emoji in a form we can verify tonight. A plausible-looking map here would be the most convincing thing on this page and the only invented thing on it. That trade isn't worth making.

The four shapes

Identical reaction counts. Completely different meanings.

ShapePatternReads as
Cascadeburst right after the firstsocial proof
Trickleeven, independenttrustworthy agreement
Stall → burstsilence, then all at oncedeference
Splitopposed emoji interleavedlive disagreement

Classified by hypothesis test, not a threshold picked by eye: arrival times tested against uniform with a one-sample Kolmogorov–Smirnov statistic (critical value 1.36/√n). Timing has no valence — a cascade is not "happy".

What is real, and what isn't

Status at freeze. Nothing on this page is projected.

PieceState
GitHub corpus, 36,779 reactions✅ reproducible
Shape classifier, KS-tested
Socket Mode live listener✅ running
cognee → Qdrant, 64 triplets✅ 206 points
4-tool query agent
Generation / country breakdown📚 cited only
Cognee Cloud graph, answering queriesgraph.html

Live capture ran in #emojie-lab, created for this, opened with a consent notice, joined voluntarily. #all-hacknight was deliberately not ingested.

🏗️ How it's built

Two sources, one schema, one classifier. The only difference between them is timescale — which is the finding, not a bug to normalise away.

Slack Socket Mode · live reaction_added → t₀ t₁ t₂ … GitHub Reactions API · 10 yrs created_at per reaction SOURCES ONE PATH FOR BOTH CONSUMERS one corpus schema arrival times, nothing else shape classifier KS test · burstiness pure Python · no graph deps metrics & dashboard a graph outage cannot take this down typed DataPoints → cognee → Qdrant embed_triplets=True · 64 indexed triplets 4-tool agent LLM routes · every number comes from a tool The same reaction, fetched instead of heard Slack Web API reactions.get { name, users, count } no order · no clock Excluded by construction, not overlooked — miss the moment and it is gone. Identical shape, two timescales live Slack room cascade closes in seconds 0 60 s GitHub thread 0 48 h same shape, spread over hours

The metrics layer has no dependency on cognee or Qdrant — it's pure Python over corpus JSON. A graph outage cannot take the product down; it only takes away the multi-hop questions.

Why this cannot be backfilled

Slack's Web API returns reactions as {name, users, count} — no timestamps, no ordering. Per-reaction timing exists only in the live reaction_added event. The signal is excluded by construction, not overlooked. If nobody was listening at that moment, it is gone permanently — which is why the listener is the first thing that starts, and the half of this that nobody can reconstruct tomorrow.