Comment ce corpus est construit
Le lexique, les codes CPV, les règles d'exclusion et les seuils de publication utilisés pour construire ce corpus — de quoi refaire le même tri, marché par marché, à partir des mêmes sources ouvertes. n = 221 marchés retenus, n = 2 014 écartés, relevé le 12 septembre 2026.
Les sources et la date du relevé
Ce corpus vient des Données Essentielles de la Commande Publique (DECP), publiées en licence ouverte sur data.economie.gouv.fr. Deux référentiels sont interrogés — le millésime 2022 et le schéma v3, qui coexistent sur la plateforme :
| Jeu de données |
|---|
decp-2022-marches-valides |
decp-v3-marches-valides |
n = 221 marchés sont retenus et n = 2 014 sont écartés au dernier relevé, le 12 septembre 2026, qualifié le 12 septembre 2026.
Le lexique et les CPV interrogés
La collecte interroge chaque référentiel avec deux filtres complémentaires : un lexique de termes cherchés dans l'objet du marché, et un préfixe de code CPV (classification européenne des achats publics). Un marché est collecté dès qu'il correspond à l'une de ces clauses — la qualification, plus bas, décide ensuite lesquels sont réellement retenus.
| Clause (langage de requête ODSQL) |
|---|
objet like "application mobile" |
objet like "applications mobiles" |
objet like "appli mobile" |
objet like "application smartphone" |
objet like "developpement mobile" |
objet like "application numerique" |
objet like "application web et mobile" |
objet like "application iOS" |
objet like "application Android" |
codecpv like "7221*" |
Comment un marché est retenu ou écarté
Un marché est retenu quand son objet mentionne explicitement une application pour un terminal mobile (les mots « application » et « mobile », « Android », « iOS », « smartphone » ou « tablette » peuvent être séparés dans la phrase). Ce signal l'emporte sur une mention incidente de matériel ailleurs dans le texte, mais jamais sur un signal d'exclusion plus fort : le matériel est l'objet d'un verbe d'achat (« acquisition de tablettes »), le marché relève d'un service de téléphonie, ou l'application n'est qu'une brique parmi plusieurs systèmes distincts énumérés dans le même marché. Cette règle a d'autres cas limites que cette page ne détaille pas un par un ; ce qu'elle republie, en revanche, ce sont les motifs et les effectifs réels que cette règle produit — jamais une reformulation indépendante susceptible d'en diverger.
Un même contrat est parfois republié sous un autre identifiant, dans le même référentiel ou dans les deux référentiels interrogés : n = 17 ont été retirés avant publication (clé : objet normalisé, montant, durée et titulaire identiques). Le raccord arithmétique complet : 221 retenus + 17 doublons retirés + 2 014 écartés = 2 252 marchés collectés, relevé le 12 septembre 2026.
Voici l'effectif écarté pour chaque motif, avec un exemple réel, tronqué :
| Motif | Effectif | Exemple réel | Ce qu'il signifie |
|---|---|---|---|
EQUIPEMENTAchat de matériel |
n = 74 | GCS UniHA - Equipements mobiles de radiologie : Arceaux de blocs et mobile de graphie - Ar… (9 166 667 €) | le marché porte sur du matériel (tablette, borne, arceau…), pas sur le développement d'une application. |
TELEPHONIEService de téléphonie |
n = 10 | Fourniture d'un service de téléphonie fixe sur IP, d'une application softphone et d'un ser… (38 000 €) | le marché porte sur un service de téléphonie (forfaits, flotte, opérateur mobile). |
LOGICIEL_NON_MOBILELogiciel sans terminal mobile |
n = 165 | Approvisionnement d'une application numérique de paiement du stationnement sur voirie par… (1 €) | une application ou un logiciel est mentionné, sans aucun terminal mobile (Android, iOS, smartphone, tablette). |
HORS_SUJETHors sujet |
n = 1 756 | INX La présente consultation concerne les prestations suivantes : \n- La mise à dispositio… (6 694 511 €) | aucune mention applicative ni mobile n'a été détectée dans l'objet du marché. |
PERIMETRE_MULTI_COMPOSANTSPérimètre multi-composants |
n = 2 | INX L'accord-cadre concerne la fourniture et l'installation d'une solution complète de mes… (170 000 €) | l'application n'est qu'une brique parmi plusieurs systèmes distincts énumérés dans le même marché. |
MONTANT_IMPLAUSIBLEMontant implausible |
n = 1 | Prestations de testeur QA applications mobiles (1 €) | le montant notifié est sous le plancher de plausibilité de la qualification — une saisie aberrante. |
LOT_NON_APPLICATIFLot non applicatif |
n = 6 | Acquisition système billettique interopérable sans contact, mise en place d'un système d'i… (10 160 000 €) | un autre lot de la même consultation (matériel, marketing…) — le lot applicatif est un marché à part. |
Voir les données de cette figure
| Motif | Effectif |
|---|---|
| Achat de matériel | n = 74 |
| Service de téléphonie | n = 10 |
| Logiciel sans terminal mobile | n = 165 |
| Hors sujet | n = 1 756 |
| Périmètre multi-composants | n = 2 |
| Montant implausible | n = 1 |
| Lot non applicatif | n = 6 |
Les seuils de publication
Sous le plancher de publication (n < 12 pour les quartiles, n < 5 pour la médiane), aucun chiffre n'est publié.
Le plancher de la comparaison de tension (une offre reçue contre quatre offres et plus, voir l'indice de tension) est différent : sous le plancher de publication (n < 10 par groupe), aucun montant médian n'est publié pour ce groupe — seul son effectif l'est.
Un quatrième seuil est déjà déclaré dans le code sans être encore utilisé par aucun indice
publié : PLANCHERS.SURVIE_COHORTE (n < 50), réservé à
l'indice de survie — la part des unités légales de code NAF 62.01Z d'une cohorte régionale encore
administrativement actives à la date de relevé. Il ne mesure ni la durée de vie d'un projet, ni celle
d'un contrat : il porte sur les producteurs, pas sur ce qu'ils livrent.
Ce que ce corpus ne couvre pas
Ce corpus ne couvre que la commande publique : les développements d'applications mobiles réalisés pour des clients privés, jamais notifiés dans les DECP, n'y figurent pas.
Les DECP sont déclaratives : chaque acheteur public saisit lui-même ses données, coquilles et artefacts d'encodage compris — nous ne les corrigeons pas (voir le corpus, marché par marché).
Les montants publiés sont ceux notifiés, pas les montants finaux après avenant : le champ qui permettrait de suivre une modification de prix après notification n'est renseigné que sur une poignée de marchés dans la source — trop peu pour être exploité.
Reproduire ce tri
Le corpus est régénéré par trois commandes, dans cet ordre, depuis la racine du dépôt (Node ≥ 22,
aucune dépendance npm) — chacune lit la sortie de la précédente dans content/ :
node tools/fetch-decp.mjs puis node tools/qualify-decp.mjs puis
node tools/build-indices.mjs.
Le site lui-même — cette page comprise — est ensuite régénéré par
node tools/build-site.mjs, qui écrit chaque page de public/ à partir des
fichiers de content/ ci-dessus : rien n'y est jamais édité à la main.
Sans rien relancer, les deux fichiers produits par cette étape de qualification sont publiés tels quels, octet pour octet — le corpus retenu comme le corpus écarté, motif par motif :
- Corpus qualifié (JSON) — les marchés retenus, un objet par marché : objet, montant, durée, offres reçues, CPV, procédure.
- Corpus d’exclusion (JSON) — les marchés écartés, chacun avec son motif codé et la règle qui l'a produit.
C'est ce second fichier qui rend les chiffres de ce site opposables : chaque marché écarté y porte le motif codé qui l'a exclu, et n'importe qui peut contester une décision précise plutôt que de croire un total sur parole.