La metodologia

Fonts de dades

1. RAISC — Font primària

El Registre d'Ajuts i Subvencions de Catalunya es la font principal amb ~19,5 milions de registres (2016–2026). Proveeix CIF del beneficiari, geografia (comarca, provincia, vegueria), tipologia del beneficiari, jerarquia de finalitats a 3 nivells, i codi BDNS. Publicat per la Generalitat de Catalunya.

2. BDNS — Font secundària

La Base de Datos Nacional de Subvenciones aporta ~300.000 registres actius (2022–2026) de subvencions d'administracions estatals i provincials que el RAISC no cobreix. Conte CIF i organisme atorgant, pero sense geografia. Finestra mòbil de 4 anys (sense dades pre-2022).

3. Dades Obertes de Catalunya — Contractes públics

~1,7 milions de contractes públics (2015–2026) importats via SODA API (dataset ybgg-dgi6, la mateixa font que contractes.cat). Inclou CIF adjudicatari, tipus de contracte, procediment d'adjudicació, número de lot, i import sense IVA. Els contractes amb múltiples lots es desglossen per lot individual. Es mantenen en una taula separada (contracts) i no afecten la puntuació Menjometre, pero s'utilitzen per a l'anàlisi de risc contractual i el càlcul de fons públics totals.

Reconciliació de dades

RAISC vs BDNS: 141.000 registres de BDNS que duplicaven entrades del RAISC (mateix codi BDNS + entitat) estan marcats com a superseded i exclosos de tots els càlculs. El RAISC es la font autoritativa: quan existeix al RAISC, el registre BDNS equivalent queda invalidat.
Bandera superseded: Indica que un registre ha estat substituït per una entrada d'una font de major qualitat. Els registres marcats com a superseded no computen en imports totals, comptatges de subvencions, ni puntuació. Això evita dobles comptabilitzacions.
Fons públics totals: El camp total_public_funds combina subvencions (no superseded) + contractes per entitat, oferint el quadre complet de finançament públic rebut.

Pipeline d'agregació

Els totals per entitat es calculen exclusivament sobre subvencions no superseded. L'agregació es fa directament en SQL per rendiment (segonds vs minuts amb PostgREST). El procés:

  1. Subvencions: SUM/COUNT agrupat per entity_id (clau canònica), excloent registres superseded = true.
  2. Contractes: SUM/COUNT agrupat per entity_id des de la taula contracts.
  3. Combinació: total_public_funds = total subvencions + total contractes.
  4. Vista materialitzada: homepage_stats_mv es refresca per servir estadístiques de la pàgina principal en <100ms.

Normalització d'entitats

Les entitats s'identifiquen mitjançant un procés de normalització en múltiples passos:

Generació del slug: El nom de l'entitat es converteix a majúscules, s'eliminen diacrítics (descomposició NFD), s'estandarditzen sufixos corporatius (S.A.→SA, S.L.→SL, S.C.C.L.→SCCL), i es reemplacen caràcters no alfanumèrics per guions.
Resolució d'identitat: CIF com a identificador primari (estable entre variacions de nom); slug com a fallback quan no hi ha CIF disponible. Les joins internes utilitzen entity_id com a clau canònica.
Beneficiaris no publicables: Entitats anonimitzades creades per departament amb is_anonymized = true.
Parsing del BDNS: El camp beneficiario del BDNS conté "NIF/CIF NOM ENTITAT" concatenat. Es separa via regex i el CIF es valida contra patrons espanyols (CIF: [A-Z]\d{7,8}[A-Z0-9]?, NIF: \d{8}[A-Z]).

Deduplicació

Cada font de dades té la seva pròpia estratègia de deduplicació, organitzada jeràrquicament:

