Cas d'usage · Risque acheteur public

API risque acheteur public

Notez le risque porté par un acheteur public — le pouvoir adjudicateur — en France et en Espagne : concurrence et contrepartie. Bêta. Deux scores sur l'acheteur, jamais sur un fournisseur ni sur un marché précis.

Le problème

Un candidat aux marchés publics sait si l'acheteur qu'il vise est actif, mais pas si ses appels d'offres attirent d'habitude une seule offre ou une dizaine. Un affactureur qui rachète des créances publiques sait que le débiteur est un organisme public, mais pas si les fournisseurs de cet organisme défaillent plus souvent que la moyenne, ni à quel point un fournisseur donné dépend de lui. Un service d'audit qui veut cribler un portefeuille d'acheteurs avant d'ouvrir des dossiers doit aujourd'hui relire les attributions une par une.

L'API Prometiam calcule deux scores calibrés par acheteur public à partir de son historique d'attributions publiées, et renvoie les attributions qui justifient le score — pas un jugement, une base pour investiguer.

Le schéma d'intégration

Trois endpoints. GET /procurement/buyers liste les acheteurs notés d'un pays, triés par le score choisi (model=competition ou model=counterparty), avec min_score pour cribler un portefeuille, name ou region pour chercher un acheteur précis. GET /procurement/buyer/{id} renvoie le profil complet d'un acheteur identifié par son SIRET en France ou son NIF/code DIR3 en Espagne. GET /procurement/relationship détaille la dépendance mutuelle entre un acheteur et l'un de ses cinq plus grands fournisseurs.

# Cribler les acheteurs français au profil de concurrence le plus faible
curl "https://api.prometiam.com/functions/v1/risk-api/procurement/buyers?country=FR&model=competition&min_score=8&limit=20" \
  -H "Authorization: Bearer rk_live_..."

Le profil complet d'un acheteur, puis sa relation avec un fournisseur précis :

# Profil d'un acheteur français (SIRET d'exemple, non réel)
curl "https://api.prometiam.com/functions/v1/risk-api/procurement/buyer/21750001600019?country=FR" \
  -H "Authorization: Bearer rk_live_..."

# Sa dépendance à l'un de ses cinq plus grands fournisseurs
curl "https://api.prometiam.com/functions/v1/risk-api/procurement/relationship?country=FR&buyer=21750001600019&supplier=552032534" \
  -H "Authorization: Bearer rk_live_..."

Un exemple réel

import os, requests

API = 'https://api.prometiam.com/functions/v1/risk-api'
HEAD = {'Authorization': f'Bearer {os.environ["PROMETIAM_API_KEY"]}'}

def audit_portefeuille(country: str = 'FR', min_score: int = 8):
    # 1. Cribler les acheteurs notés au-dessus du seuil, triés par concurrence
    r = requests.get(f'{API}/procurement/buyers',
                      params={'country': country, 'model': 'competition', 'min_score': min_score, 'limit': 20},
                      headers=HEAD).json()

    dossiers = []
    for row in r['data']:
        buyer_id = row['buyer']['id']

        # 2. Ouvrir le profil complet : comportement + attributions de preuve
        profile = requests.get(f'{API}/procurement/buyer/{buyer_id}',
                                params={'country': country}, headers=HEAD).json()

        # 3. Pour chacun des plus gros fournisseurs, mesurer sa dépendance à cet acheteur
        relations = []
        for supplier in profile.get('top_suppliers', []):
            rel = requests.get(f'{API}/procurement/relationship',
                                params={'country': country, 'buyer': buyer_id, 'supplier': supplier['supplier_tax_id']},
                                headers=HEAD).json()
            relations.append(rel.get('relationship'))

        dossiers.append({
            'buyer': profile['buyer'],
            'risk': profile['risk'],
            'evidence': profile.get('evidence', []),
            'relations': relations,
        })

    return dossiers

Trois appels par acheteur retenu. Chaque dossier renvoyé porte le score, les attributions qui le justifient et la dépendance des plus gros fournisseurs — à ouvrir, pas à trancher.

Ce que vous recevez réellement

