About
I wanted to check whether this much is really happening.
Projektometr is a private, civic project: an organised database of Polish megaprojects, with a source link behind every fact. No politics, no verdict on governments – so you can judge for yourself.
Why it was built
I had the impression that a lot has been happening in Poland lately – a lot is being built. But that knowledge was scattered: it appeared in one news item after another that I read, and vanished just as fast. It was easy to miss, or to dismiss upfront as propaganda – from one side and the other.
I wanted to check it – to form a hypothesis and verify it, separating hard facts from social-media noise. So I started using my own AI tools to confirm every fact against sources – cost, status, deadlines, what actually stands and works, and what failed.
When I saw how much of it holds up – and how much doesn’t – I thought it was worth sharing these grounded findings with others. Not to convince anyone, but so that everyone can check for themselves. Hence Projektometr.
How we verify
- Overriding rule: no source → no claim. Every fact (cost, status, stage, deadlines, owner, reason for failure) has an attached source quote, URL and retrieval date. What cannot be confirmed, the card does not show. One exception, named plainly: the six outcome axes are our own reading, so the raw record in the API carries it even without a quote, flagged in outcome_grounding as ungrounded. Across all six axes there are 466 such values out of 988, and the card draws none of them. Below, the same thing counted more narrowly, for the four axes promised here.
- Inclusion threshold. Cost ≥ PLN 500 million or strategic status (which is why there are also digital, space and defence projects below that amount).
- Success isn’t binary. Instead of a “success/failure” label we show facts across several axes: whether it was delivered, on time, on budget, and in use. Radom was built – but handles 3% of its design capacity. That’s visible in the data, not in our verdict.
- Four axes, unevenly filled. 338 of 383 records carry an outcome assessment. The database treats 201 of those as settled. Among the settled records the delivery axis carries a documented value in 167 cases: delivered in 152, partly in 3, and in 12 a source says outright that it was not delivered. Use is documented on 118 settled records. Schedule on 66. Budget on 22. The other 179 carry no budget verdict, although 157 of them show a cost on the card. An overrun is documented in 25 records. An on-budget delivery in 2, a below-budget close in 3. Those last three run across every record with an assessment, not only the settled ones. 124 records show no row from the four axes at all. 34 of them carry a completed status.
- Failures the same as successes. Cancelled and superseded projects are in the database with the same source rigour. We don’t hide them.
- “Value-by-stage”, not “total cost”. Amounts are nominal (prices from various years, no inflation adjustment) and are an inventory for comparison, not a ledger of state spending. The fixed rate (EUR 4.30 / USD 4.00) applies to amounts recorded in a foreign currency. Some zloty figures are conversions from a foreign currency, recorded in our dataset at the rate of the investment year rather than at the site rate, so dividing them by our rate will not reproduce the figure in the quote. The amount the source gives then stands on the card under the number. The sum is built from 316 of the 356 records inside the aggregate. The other 40 have no confirmed cost, so they count towards the number of projects and add nothing to the amount. Of the 316 amounts in the sum, we recorded 25 as gross and 16 as net, so the sum mixes both bases; for the other 275 (some 1195 bn PLN) we have not recorded the basis. Counted entirely gross, the same sum would be higher by at most 283 bn PLN (23% of the net amounts and of those without a recorded basis). Separately, 17 records with a confirmed cost sit outside this sum altogether, some 373 bn PLN in total – programme parents whose sub-projects are counted instead (CPK among them), cancelled projects, foreign purchases that build nothing in Poland, and one record kept for context only.
- The outcome axes are an assessment layer and are grounded less firmly than the rest of the schema. Of the 760 values recorded across the four axes, 266 have no confirmed quote from a source the record lists, which is why the card does not show them. 492 get a row, and a further 2 are contradicted by the record's own timeline. Separately, the cards draw 28 rows for scope and losses; the manifesto does not promise those, so they sit outside the figures above. The raw assessment still ships from /api/, because it is our reading of the record; what stopped is passing it off as a finding from a source.
- The budget axis is the thinnest, and the reason is structural enough to be worth naming. A cost is recorded on 333 records, a budget verdict on 30. Not for want of looking: a record's timeline carries two dates, the original deadline and the current one, so a slip falls out of subtracting two fields that already have sources, which is why the schedule axis stands on 100 records. A cost is a single figure, with no “planned” and “actual” pair, so an overrun cannot be computed – a source has to name it, in one sentence comparing both amounts. Polish sources publish the contract value far more often than they publish that comparison. It means this database cannot support the sentence “X per cent of investments run over budget”, and it is better to learn that here than halfway through writing.
- The quote gate works per field, so a sentence grounding a cost never reached the budget axis it plainly supports. We swept the confirmed cost quotes for wording describing a change in the amount: 18 found, 8 pinned to the axis, and 10 carrying a recorded reason for refusing, in /api/decyzje-osi.json. None was left undecided, and a gate repeating the sweep keeps it that way.
- What this gate cannot check. It requires a quote filed under the field and asserting the value, but it cannot judge whether the quote really supports it, and no gate can. 465 of the 492 rows shown stand on exactly one sentence from a source, so a stretched quote has no second one to replace it. The last review of this layer withdrew 22 quotes out of 296 added: availability mistaken for use, a plan instead of an outcome, a forecast instead of a settlement. 54 rows point at Wikipedia, because no other reference on the record carries a quote for that axis, and our count of independent sources treats Wikipedia as zero. We publish these figures, because without them “no source, no claim” would read wider than it reaches.
- Editorial sign-off does not cover the whole database: the counter in the data-state section below says how many records have it, and each record’s card says whether it does. The data is machine-verified against sources and every fact is cited, but full editorial review is still in progress – which is why unsigned cards carry a note saying so, and why we state it here rather than leaving it to be discovered in the API.
- We keep macro data separate. GDP, convergence, road kilometres are official statistics (Eurostat, World Bank, GDDKiA) – context, not proof, and we never mix them with project costs.
How to read a project card
- Status and stage
- Status says whether the investment is planned, under way, completed or stopped (cancelled, superseded or paused). Stage says how far it got: announcement, permits, tender, construction, commissioning or operation. For a stopped investment it is the stage where it stopped. The badge is usually the status word: “planned”, “completed”, “cancelled”, “superseded”, “paused”. Only for an investment under way does it take its word from the stage: “under construction” during construction and commissioning, “in preparation” at announcement, permits and tender, “operating, being expanded” when the facility already works, and “in progress” when no stage is recorded.
- Quote
- Every fact on the card (cost, dates, status, stage, owner) rests on a quote: a sentence copied from the source page, stored with its address and retrieval date. A quote is meant to match the page character for character; the audit paragraph below says what we have checked so far and what we have not. A quote is not a summary. If the source has a typo, so does the quote.
- Unsupported
- A claim its source does not support: it speaks of something else or of the future, the sentence is no longer on the page, or we inferred the value ourselves instead of copying it. The card does not show such claims and no field rests on them. They stay in the evidence layer (/api/evidence.json) with the verdict unsupported and a reason in the note.
- Outcome axes
- Six questions: was it delivered, on time, on budget, is it used, does the scope match what was announced, and were there losses. An axis row appears only when a confirmed quote stands under it. For the first four the card always accounts: the caption above “How it went” says how many rows are missing and why (the axis is not assessed yet, the assessment has no confirmed quote, or the record's own timeline contradicts it). The caption does not count scope and losses, because the methodology above promises only the first four; a scope row appears with a quoted assessment, and a loss row only for a documented loss. A missing row never means that everything is fine.
- Slip
- The gap between the original and the last stated date, or the delivery date: in months when both ends have a month, in years when either is a bare year. For a completed record with no delivery date it is counted to the last stated date, and the card says so; handover may have come earlier or later.
- Audit finding or investigation
- An amount named by a state audit or examined in a prosecutor's investigation. It enters neither the sunk-cost nor the write-down total; the “Failed” page lists such amounts separately. On its own it does not say whether anyone has been charged.
- Value by stage
- The amount the record holds at its current stage: a contract value, a programme budget, an estimate or an EU-eligible cost, and the line under the figure says which. It is not a total cost or a state outlay.
When a record goes on the “Failed” list
When its status is cancelled, superseded or paused, or when a source documents a shortfall material to the project's scale, meaning five percent of the cost or more: established, named by an audit, or under investigation. The rule does not count delays or overruns, so the home page gives them alongside, as separate fractions. We compute the failure rate only over current-era records that are completed or stopped (cancelled, superseded, paused), because a project under construction or planned has no outcome yet either way. The full list: “Failed”.
Verbatim audit of quotes
In September 2026 we checked, character for character, the confirmed quotes under status, delivery date and the outcome axes, on the source page or its archived copy, and quotes stripped of Polish letters in every field. Quotes under the other fields (among them stage, start and planned dates, cost, locations, owner, funding sources) await a full pass. We fix in batches: paraphrases, sentences joined with “(...)”, translations and quotes stripped of Polish letters. Claims whose note contains the phrase “poprzedni zapis” (previous wording): 711; the note usually quotes the old text in full, and /api/evidence.json carries every note. Some quotes still do not match their page: some await a manual check because the page does not respond, blocks robots or builds its text in the browser, others await the next batch. Confirmed claims today: 4,860; marked unsupported: 434.
Data state and updates
Commitment: Projektometr is a dated snapshot, refreshed monthly. Every record has a verification date; each month we re-check projects that may have changed (new tenders, deliveries, slips), add new ones, and fix errors. The “as of” date is always visible, so you know how fresh the data is. How many records currently carry a verification date from each month: September 2026 36, August 2026 10, July 2026 337. This is a freshness distribution, not a measure of work: a record re-checked later counts only in the month it was last verified, so older months understate how much we actually reviewed.
Translation: 145 of the 383 records have no English version. Their titles and summaries stay in Polish and are labelled on the card. Where an English version exists it is machine-translated from the Polish source and machine-verified, and the Polish record remains the authoritative one. We say this here because this page holds us to account for every other limit, and this one belongs on the list.
What’s in the database
383 projects across 9 domains
This is the number of projects in the catalogue – regardless of cost, length or status. The “Leap” section on the home page shows something different: the scale of what has already been delivered.
Neutrality
We show investments from governments of every stripe, public and private, without pointing to who deserves credit and who deserves blame. We don’t judge politicians or parties – we show facts with a source link and let you judge for yourself. This is not the site of any political camp; neutrality here is a condition, not a decoration.
Sources and corrections
The median is 6 sources per record, with at least three independent ones, from which 4 documented exceptions are made: projects built from sections that independent media cover one at a time, never as a whole. Most links go to media, general and trade. 352 of 2,391 links point at a gov.pl domain. That is not the whole of government: investors and city offices usually run their own domains, so the figure describes a domain, not a kind of source. Wikipedia takes 157, and it counts as zero in the independent-source tally. A permanent archive copy exists for 1,847 links. Key facts additionally carry a source quote. Found an error, or do you know of a project that’s missing? Write to kontakt@projektometr.pl – we check every submission against the source. The database is open and machine-readable (see for developers and AI).
How to cite
Cite a record with its name, the card address and the date you read it. The card gives the date of its last verification, and the content can change at the next review. Example:
Projektometr, “Warsaw-Radom Airport (expansion of the Radom-Sadków airport)”, https://projektometr.pl/en/project/lotnisko-warszawa-radom/, accessed 10 September 2026.
API responses other than the snapshot files carry a release.commit field. The site code is closed, so it identifies a release rather than giving you an address to fetch it from. What you can retrieve yourself are five fields of every record (status, stage, cost, cost currency, current date) from the dated snapshots listed at /api/snapshots/index.json. A written snapshot is not recomputed from newer data. Cite a sentence from a source to the source, not to us. The card gives its address and the date listed for the source (usually its publication date); the date each quote was retrieved is in /api/evidence.json, field retrieved_at.
Who runs this
Projektometr is run by one private individual: Krzysztof Głuszczyk. There is no company, foundation or newsroom behind it, and no team. That also means every figure on this site has an address attached to it. The site code is closed, but the data is not: the whole database is served by an open API under CC BY 4.0, so you can go from a number on a chart to the record and check it against the source. Developers. Questions, corrections and missing projects: kontakt@projektometr.pl.
Funding
The site runs on reader donations. There are no ads, no sponsored content and no party or government funding. It also takes no money from the entities described in this database, or from companies connected to them; a payment that arrives anyway will be returned. The rule is meant to stay simple: asked who stands behind this, the answer is “readers”.