RAISC: Unicitat per raisc_clau — prevé la reimportació del mateix registre SODA.
BDNS: Deduplicació en memòria sobre la combinació entity_slug|bdns_code|amount|department.
RAISC↔BDNS: La reconciliació marca els registres BDNS com a superseded quan el mateix bdns_code + entity_id existeix al RAISC.
Contractes: Deduplicació a dos nivells — primer per CIF: (codi_expedient, cif, lot_number) quan el CIF és disponible; fallback per slug: (codi_expedient, entity_slug, lot_number). A més, els registres resum (sense número de lot) s'eliminen quan el mateix expedient té registres específics per lot.
Entitats: Constraint UNIQUE sobre CIF (primari) i sobre slug (secundari).

Validació de dades

Regles de validació aplicades durant la importació:

  • Imports ≤ 0 EUR → registre descartat
  • RAISC: anys < 2016 o > 2030 → subvenció descartada
  • CIF amb menys de 6 caràcters → tractat com a nul
  • Contractes: han de tenir almenys un camp d'import (sense IVA o amb IVA)

Jerarquia de finalitats

Les subvencions es classifiquen segons una jerarquia de finalitats a 3 nivells:

  • L0finalitat_publica: Resultat públic (p.ex. "Educació")
  • L1finalitat_rais: 16 categories netes del RAISC — utilitzada per al càlcul de dominància
  • L2subfinalitat: Sub-categoria específica

El BDNS utilitza convocatoria (nom de la convocatòria) com a finalitat. Quan finalitat_rais no està disponible, s'utilitza el camp genèric purpose.

Dades geogràfiques

Font: El RAISC proveeix el camp codi_territorial (p.ex. "13_08"), mapejat a comarca, província i vegueria via la taula territorial_mapping (42 comarques + 4 províncies).
Cobertura: El BDNS no té geografia; els contractes tampoc. Les entitats hereten la geografia dels seus registres RAISC.

Classificació: entitats vs persones físiques

El RAISC identifica els beneficiaris amb codi de tipologia. Els codis PFA (Persona Fisica Autonoma) corresponen a persones fisiques: ~41.000 beneficiaris amb ~3.160M EUR en subvencions.

Aquestes persones estan separades del ranking principal i son accessibles al tab "Persones Fisiques". El ranking per defecte mostra només entitats jurídiques (associacions, fundacions, empreses, administracions).

Les ~256.000 entitats que provenen exclusivament de BDNS (sense codi de tipologia RAISC) es tracten com a entitats jurídiques, ja que el BDNS cobreix principalment ajuntaments, empreses i fundacions.

Etiquetes i categories

Tercer Sector: Classificació en 3 capes amb prioritat decreixent:
  1. Registres oficials (creuament per CIF): empreses d'inserció (dataset d9jt-yqkn), centres especials de treball (pr46-nkms), entitats jurídiques socials (y6fz-g3ff, filtrat per classificació + tipus d'entitat).
  2. Heurística CIF: beneficiary_type = "JSA" (associacions), excloent entitats públiques (CIF prefix P/Q/S, nom conté AJUNTAMENT, DIPUTACIÓ, etc.).
  3. Detecció per paraules clau al nom de l'entitat.
La capa 1 mai és sobreescrita per la 2 o la 3.
Premsa: Entitats i subvencions vinculades a mitjans de comunicació, identificades per 82 patrons de nom d'entitat (p.ex. "DIARI", "RÀDIO", "TELEVISIÓ", "EDITORIAL") i 13 paraules clau de finalitat de subvenció (p.ex. "comunicació", "premsa", "publicitat institucional").
Fundacions: Entitats amb "FUNDACI" al nom oficial.
Observatoris: Entitats amb "OBSERVATORI" al nom oficial.

Patrons contractuals

A partir de les dades de contractació pública, es calculen indicadors de risc que no formen part de la puntuació Menjometre pero s'exposen a la fitxa de cada entitat:

