Skip to contentVidik

Methodology

Every number on this page is calculated, and this is how. A number nobody can check is a number nobody believes.

How to read

What we do not know is stated too.

What is an event?
Several reports about the same thing are read together. The original reports stay available beside the summary.
What does the colour mean?
Colour marks the media signal: how much is being reported. It does not say how dangerous a place is and does not predict the next event. There are two exceptions. The violet “Summary in preparation” label means the AI is still writing the summary, and says nothing about the event itself. Yellow, orange and red on weather warnings are Meteoalarm’s colours: they show the warning level the national weather service issued, not Vidik’s media signal.
What is the “Off topic” strip?
Sport, entertainment, lifestyle and forecasts are not what Vidik is about. When the local classifier judges, with at least 70% confidence, that none of a story’s sources reports an event, the story goes to the “Off topic” strip on the news page: it is not deleted and its link works, but it stays out of the map, the signal, alerts and the daily brief. Official sources, and languages the classifier cannot read, are never set aside. Sources do not carry such stories equally, so for each period the strip also states what share of the stories from each country’s sources was set aside. The share is counted only among stories the classifier reads: it never sets aside a story in another language, so that share would always be zero.
How precise is a location?
A full mark means a place the sources named and the register recognises. An area mark means we know the municipality or town, not the exact address.
How fresh is the data?
Every view carries the time of its snapshot. We separate when something happened, when it was published and when it last materially changed.
What does a satellite see?
A satellite registers heat. A detection is not a confirmed fire, and the absence of a new detection is not confirmation that a fire is out.
Where do the weather warnings come from?
The national weather services issue them, and Vidik takes them from Meteoalarm (EUMETNET – MeteoAlarm, licensed CC BY 4.0) every two minutes. The level, the regions, the period and the text of a warning are the service’s. We show the text unchanged and in full, in every language it was issued in and in the service’s own alphabet; the region names and the summary beside it are Vidik’s. Meteoalarm asks everyone who redistributes its warnings to publish this notice: “Time delays between this website and the www.meteoalarm.org website are possible. For the most up-to-date awareness information as published by the participating National Meteorological and Hydrological Services, please refer to www.meteoalarm.org.”
What do we cover, and what not?
The region is the Western Balkans; the number of tracked sources per country and per municipality is published. An event whose text is about a country outside the region is counted under World, which lists the newest 60, and is not drawn on the map.

What one event is

An event is not an article. When several newsrooms cover the same thing, those pieces are joined into one event and we count how many there were and who wrote them. That is why a card reads “18 sources” instead of the same fire appearing eighteen times.

Pieces are joined on content similarity, names and place, with time decay — two pieces twelve hours apart count for half of two published together. A cluster accepts new pieces for 48 hours after the last one. The join threshold is 0.40 and was not chosen by eye: it was measured against a hand-labelled day, where it scores best.

Joining errs in both directions. On that labelled day the pairwise accuracy is 0.82 — so some events stay split and some are merged that should not have been. We publish that figure rather than leave it out.

How often this updates

We follow 113 sources. Each has its own rhythm — from 2 to 60 minutes — because they do not all publish at the same rate and because no site is polled harder than it needs to be. Times on cards are local, Sarajevo time.

Language and script

BiH writes one language in two alphabets, and the rule follows the page rather than whose words they are. On the Bosnian, Croatian and English versions the news list, the cards and the map render in Latin — headlines, summaries, extracts, place names and outlet names — even where the publisher set them in Cyrillic. On the Serbian version they stand as written. One exception: on an individual event’s page the extract from the source, and the sharing data built from it, stay in the publisher’s alphabet, so there is always one place that shows how the source itself wrote it. Nothing in the database changes.

Transliteration runs one way only. Cyrillic to Latin is unambiguous; the reverse is not: “nj” is “њ” in “konj” but “н” + “ј” in “konjugacija”. That direction needs a lexicon rather than a table, so we do not do it. We publish the asymmetry rather than hide it.

