Methodology
One of our stated principles is that we disclose our methods and our limitations. So here is how a Telegram post becomes a published report, which parts run without a human, and where the method is weak.
The pipeline, end to end
-
Collection
We follow 22 public Ukrainian Telegram channels. A post is registered the moment it appears, then re-measured four times, at 15, 30, 45 and 60 minutes, so we record how views, reactions and comments actually develop rather than a single number at an arbitrary moment. Comment threads are captured at each of those points, with reply structure preserved.
-
Clustering
Post text is cleaned and embedded using a multilingual sentence-embedding model, then grouped with density-based clustering. Posts from different channels describing the same event land in one cluster. Posts that nothing else corroborates stay unclustered. We do not force them into a group just to have something to publish.
-
Analysis
Each cluster gets a generated summary written to a journalistic standard, keyword extraction, sentiment classification, and a scan for a defined set of manipulation techniques. Separately, pattern-based signals flag the post type (air raid, strike, weather, ordinary news) and detect entities such as politicians, parties, state companies and oligarchs, along with scores for paid positive framing and coordinated negative campaigns.
-
Fact-checking
Factual claims are extracted and decomposed into atomic sub-claims (who, what, when, where, numbers, quotes), so a compound statement with one wrong element cannot hide behind a single overall verdict. Search queries are generated in the language of the country the story is rooted in, not only Ukrainian, so we reach original sources rather than re-reporting. Evidence is scored on source authority, freshness and relevance; a stance model classifies each source as supporting, contradicting or neutral. The verdict is one of ten labels, and numeric or quoted claims are additionally checked against the full text of the top source.
-
Publication
The formatted report goes to our Telegram channel, the analysis JSON goes to the public dataset, and the report's dashboard becomes reachable at its permanent link. All three happen in the same run, so the published report and the published data cannot drift apart.
What the fact-check verdicts actually look like
Across 2,420 checked claims:
| Verdict | Claims | Share |
|---|---|---|
| Unverifiable | 1,215 | 50.2% |
| True | 854 | 35.3% |
| Mostly True | 236 | 9.8% |
| Partly True | 52 | 2.1% |
| Misleading | 40 | 1.7% |
| Manipulated | 12 | 0.5% |
| False | 11 | 0.5% |
Half of all claims come back unverifiable, and we publish that verdict rather than converting a lack of evidence into a judgement. Breaking news is the common case: at the moment a claim first circulates, independent reporting frequently does not exist yet. If the pipeline returned a confident verdict on those claims, it would be reporting something it does not actually know.
Limitations
Read these before citing anything we publish.
- The sample is 22 channels, not Telegram. Conclusions describe the channels we monitor. They do not describe the Ukrainian information space as a whole, and the channel set shapes what we can see.
- Single-source stories fall out. Clustering needs corroboration across channels. A story only one channel ran will usually not be reported on, so absence from our output is not evidence that a story didn't happen.
- No human editor per report. The pipeline runs automatically. Summaries, manipulation flags and verdicts are model output. We review the system, not every individual report before it goes out.
- Verdicts depend on what search engines return. Coverage varies by topic, language and moment. A claim can be checkable one day and unverifiable the next for reasons that have nothing to do with its truth.
- Sentiment and coordination signals are statistical, not proof. A high coordination score is a reason to look closer. It is not a finding that a campaign exists, and we do not present it as one.
- Pseudonymization is not anonymity. See the dataset page for what that means in practice.
Found something wrong in a published report: a bad verdict, a mislabelled manipulation, a cluster that groups unrelated stories? Tell us: info@aisberg.live. Corrections are how the method improves, and the underlying data is public precisely so you can check us.
Models
The pipeline combines open models with commercial ones, chosen per step rather than one model for everything. Text embedding, relevance ranking and stance classification are handled by specialised open models; summarization, manipulation detection and verdict reasoning use general-purpose language models.
Model choices change as better options appear. What does not change is the requirement behind them: every step has to produce something we can publish and defend, which rules out any component whose output we cannot inspect.
News gets cleaner when somebody checks it
News clusters, fact-check verdicts and a link to the dashboard go out on the Telegram channel every hour. Reading it is free and needs no account. And if you want more of this work to happen, you can join it.
Subscribe to the channel Become a volunteer