Skip to main content
Qipu

Our method, explained.

The City of Paris accounts are public, but scattered across several portals and written in technical language. This site brings them together and presents them in plain French.

01Construction

From raw data to a readable figure

All sources go through the same four steps, on every update.

01

We fetch

We start by downloading the open datasets published by the City, by the State (national public procurement, business register) and by the regional decentralised services (social housing). When a budget item doesn't appear in those files (often the case for the detail of investments localised by arrondissement), we go read it directly in the administrative account PDF. No transformation at this stage: the source is archived as it was published.

02

We stitch & translate

The official accounting labels (chapters, functions, M57 codes) are first translated into plain language. Then sources are connected to each other. We identify the company receiving a grant by its SIRET number. For an investment project, the precise address is what locates it. And for a public contract, its number lets us trace back to the project it funds.

03

We enrich

Some useful information is missing from the published files. For each grant recipient, we complete its record from the national business register kept by INSEE: legal form, main activity, registered office. When an investment project's address is ambiguous or a contract has too technical a label, a language model proposes a category or location, which can always be traced back in the source of origin.

04

We publish

Once everything is computed, the figures are saved in stable files. The site displays them as-is, without any live recalculation, so two successive visits show exactly the same values. A page's content only changes when the pipeline is re-run and a new version of the site is published.

Hard rule. A language model is never used to produce an amount. Its role is limited to text: categorising, describing, finding an address. All of the site's financial aggregates come from reproducible calculations, run directly on raw data.

02Sources & provenance

Where the figures come from

Six public portals. And for each tool on the site, the full path from source to screen.

From the City, and only from the City: no data published here has been reconstructed or estimated from elsewhere. For the few qualitative financial ratios the City does not publish as open data (weighted average rate, debt maturity for example), values are explicitly marked as "indicative" on the relevant panel.

Individuals: aggregated, never by name. The administrative-account annex also lists aid paid to individuals — a few hundred euros each, labelled “Personnes physiques” by the City itself. The source dataset publishes them by name; this site makes a different choice: amounts remain visible as a per-year aggregate, but no individual's name is indexed or searchable. A name attached to an aid payment reveals a person's social situation, with no public-scrutiny value at the individual level — these rows carry neither purpose nor department. Some years (2020-2021) already arrive aggregated as a single line in the source. The name-level detail remains available in the City's dataset.

PortalURLContent usedFreshness
OpenData Parisopendata.paris.frM57 budget, public contracts, grants, social housing, AP, balance sheet, guaranteed debt — 8 datasetsDaily to annual depending on dataset
data.gouv.fr — DECPdata.gouv.fr / decpConsolidated Essential Public Procurement Data (SIRET 217500* Paris filter)Yearly files 2019-2026
INSEE — SIRENEdata.gouv.fr / sireneBusiness register (SIRET, activity codes, headcount, sites) · free tier2 enrichmentMonthly
Base Adresse Nationaleapi-adresse.data.gouv.frAddress geocoding for investment projectsReal time
cdn.paris.fr (PDFs)cdn.paris.frCA appendices (localised investments), Budget Orientation Report, management accountAnnual (June N+1)
DRIHL Île-de-Francedrihl.ile-de-france…gouv.frSRU inventory, social housing stock at January 1st, Socle of applications/allocationsAnnual

Tracing a figure, tool by tool

Click a tool to see where its figures come from: each step of processing, all the way back to the public dataset they are drawn from.

03Freshness & audit

What is up to date, what is verified

Not all sources are maintained at the same pace. And an automated audit replays the figures on every update.

Freshness by source

Coverage by tool

Tool
'1314'1516'1718'1920'2122'2324'2526
Executed budget (CA)25,629 rows
Up to date
2018-2024
Voted budget (BP)8,598 rows
Up to date
2019-2026
Grants38,839 rows · 2020-2021 gap (non-comparable format)
Partial
2018-20192022-2024
Public contracts23,053 contracts (City + national DECP)
Up to date
2013-2026 · opendata.paris.fr + national DECP merge
Competition (DECP offresRecues)field not historised before 2024
Partial
2024-2025
Investments (AP dataset)dataset frozen
Frozen
2018-2022 · frozen
Investments (IL PDFs)~450 projects/yr
Partial
2018-2024 (CA)2025-2026 (BP)
Project ↔ contract match4,322 matches (seed)
Up to date
2018-2024 · stable hash object+awardee
Funded social housing4,174 operations
Up to date
2001-2024 (shown 2013+)
Housing pressure (DRIHL Socle)20 districts · 195,828 applications / 9,098 allocations
Partial
2024 (series starting)
Balance sheet1 bs/yr
Up to date
2019-2024
Off-balance-sheet (guaranteed debt)9,960 loans · €12.3bn outstanding in 2024
Up to date
2019-2024

Rule: the current year is always provisional until the final administrative account is published (~June N+1). Figures for an unclosed year are based on the voted budget.

Automated checks

On every update, automated checks replay the calculations and match the displayed totals against the raw sources, to the cent. Model-enriched information (categories, locations) must stay above documented reliability thresholds. And any gaps in the public sources are flagged as such on the relevant page. No figure on this page is typed by hand.

Loading audit…

Known limitations

The model rates itself. When the language model proposes a category for a grant or a location for a project, it attaches a confidence score to its answer. That score is self-declared. To make it reliable beyond this self-evaluation, it will need to be compared against a hand-labelled sample. That work is underway.

When our figures differ from the City's. On a given dataset, our totals are strictly identical to the City's: we never alter an amount. When a gap shows up, it usually comes from one of three reasons. Either the scope differs: we publish the main budget alone, while the City may communicate a "City group" that includes its satellite entities. Or our figure comes from the latest published dataset, itself sometimes lagging an official communication. Or we have translated a label without the underlying aggregate changing. If a gap persists without an obvious explanation, it's probably a bug. Report it.

Raw JSON ↗
04Commitments

AGPL pipeline, traceable corrections

The code that produces these figures is published in open access, under the AGPL-3.0 licence. Anyone can download it and re-run the calculations from the public sources to obtain exactly the same results. When an error is reported, it is fixed in the code and recorded in the project's public history with its date and source. We never rewrite history: any old screenshot or citation can still be linked to the state of the calculation at the time.

Report an error