Adjudicació directa (sole-source): Contractes amb un sol licitador (num_bidders = 1), disponible per ~388.000 contractes. També s'identifiquen mitjançant el tipus de procediment: Contracte menor i Negociat sense publicitat. Quan la mateixa entitat + òrgan acumula 3 o més contractes amb un sol licitador, es nota com a patró de repetició.
Fragmentació (fraccionament): Contractes en el rang 14.900–15.000 EUR (just sota el llindar de licitació pública obligatòria de 15.000 EUR sense IVA, segons l'article 118.1 de la LCSP — Llei 9/2017). Quan un òrgan contractant adjudica 3 o més contractes en aquest rang a la mateixa entitat, es marca com a risc de fraccionament. Les entitats s'ordenen per nombre absolut de contractes propers al llindar. L'indicador es calculat, no prové directament del SODA.
Finançadors compartits: Identifica òrgans de la Generalitat que atorguen tant subvencions com contractes a la mateixa entitat, permetent visualitzar la relació financera completa entre administració i beneficiari.

Mètriques dinàmiques: Les mètriques de competència contractual (sole_source_pct, fragmentation_count, etc.) es calculen dinàmicament via la funció RPC get_contract_competition_stats en temps de lectura a les fitxes d'entitat, garantint valors sempre actuals sense necessitat de re-executar scripts d'anàlisi.

Xarxa de connexions

La secció Xarxa identifica persones vinculades a múltiples entitats receptores de subvencions. Les connexions es calculen a partir dels càrrecs declarats per les entitats, obtinguts del Registre d'Entitats de Catalunya (dataset obert de Dades Obertes de Catalunya) i del BORME (Boletín Oficial del Registro Mercantil). S'hi inclouen càrrecs de patronat, junta directiva, secretari, tresorer i similars — aproximadament 37.000 entitats estan enriquides amb aquesta informació.

Persones compartides: Quan el mateix nom apareix com a càrrec a dues o més entitats diferents, es crea una connexió de tipus "persona compartida". Això permet visualitzar xarxes de govern comú entre entitats.
Filtre institucional: Els patronats sovint inclouen institucions com a membres (p.ex. "Vocal: Generalitat de Catalunya"). Aquestes entitats institucionals es filtren automàticament i no apareixen com a persones. El filtre exclou noms que comencen per patrons institucionals reconeguts: Generalitat, Ajuntament, Diputació, Universitat, Fundació, Associació, Federació, Consorci, Institut, Patronat, entre d'altres.
Filtres addicionals: Noms amb menys de 5 caràcters després de normalitzar es descarten per evitar coincidències espúries (p.ex. inicials). Noms que apareixen a més de 10 entitats es descarten per evitar falsos positius per homonímia.
Per què una persona pot no aparèixer?
  • L'entitat relacionada no figura al Registre d'Entitats de Catalunya (~300.000 entitats no tenen dades de càrrecs disponibles).
  • El nom de la persona té menys de 5 caràcters després de normalitzar.
  • El nom apareix a més de 10 entitats — es descarta per possible homonímia.
  • El nom coincideix amb un patró institucional (Generalitat, Ajuntament, etc.) i es filtra automàticament.
  • La persona només apareix a 1 entitat — cal aparèixer a 2 o més per generar una connexió de xarxa.
  • Les dades del registre poden estar desactualitzades respecte la realitat actual de l'entitat.

Nota: Persones amb el mateix nom a diferents entitats poden no ser la mateixa persona física si no comparteixen CIF d'entitat. Les dades provenen de declaracions de les pròpies entitats i poden estar desactualitzades.

Enriquiment de dades

Les fitxes d'entitat s'enriqueixen amb informació addicional obtinguda exclusivament de fonts públiques. El procés d'enriquiment utilitza:

  • Registres oficials: Registre d'Entitats de la Generalitat, portal de transparència, registres mercantils i de fundacions.
  • Cerca web automatitzada: SerperAPI per localitzar informació pública sobre càrrecs directius, retribucions declarades i perfils institucionals.
  • Classificació amb IA: GPT-4o per estructurar i classificar la informació obtinguda (noms de càrrecs, tipologia d'entitat, sector d'activitat) a partir de fonts públiques ja existents.

Cap dada privada o confidencial s'utilitza en cap moment. Tota la informació prové de fonts accessibles públicament. El procés d'enriquiment pot contenir errors de classificació o informació desactualitzada.

Algorisme de puntuació (Menjometre Score)

El score es compon de 4 indicadors base, cadascun valorat de 0 a 100. Només es puntuen entitats amb un mínim de 3 subvencions i 5.000 EUR totals. Per sota d'aquest llindar, score = 0.

Quan existeixen dades de transparència (registre oficial, comptes anuals, dependència de subvencions), s'afegeix un 5è component (transparència) i es calcula la mitjana de 5 (20% cadascun). Sense transparència, es la mitjana de 4 (25% cadascun). Així, les entitats no es penalitzen per la falta de dades de transparència.

1. Volum Total

Percentil de l'import total rebut respecte a totes les entitats. Una entitat al percentil 95 rep score 95.

score_volume = percentile_rank(total_amount) × 100

2. Concentració Departamental

Índex Herfindahl-Hirschman (HHI) de la distribució per departaments. Si tots els diners venen d'un sol departament, HHI = 1 (score 100). Si es diversificat, HHI tendeix a 0.

shares = [import_dept_i / total_amount]
hhi = sum(share^2)
score_concentration = hhi × 100

3. Recurrència

Anys consecutius màxims rebent subvencions dividit pels anys possibles. 10 anys seguits sense interrupció = 100. Entitats amb només 1 any = 0 (no significatiu).

score_recurrence = max_consecutive_years / (last_year - first_year + 1) × 100

4. Dominància per Finalitat

Quota màxima de l'entitat en qualsevol finalitat. S'utilitzen les 16 categories de finalitat_rais del RAISC com a taxonomia primària; quan no disponible, es fa servir el camp purpose genèric. Només es consideren finalitats amb un total superior a 100.000 EUR (llindar de materialitat). Si una entitat acapara el 40% d'una finalitat = score 40.

score_dominance = max(entity_amount_in_purpose / total_purpose_amount) × 100

5. Transparència (opcional)

Disponible per ~53.000 entitats inscrites al registre d'entitats de la Generalitat. Combina: presència al registre oficial, comptes anuals dipositats, i percentatge de dependència de subvencions. Un score alt indica manca de transparència (no inscrita, sense comptes, alta dependència).

Quan no hi ha dades de transparència, aquest component s'omet i la puntuació es calcula amb els 4 components restants (25% cadascun), sense penalitzar l'entitat.

Categories de score

Baix
0-25
Moderat
26-50
Alt
51-75
Molt alt
76-100

Administracions com a beneficiaries

Les bases de dades de subvencions (BDNS i RAISC) inclouen transferencies entre administracions publiques. Per exemple, l'Estat transfereix fons a les comunitats autonomes, diputacions i ajuntaments. Aixo fa que la Generalitat de Catalunya aparegui com una de les principals receptores de subvencions, ja que rep fons estatals que despres redistribueix al territori catala.

Aixo no es una anomalia sino el funcionament normal del sistema de financament autonomic. Per facilitar l'analisi, hem afegit el tab “Administracions” a la pagina de subvencions, que permet filtrar i comparar exclusivament entitats publiques.

Sobre les dates

El camp “Data concessio” que es mostra a les fitxes d'entitat correspon a la data de concessio oficial de la subvencio, es a dir, quan l'organ competent va aprovar formalment l'atorgament.

Aquesta data no es la data de pagament (quan els fons es van transferir efectivament) ni la data de justificacio (quan l'entitat va demostrar l'us correcte dels fons). El proces complet sol seguir l'ordre: concessio → pagament → justificacio, amb mesos o fins i tot anys de diferencia entre cada fase.

Limitacions del score

L'algorisme de puntuacio aplica els mateixos criteris a totes les entitats independentment de la seva mida o tipologia. Aixo vol dir que un ajuntament gran i una associacio petita es comparen amb el mateix barem.

Recomanem comparar entitats dins de la mateixa categoria per obtenir una visio mes significativa. Utilitzeu els tabs de filtratge (“Administracions”, “Tercer Sector”, “Fundacions”, etc.) a la pagina de subvencions per comparar entitats de naturalesa similar.

Una puntuacio alta no implica cap irregularitat. Simplement indica que l'entitat presenta patrons estadistics (volum, concentracio, recurrencia o dominancia) que la situen per sobre de la mitjana en un o mes indicadors.

Equivalències orientatives

Per facilitar la comprensió dels imports, mostrem equivalències orientatives basades en costos mitjans estimats de fonts oficials. Aquestes xifres son aproximacions d'ordre de magnitud i no representen costos exactes.

Personal (serveis directes)

  • Abonament T-jove anual: 176 EUR — ATM, 44€/trimestre × 4.
  • Lot de llibres de text: 300 EUR — Mitjana editorials 2024-2025.
  • Menjador escolar/any (per nen): 1.320 EUR — DOGC, 7,54€/dia × 175 dies lectius.
  • Beca universitària completa: 6.000 EUR/any — Beca general MEC amb component de residència (~6.400 EUR). Font
  • Llar d'infants/any: 9.000 EUR — Ajuntament de Barcelona, preu públic 2024-2025.

Professional (salaris públics amb SS)

  • Plaça de residència: 24.000 EUR/any — Preu públic de referència Generalitat: 2.002 EUR/mes. Font
  • Infermer/a: 35.000 EUR/any — III Acord ICS 2024, mínim establert per DUI. Font
  • Mestre d'escola: 42.000 EUR/any — Dept. Educació 2024, brut + SS inclosa. Font
  • Mosso d'Esquadra: 45.000 EUR/any — Pressupostos Generalitat 2024, brut + SS.
  • Bomber: 48.000 EUR/any — Pressupostos Generalitat 2024, brut + SS.
  • Metge especialista: 55.000 EUR/any — Llibre de Retribucions ICS 2024 (rang 48-60K). Font

Infraestructura i equipament

  • Instal·lació solar (30kWp): 45.000 EUR — ICAEN, 1.500€/kWp.
  • Parc infantil municipal: 120.000 EUR — Cost mitja parc nou (100-150K).
  • Habitatge social (HPO): 180.000 EUR — Preus màxims Agència Habitatge (~2.500 EUR/m² × 70m²). Font
  • Km de carril bici urbà: 200.000 EUR — Mitjana licitacions municipals 2024.
  • Ambulància SVA: 250.000 EUR — Licitació 2025, rang 230-278K. Font (BOE)
  • Renovació d'escola: 620.000 EUR — Barcelona 2025, 64,4M/104 escoles.
  • Ressonància magnètica 3T: 1.500.000 EUR — Licitació Hospital Clínic Barcelona: 1,57M IVA inclòs. Font (BOE)
  • Escola pública nova (CEIP): 5.500.000 EUR — Mitjana 21 construccions noves Generalitat 2023. Font

Es mostren 3 equivalències seleccionades aleatòriament entre les adequades per l'escala de l'import, garantint diversitat de categories (personal, professional, infraestructura). La comparativa de la targeta compartible és sempre determinista.

Disclaimers

L'objectiu del Menjometre Score és ajudar ciutadans i periodistes a identificar patrons estadístics que mereixen atenció pública. La majoria de subvencions són legítimes i necessàries. Una puntuació alta identifica concentració, recurrència o dominància — no irregularitat.

Tot el codi és obert i auditable. Les dades es reprodueixen sense modificació des de les fonts oficials (RAISC, BDNS i Dades Obertes de Catalunya).

Codi font

Projecte open source. Inspirat per la feina de subvencions.cat i contractes.cat de Gerard Giménez Adsuar, que va obrir el camí fent accessibles les dades obertes de subvencions i contractes públics a Catalunya.

Aquesta web ha estat creada al 100% amb IA a instrucció de Segell Fosc — “Vanitas delenda est”.

github.com/segellfoscIA/menjometre →

Contribueix

Menjometre és un projecte obert. Si tens suggeriments, has detectat un error a les dades, o vols proposar una millora, obre un issue al nostre repositori:

Obre un issue a GitHub →