We do not translate sources publishing in Albanian or Macedonian — automatic translation is not part of this product. They are held out of the main list, always with a count and always one click away. The split follows the language each source declares for itself, never automatic language detection: detection labels every Meteoalarm warning English although the headline reads “narandžasti nivo upozorenja”.

When Vidik has summarised a group of reports about one event, the summary on the card is our description of that group rather than any article’s text: written by a language model instructed to describe rather than characterise, and passed through the defamation check before publication. The headline on the card is the source’s own, exactly as published, until such time as we write the headline too. Where our summary is missing — the group is not summarised yet, or the check refused the text — the card carries the source’s text there as well. Either way the source’s headline stands unchanged on the event page, next to a link to the original.

What counts as an event from this region

An event whose own text is most about a country outside the region — a hotel fire in India, a strike in Gaza — is counted in none of this page’s numbers: not the bands, not the municipalities, not the active sources, and it is not drawn on the map. It is not deleted: the “World” section of the news list counts every such event and lists the newest 60, and each one’s own page works like any other. The region is Bosnia and Herzegovina, Croatia, Kosovo, Montenegro, North Macedonia and Serbia — the same set of countries we track sources from. One exception: when places inside the region carry at least 40 per cent of all the places a text names, the event stays in the list (a story about a boy from Žepče being treated in Turkey is news from BiH) — but it is still not drawn on the map, because it did not happen here.

This rule reads the place the sources named, so it cannot catch an event wrongly placed inside the region. The known case: with diacritics stripped, the Vojvodina town of Inđija looks identical to the country Indija, so a fire in an Indian hotel is given a Serbian location and stays in the numbers. That is a mistake in place recognition rather than in this rule, and it is being fixed separately. We write it here because it should be known.

The map and location precision

A marker is drawn only for a place the model named and our register recognised. When the model does not say where it happened, there is no map — better nothing than a point the sources do not support. Those events are not deleted: they stay in the list, and the map states how many it held back and why. A name the register does not recognise is likewise not drawn; it is recorded so the register can be filled in.

One event can carry several points: queues at four border crossings are four locations, not one. The order is the order the model gave them — the first is where the event itself happened. When several events share a point, usually a municipal centre, the map merges them into one marker with a count rather than nudging them apart. Nudging would invent coordinates.

A river is not drawn as a point: the only point the register holds for a river is usually its mouth. When the sources name a river, the map draws its course from OpenStreetMap (© OpenStreetMap), and only the stretch they name — the upper, middle or lower course, as Vidik’s split points divide it. Where the sources name a stretch Vidik has no split points for, the whole course is drawn and no municipality is shaded. When the sources name the river or its basin as the area the story concerns, the municipalities that stretch flows through are shaded. The basin’s boundary is not drawn: in karst, water drains underground and an elevation model does not see it accurately. The shaded area describes the river the sources named; it is not an assessment of consequences.

Severity

Severity is the sum of seven terms. Each is reduced to a value between zero and one, multiplied by its weight, and added. Here are all seven and what each carries:

How many independent sources report it40
Base weight of the category20
Trust in the strongest source10
Whether an official source reports it too10
How sharply coverage is accelerating10
How many people live in the affected area5
Weight-carrying words in the text5
total100

What each term contributed is stored with the event, so the sum can always be broken back down.

Signal bands

Low0–19
Moderate20–39
Strong40–69
Very strong70–100

Coverage and asymmetry

We publish it because asymmetry is not hidden. The count per bloc, and the arithmetic behind it:

FBiH42 src / 79 mun. = 0.53
RS19 src / 63 mun. = 0.30
Brčko3 src / 1 mun. = 3.00

Coverage is a bloc’s tracked sources divided by its municipalities. The ramp stops at one source per municipality, so Brčko clips off the top.

What is missing

  • Stanari has no boundary in the geoBoundaries source dataset. It was separated from Doboj in 2014 and is shown as part of Doboj. 142/143 · Stanari
  • The media signal index is not calculated yet. Its formula will be published here before the first number appears.

Sources

Trust weights are published, with a justification against each source.

Sources — BiH 88 · region 25 · asymmetry FBiH 0.53 : RS 0.30 per municipality

What a machine writes, and what it does not