GET /procurement/buyer/{id} renvoie buyer, as_of, coverage (attributions, contrats, fournisseurs distincts, première et dernière attribution, valeur attribuée, plafonds d'accords-cadres), un bloc risk pour chaque modèle et behaviour (taux d'offre unique, taux d'attribution directe, taux d'accord-cadre, taux de modification, taux de divulgation du nombre d'offres, part de valeur du premier fournisseur, nombre moyen d'offres), plus jusqu'à trois evidence (attributions de preuve) et cinq top_suppliers.

Chaque bloc risk porte : score (1 à 10, échelle sur le log-odds de la probabilité — 1 au premier percentile des acheteurs notés du pays, 10 au 99e, ancres figées), probability (le taux calibré de l'acheteur pour sa prochaine attribution, son décompte observé rapproché de l'attente du modèle avec un a priori de trente attributions, calibré hors échantillon), base_rate, relative_risk (probability divisé par base_rate), percentile (le rang de l'écart observé-attendu parmi ses pairs), observed_rate, expected_rate, awards_scored et confidence. Un acheteur n'est noté qu'à partir de vingt attributions dans la période.

Trois cas d'usage

  1. Répondre ou non à un appel d'offres. Avant de préparer un dossier, ouvrez le profil de l'acheteur : un score de concurrence élevé et un taux d'offre unique déjà fort donnent un contexte sur ce que ses marchés attirent d'habitude.
  2. Affacturage de créances publiques. Un affactureur qui rachète des créances sur un acheteur public veut savoir si les fournisseurs de cet acheteur défaillent plus souvent que le taux de base (score contrepartie) et à quel point le fournisseur cédant dépend de cet acheteur — GET /procurement/relationship renvoie la part de sa valeur attribuée, ses attributions et sa date de défaillance quand il a échoué.
  3. Audit et intégrité. Criblez un portefeuille entier avec GET /procurement/buyers?country=FR&min_score=8, puis n'ouvrez que les attributions de preuve des acheteurs retenus via /procurement/buyer/{id} — le score trie, l'attribution de preuve documente.

Pour la liste complète des attributions d'un fournisseur, y compris hors des cinq plus grandes relations d'un acheteur, voir les attributions de marchés publics.

Limites de périmètre, dites clairement

  • Bêta. France et Espagne uniquement — pas d'autre pays.
  • Les scores décrivent l'acheteur public, jamais un fournisseur ni un marché précis.
  • Un acheteur n'est noté qu'à partir de vingt attributions sur la période.
  • Le score de concurrence n'est calculé que là où le nombre d'offres est publié ; la France ne le publie pas pour toutes ses attributions.
  • Le score de contrepartie est un signal faible — environ deux fois le taux de base au sommet de l'échelle — à lire avec les attributions de preuve, jamais seul.
  • GET /procurement/relationship ne couvre que les cinq plus grandes relations fournisseur d'un acheteur par valeur attribuée.
  • Les totaux par acheteur sont une borne haute : un accord-cadre publie un plafond, pas une dépense.
  • Un score est une invitation à regarder, pas un constat d'irrégularité.
  • Pas de score de crédit, pas de comptes, pas de score fournisseur.

Questions fréquentes

Le risque acheteur public est-il un score de crédit ou une note pour un fournisseur ?
Non. Les deux scores décrivent l'acheteur public — le pouvoir adjudicateur — jamais un fournisseur ni un marché précis. L'API ne renvoie ni score de crédit, ni comptes, ni score fournisseur.

Quels pays couvre le risque acheteur public de Prometiam ?
La France et l'Espagne, en bêta. Utilisez ?country=FR ou ?country=ES sur /procurement/buyers, /procurement/buyer/{id} et /procurement/relationship.

À partir de quand un acheteur est-il noté ?
Un acheteur est noté à partir de vingt attributions sur la période couverte. En dessous, aucun profil n'est renvoyé.

Le modèle contrepartie prédit-il une défaillance certaine ?
Non, c'est un signal faible : au sommet de l'échelle, le taux observé avoisine deux fois le taux de base. Il se lit avec les attributions de preuve renvoyées par /procurement/buyer/{id}, pas seul.

Le score de concurrence est-il disponible pour toutes les attributions françaises ?
Non. La France ne publie le nombre d'offres reçues que pour une partie de ses attributions ; le score de concurrence n'est calculé que là où ce nombre est publié.

En rapport