DMA and cartel methods
Why DMA non-compliance and cartel decisions skip the generic party reading, and what BINA does with them instead.
The generic case report reads parties out of the decision. Two kinds of decision do not fit that model, so BINA handles them with dedicated, deterministic methods.
#DMA non-compliance: rank victims by obligation
A DMA decision names the gatekeeper, rarely its victims. Who is harmed depends on which obligation was breached. So for dma_non_compliance documents BINA does not read parties at all. server/radar/dma.mjs applies a fixed chain:
obligation → victim category → method → signal sources → rank
- Levels are computed in code from evidence kinds, never asked of the model: a lawsuit or collective action ranks high; activity with another gatekeeper or service ranks medium; mere presence ranks low. A to-verify filter caps at medium. Ties break by the number of distinct sources.
- Signal sources are real APIs. Judilibre (via PISTE) covers court searches when
JUDILIBRE_CLIENT_IDandJUDILIBRE_CLIENT_SECRETare set; GDELT complements press criticism but covers only the last ~3 months. Each source reportsok,skippedorerrorinanalysis.coverage.sources. - Seed documents — workshop participant lists, signatory letters, parliamentary reports — are fetched, archived by SHA-256, and names are read out of the fetched bytes. Every seed lead is verified against that text (
coverage.seeds). - Competitor families run as separate blocks: competing ranked services, search engines, messaging services and competing stores. A company in two blocks carries
alsoIn. Sources with no integration are listed undercoverage.notSearched.
Counsel can re-run the method with POST /v1/radar/cases/:caseNumber/dma. Results persist as radar.dma.analysis.completed events.
#Cartels: a defence-side exposure report
For horizontal cartels (and cartels on the upstream side) in prohibition, settlement and cooperation decisions, BINA does not hunt for unnamed claimants. It produces a report on market-level exposure instead (server/radar/cartel.mjs):
- Practice type. A cartel type needs the legal-basis marker in its cited note; otherwise the type is
unknownand goes to review. - Stated figures only. Value of sales and duration are taken only where the decision states them, each quote passing
verifyQuoteand every number checked against its quote. - Exposure, labelled as an estimate:
affected commerce = annual value of sales × stated duration multiplier
exposure = overcharge rate × affected commerce (rates: 10% / 18% midpoint / 23%)A missing value of sales or multiplier is Not computed — BINA never back-calculates it from the fine. The whole-cartel line appears only when every fined member is computed.
- Legal map.
server/radar/legal-map.mjsis a frozen table written by the legal team (EU baseline and France). It only applies verified dates and facts through fixed templates. Countries absent from the table are shown as not covered.
Re-run with POST /v1/radar/cases/:caseNumber/cartel. Results persist as radar.cartel.analysis.completed events.