A language model does two things here: it writes the summary of a group of articles about the same event (and the daily brief), and it names where the event happened, as the sources name it. Every such name is checked against our own place register — only a name the register recognises is drawn on the map, and a name it does not recognise is recorded for review and left undrawn. The coordinate and the administrative codes are taken from the same register row, so they cannot contradict each other. Everything else runs locally and on rules that do not change from case to case: language, names, category, duplicate matching, grouping into events and the severity arithmetic. The model does not decide what is serious, who an event concerns, or when an alert is sent.

A summary can be wrong. Where a summary and the cited source disagree, the source governs and the summary is an error we correct. That is why every summary carries the number of sources and the full list of them below it.

Event timelines

Larger events carry a timeline: short entries describing what new reports added since the previous summary. Entries are written by a language model and pass the same checks as summaries, plus a check that they do not reproduce source text; each entry describing a change carries the number of reports it was written from.

Only events with at least 20 reports earn a timeline — the rest have too little progression to narrate. Entries appear when a cluster grows substantially or changes severity band, not continuously, so an event without new entries is not an event without developments.

A published entry is never edited or deleted; corrections go to the corrections page. Timelines accrue from the day the feature launched, so older events have none.

People, names and judicial status

We label events, not people. No number on this site refers to a named person: severity is computed for an event, never for somebody mentioned in it. We do not profile individuals, do not track people over time, and keep no list of names.

A private individual’s name appears only as the source published it, with that source cited immediately beside it. We add nothing and infer nothing beyond what the source says.

Judicial status is never collapsed. These four are four different things:

  • osumnjičen, under suspicion: no indictment
  • optužen, indicted: the indictment is confirmed, there is no judgment
  • nepravosnažno osuđen, convicted at first instance: appeal is open or running
  • pravosnažno osuđen, finally convicted: proceedings are concluded

Until a judgment is final, the presumption of innocence applies. That is how we write, and it is stated on every event page concerning a legal proceeding.

The sources’ copyright

We do not republish anybody’s articles. We show the headline, an extract of at most 25 words, the source’s name and a link to the original. Copyright stays entirely with the source, and the full text we process internally is never displayed and never passed on.

A publisher who does not want to be followed writes to the removal address and is removed the same day, without questions and without conditions.

Corrections and right of reply

Every correction and every removal is written into a public log with its date. If an event concerns you, you may send a response and we attach it to that event. The log is only appended to; a published entry is never edited and never deleted.

Corrections log

Calendar

The calendar lists dates known in advance to draw coverage: elections and statutory deadlines, and announced gatherings. It is not a forecast — we do not claim something will happen, only that something is scheduled. An entry for an announced gathering stays accurate even if nobody turns up, because it records the announcement rather than the outcome. The calendar deliberately lists no anniversaries and no religious observances. The rule is: what an institution scheduled, and seasons that recur — not commemorations. Listing some anniversaries and not others would be a position, and listing all of them would still ask a reader to accept our reason for putting their date on a risk calendar.

Dates from reporting

The calendar also takes dates from the news. When a report announces a protest, a blockade, a strike, a session, a law coming into force, an election or a planned power or water cut, the model quotes the exact words the date was announced in, and a rule, not the model, works out the day from them. A protest, blockade or strike enters only once two independent sources or one official source carry it; the rest enter on one source. Such an entry is labelled “According to reports” with its number of sources and links to the event it was taken from. When an institution publishes the same date itself, its entry wins and the event is attached to it. The calendar therefore inherits the unevenness of coverage: places the press writes about more get more dates, and we publish coverage by country on this page. Planned cuts from a published schedule come only from Elektroprivreda BiH for now, and cover only its area of the Federation of BiH; from the rest of the Federation, Republika Srpska, Brčko District and the neighbouring countries, only cuts the press reports enter the calendar. That is a difference in sources, not in reality.

What these numbers are not

Vidik measures media signal intensity. It does not predict events and it does not assess danger.

Not an emergency service. In an emergency call 122, 123 or 124.

Questions and corrections

An error in an event, a removal request, or anything else:

Contact