Tomorrow happens. Overmorrow reports it. You read it today.
The Overmorrow is a newspaper written two days ahead. The edition dated day D+2 is published at 06:00 on day D and reports what we expect to happen on day D+1. Every report rests on an event that is scheduled or firmly expected, and every report carries at least one forecast: a binary claim with a stated probability, a deadline and a rule for checking it.
After the events, each claim is checked against a primary source and scored. Editions are never edited after publication. The full record, including every miss, is public in the archive and on the accuracy page, and the git history of this repository shows exactly when each forecast was made.
This document is the full protocol. The step-by-step operating manuals for the people and agents who run it are in pipeline/EDITOR.md (writing an edition) and pipeline/RESOLVER.md (scoring an edition).
An evening desk the day before does the slow work: it keeps a 14-day agenda, selects the candidates, writes a research dossier for every proposed claim, runs the first round of forecasts and updates the forecast board (section 10). The morning run then scores whatever has fallen due, checks what changed overnight, re-forecasts what moved, and writes and publishes the new edition. A shorter run after midday updates that edition with what has become known since the morning (section 4.8).
| Step | When (Europe/Paris) |
|---|---|
| Evening desk: agenda, dossiers, first forecasts, forecast board | About 18:40 on day D−1 |
| Morning run starts | About 05:00 on day D |
| Claims due are resolved and stamped onto archived editions | First part of the run |
| Information cut-off and freeze | Early morning of day D, recorded as frozen_at |
| Edition dated D+2 published | By 06:00 on day D |
| Afternoon update of the same edition | Run starts 12:20, published by 13:30 on day D |
| Previous edition moves to the archive | At the same moment, when the new edition replaces it |
| Events forecast | Day D+1 |
| That edition's claims resolved | In the 06:00 run of day D+2, once the day's results are known |
So an edition is on the front page for one day, goes to the archive the next morning, and receives its results the morning after that, on the date it bears.
Nothing learned after frozen_at may be used in the edition. If a decisive fact emerges between freezing and publication, the edition is re-frozen and the new time recorded.
Every edition starts with a sweep of official calendars for day D+1. The registry of sources lives in pipeline/sources.json and is checked in full every time. It covers:
Many important events have no calendar entry: negotiations, wars, crises, campaigns. For each running story we read the reporting of the previous 48 hours from at least two independent outlets and identify the next step that is expected on day D+1.
Every candidate is recorded with:
official (in an institution's own calendar), reported (announced in at least two credible outlets), or speculative. Speculative items never lead the paper and may appear only in briefs.The candidate pool for one edition should contain at least 40 events before selection.
Each candidate gets three scores from 1 to 5:
The editorial score is Impact × Reach × Uncertainty value. Candidates are ranked and then fitted to section quotas, so that each edition covers the Czech Republic, world affairs, Europe, the economy and at least one item from science, health or culture when one qualifies. The World section is the largest; EU institutional stories are capped at three per edition, including the front page. Sport and financial market prices are excluded by policy.
Every report carries one or more claims. A claim must be:
resolves_by), normally 23:59 CET on day D+1.resolution_source) and the exact test (criterion).Probabilities are held between 3% and 97%. Anything more certain is not a forecast and is reported as a scheduled fact instead.
Where several claims are mutually exclusive (for example, which of three finalists wins), they are published together as a set and must sum to 100%.
Each claim goes through the same protocol. All steps are recorded in the edition file under rationale, so that misses can be examined later.
Find the reference class: the set of comparable past cases. Examples: "trilogue agreements put to a final plenary vote in the 10th term", "budget first readings with a coalition majority in the Czech Chamber", "runoff polls within two points four days before a vote". Record the base rate and the size of the class. Base rates come from data wherever possible: pipeline/reference-data/ holds rates computed from the Czech Chamber's open voting records, the record of final polls against election results, and central-bank decisions, with the scripts that rebuild them. The library of reference classes in pipeline/reference-classes.json grows with every edition.
List the specific factors that move this case away from the base rate: vote arithmetic and group or party positions, public statements, procedural rules, the record of the actors, schedule risk. Each factor is written down with its direction and a rough size in log-odds, so that the final number can be reconstructed.
Where they exist, use independent aggregates: prediction markets (Polymarket, Kalshi; weighted by liquidity), Metaculus community forecasts, polling averages rather than single polls, analyst consensus for data releases. The price read at the time of forecasting is stored with the claim and used as a benchmark in scoring. A forecast that departs from a liquid market by more than 15 percentage points needs a written reason.
Each claim starts from a research dossier: the confirmed schedule, dated facts with their sources, the base rate, matching markets and the risks, but no probability. Five forecasters then work on it without seeing each other's numbers:
The five probabilities are combined by the geometric mean of odds. If they differ by more than 25 percentage points, all five receive the union of the facts (without the numbers) and forecast again once; if they still differ, the evidence is reported as mixed, or the claim is rewritten. Every forecaster's number is stored with the claim and scored separately, so that once enough claims are resolved the forecasters can be weighted by their record.
Claims are chosen for their information value: at most a quarter of an edition's claims may lie below 10% or above 90%.
A separate reviewer reads the finished forecasts with one question: what is most likely to make us wrong tomorrow? Any new, decisive fact sends the claim back to step 4.4.
The final probability, the claim text, the criterion and the rationale are written into the edition file, which is committed with its timestamp. From then on nothing in it changes.
After midday the same edition is updated, following pipeline/UPDATE.md. A morning claim is revised only when a new fact published after the morning freeze moves the full ensemble by at least 5 percentage points; the revision states the new fact and its source. Up to three stories may be added for events newly announced for the next day. The morning file is never changed: revisions and additions are stored separately with their own freeze time, readers see "morning 55% → afternoon 70%", and both versions are scored. The accuracy page compares morning and afternoon figures on the same claims, which shows whether the updates help.
data/corrections/). The edition file and its forecasts are not changed.Resolution is done by a reviewer who did not write the edition, following pipeline/RESOLVER.md:
yes, no or void, with an evidence link and a one-line note.If the criterion is ambiguous, the resolver applies the reading a neutral observer would take from the claim text alone and notes the ambiguity. Ambiguous claims are counted, and the writing rules are tightened when they recur.
Void claims are listed but not scored.
On the archived edition, each scored story and stamp is coloured on a scale from red to green by its closeness: the probability we gave to what actually happened. A 90% forecast that came true is 0.90 (green); a 55% forecast that came true is 0.55 (amber); a 90% forecast that failed is 0.10 (red).
pipeline/sources.json.During the launch period each morning's run is prepared as a pull request and goes live when the publisher approves it; Netlify builds a preview of each pull request for review. The approval period is set in pipeline/config.json. After it ends, the run publishes by itself by 06:00.
Edition No. 1 was produced before this protocol was complete and is marked as a pilot. It is scored like every other edition.
Besides the daily edition, the paper keeps a board of 25 to 40 standing questions about the months ahead: elections and government formation, budgets, central-bank decisions, wars and negotiations, at least a third of them Czech. Each has an exact criterion, a deadline and a primary source, like any claim. The evening desk checks them every day and re-forecasts them with the full ensemble whenever something material happens, and at least weekly; a new figure is recorded only if it moves by 5 points or more. Earlier figures are never changed, so the history shows how each forecast developed. Resolved questions are scored by the time-averaged Brier score: every hour the question was open counts, so being right early is worth more than being right at the end. When a daily story moves a board question, the story says so.