A long thread is where decisions get made and where newcomers get lost. Copera AI keeps every channel summarized as the conversation moves — not with a nightly batch job, but in real time. Here’s a look under the hood at how we do it without turning your workspace into a firehose of robotic recaps.
Summarization sounds simple until you try to do it live, at the pace of a real team, without being annoying. A summary that’s always regenerating is noise. A summary that’s hours stale is useless. The interesting engineering isn’t the model that writes the recap — it’s everything around it that decides when a summary is worth updating and what is actually worth saying. This post walks through the machinery.
The problem with naïve summarization
The obvious approach — feed the whole thread to a model every time someone posts — fails on both cost and quality. It’s wasteful, because most messages don’t change the gist of a conversation (“thanks!”, “on it”, a reaction). And it’s incoherent, because a summary that rewrites itself every thirty seconds gives readers nothing stable to anchor to. Good summarization is as much about restraint as generation.
The hard part of a real-time summary isn’t writing it. It’s knowing when not to.
Deciding when to summarize
Before any model runs, a lightweight layer decides whether an update is even warranted. It watches for signals that the state of a conversation has shifted, not just that activity happened:
- Semantic drift. We track how far the recent messages have moved from what the current summary already captures. Small talk barely moves the needle; a new proposal or a reversal moves it a lot.
- Decision markers. Language that signals a commitment, a change of plan, or an unresolved question is weighted heavily, because those are the moments a reader most needs reflected.
- Structural events. A new participant joining, a file being shared, or a thread branching are cheap, reliable cues that context has changed.
Only when these cross a threshold do we spend a model call. Most messages never trigger one, which is exactly what keeps the feature both affordable and calm.
Summarizing incrementally, not from scratch
When an update is warranted, we don’t re-read the entire thread. We treat the existing summary as state and update it with just the new material — an incremental pass that folds recent messages into the running recap. This keeps the summary coherent over time (it evolves rather than lurching) and keeps cost proportional to what changed, not to how long the thread has grown.
Long-running channels are where this matters most. A thread with two thousand messages shouldn’t cost two thousand messages’ worth of work to keep current. With incremental updates, it costs about as much as the handful of new messages since the last one.
Writing a summary worth reading
A good recap answers the questions a reader actually has when they open a busy channel: What was decided? What’s still open? What do I need to do? So we structure summaries around those, not around a neutral blow-by-blow. Decisions are stated as decisions. Open questions are flagged as open. Action items are attributed to people. The model’s job isn’t to compress the transcript — it’s to answer the reader’s implicit questions from it.
Keeping it grounded and honest
The failure mode everyone worries about is a confident summary that’s subtly wrong. We mitigate it in a few ways: every claim in a summary is traceable to the messages it came from, so you can tap a point and jump to its source; the model is tuned to prefer “this is unresolved” over inventing a resolution; and the running summary is always visibly anchored to a specific point in the thread, so you know exactly what it has and hasn’t seen.
Why real time is the whole point
A batch summary tells you what happened. A real-time summary changes how the conversation works while it’s still happening. Someone can join a fast-moving channel and be caught up in ten seconds. A decision made at 2pm is legible to the person who logs on at 5. And the thread stops being a wall you have to read from the top — it becomes a place you can enter anywhere and immediately understand. That’s the difference between a transcript and a workspace that keeps up with you.