IA

Scoring IA avec Jev, 2 211 décisions pour 16 centimes

Scoring IA : pourquoi un LLM note mal vos leads, et comment Jev, un modèle de décision, a pris 2 211 décisions pour 0,16 $ dans notre back office.

Fabien Luzurier
38 min de lecture
Partager :

Mis à jour le 8 octobre 2026

Le scoring IA, c'est confier à un modèle une décision fermée sur un prospect : est-il dans la cible, sa réponse ouvre-t-elle une porte, ce post mérite-t-il un commentaire. Sur 2 211 décisions de ce type prises en dix jours dans notre back office, la facture a été de 0,16 $. Le modèle qui les a prises n'écrit pas une ligne de texte. Il renvoie des probabilités.

Pendant longtemps, on faisait l'inverse. Chaque oui ou non partait chez Claude Sonnet, un modèle brillant, à qui on demandait de jouer à pile ou face. Jordane, qui a construit notre back office, a passé une journée à tout mesurer sur nos données réelles. Cet article raconte ce qu'on avait, pourquoi c'était faux, ce qu'on utilise maintenant, et les trois règles qu'on aurait aimé connaître plus tôt. Tous les chiffres viennent de nos logs de production.

0,00007 $

par décision Jev sur une réponse de prospect, contre environ 3 cents avec l'ancien prompt Sonnet (logs Hacquisition)

74 %

des verdicts que Sonnet garde quand on lui rejoue les mêmes posts LinkedIn un par un (test interne)

95 %

d'accord avec nos humains quand Jev répond à « la porte est-elle encore ouverte ? », avec zéro porte ouverte perdue

Points clés

  • •Un score écrit par un LLM (« priorité 7/10 ») n'est pas une probabilité. Vous ne pouvez pas poser un seuil dessus en confiance.
  • •Jev, de TypeSafe, est un modèle de décision : vous envoyez un état et des questions fermées, il renvoie des probabilités, jamais de texte.
  • •Sur 7 cas réels, 3 sont passés entièrement chez Jev, 3 ont gagné un filtre Jev devant le LLM, 1 n'a pas bougé.
  • •La règle qui change tout : Jev décide, le LLM écrit. Le rédacteur n'intervient que quand il y a quelque chose à écrire.
  • •Une probabilité plus un seuil, c'est un réglage que votre équipe peut corriger chaque semaine avec ses propres retours.

Le tri, en direct

Une question à chaque réponse : la porte est-elle encore ouverte ?

Jev
0,00028 $
Tout Sonnet
0,12 $

Léa, business developer

« Bonjour, nous proposons une solution de recouvrement pour les PME... »

P(porte ouverte)0,00
0seuil 0,51

Classé, aucun texte généré

  • Sophie, DRH0,01

    Demande d'arrêt

  • Marc, CEO0,08

    Absence

Porte ouverte, Sonnet écrit

  • Karim, directeur industriel0,97

    Oui, deux. Je vous envoie celui d'un fabricant de 80 personnes ?

  • Julie, DAF0,91

    Noté. Je reviens vers vous début janvier avec deux cas proches du vôtre.

Réponses fictives. Coûts unitaires tirés de nos logs : ≈ 0,00007 $ par décision Jev, ≈ 3 cents par réponse avec l'ancien prompt Sonnet.

Le scoring IA, c'est quoi quand on le fait vraiment ?

Le scoring IA attribue automatiquement une note ou une probabilité à un prospect, une entreprise ou un message, pour décider quoi en faire. Dans les CRM, c'est souvent un score de 0 à 100 calculé sur l'historique, comme le lead scoring par IA de HubSpot (documentation HubSpot). Dans un back office de prospection, c'est surtout des milliers de petites décisions par jour.

Chez Hacquisition, le back office lit tout pour nous. Il repère les prospects, note les entreprises, fait tourner les campagnes LinkedIn et email, lit les réponses, le fil LinkedIn, les fils Reddit. Concrètement, ça donne des questions de ce genre, posées des milliers de fois.

Réponses

Cette personne est-elle intéressée ?

Un « pas maintenant, revenez en janvier » ne se traite pas comme un « retirez-moi de votre liste ».

Sourcing

Cette entreprise est-elle dans la cible ?

Avant d'écrire à qui que ce soit, il faut écarter les entreprises hors cible. C'est là que la liste se joue.

Veille

Ce post mérite-t-il un commentaire ?

Le fil LinkedIn et Reddit débordent. On ne commente que là où on a quelque chose à dire.

Aucune de ces questions n'appelle un texte. Elles appellent un oui, un non, ou un niveau. Sauf qu'on les envoyait toutes à un modèle fait pour écrire. Bref, on payait un poète pour lancer une pièce.

Notre ancien setup, un gros prompt par tâche

Le setup classique. Vous avez probablement le même. Pour les réponses à nos campagnes, le prompt ressemblait à ça : « Voici la conversation. Renvoie un JSON avec le sentiment, l'intention, l'urgence, un score de priorité de 1 à 10, les objections, la prochaine action et trois réponses suggérées. » Chaque réponse y passait. Un message d'absence, un « merci, pas maintenant », un « désinscrivez-moi » : tout recevait le traitement complet, pour environ 3 cents et 1,3 seconde par message. (Capture des logs de coût à ajouter ici.)

Bon, ça marchait. Ça avait aussi trois problèmes qu'on ne voulait pas voir.

01

On payait du texte que personne ne lirait

En prospection, la plupart des réponses sont du bruit : refus, vacances, gens qui essaient de nous vendre quelque chose. On payait un modèle premium pour rédiger trois réponses polies à « désinscription ».

02

Le score ne voulait rien dire

Quand un LLM écrit « priorité : 7 », il écrit un mot qui ressemble à un score. Ce n'est pas « 70 % de chances ». Impossible de poser un seuil dessus, impossible d'expliquer pourquoi 7 et pas 6.

03

Il n'était pas d'accord avec lui-même

On a rejoué les mêmes posts LinkedIn dans Sonnet, un par un au lieu d'un lot. Il a gardé son propre verdict 74 % du temps. Près du seuil de décision, entre 63 et 74 %.

Aveu

Je vais pas vous mentir, le troisième point nous a fait mal. On payait cher une décision qui était en partie un tirage au sort, et on la présentait au client comme une analyse. Le pile ou face le plus cher de toute notre stack. On ne l'a vu qu'en rejouant les mêmes données deux fois, ce que personne ne fait jamais.

Pourquoi un score donné par un LLM ne vaut pas une probabilité ?

Parce qu'un LLM génère le chiffre comme il génère un mot : il produit la suite la plus plausible, pas une mesure. Une étude présentée à ICLR 2024 a demandé à plusieurs modèles d'exprimer leur confiance en toutes lettres : ils sont nettement trop sûrs d'eux, avec une erreur de calibration moyenne supérieure à 0,37 pour GPT-3, GPT-3.5 et Vicuna (Xiong et al., ICLR 2024).

Le plus ironique, c'est que la calibration existe sous le capot. Quand on lit directement les probabilités d'un grand modèle sur des questions vrai/faux ou à choix multiples, elles sont plutôt bien calibrées (Kadavath et al., Anthropic, 2022). C'est le chiffre écrit en toutes lettres qui la perd. Un modèle qui renvoie des probabilités au lieu d'un texte vous donne précisément ce qui se perd en route.

Le deuxième problème, c'est la stabilité. Des chercheurs ont rejoué huit tâches classiques dix fois sur cinq LLM réglés pour être déterministes. Aucun n'a donné une précision stable sur toutes les tâches, avec des écarts allant jusqu'à 15 % d'un passage à l'autre (Atil et al., 2024). Nos 74 % d'accord de Sonnet avec lui-même, c'est la même chose vue depuis un back office.

Ce que vous demandez LLM généraliste Modèle de décision (Jev)
Format de sortie Du texte, qu'il faut parser Une probabilité par réponse possible
Un « 0,7 » Un mot qui ressemble à un score Une probabilité sur laquelle poser un seuil
Coût par décision (nos logs) ≈ 3 cents avec texte généré ≈ 0,00007 $, sortie gratuite
Latence médiane ≈ 1,3 s ≈ 400 ms
Rédiger une réponse Excellent Impossible, par conception

Notre avis, qui ne plaira pas à tout le monde

Le « LLM juge » est devenu le réflexe de tout le monde. Il a du sens pour comparer deux textes : GPT-4 y atteint plus de 80 % d'accord avec des humains (Zheng et al., 2023). Sauf que trier des réponses de prospects n'est pas comparer deux textes. C'est une décision fermée, répétée des milliers de fois, où la régularité compte plus que l'éloquence. Pour ça, un LLM est le mauvais outil.

Jev, un modèle qui ne rédige jamais

Jev est un modèle de décision conçu par TypeSafe et accessible via OpenRouter. Il ne s'appelle pas comme un LLM classique : il a son propre point d'accès, /api/alpha/decisions. Vous n'écrivez pas de prompt, vous posez des questions. Vous envoyez un état (la conversation, le post, l'entreprise) et une liste de questions fermées, il renvoie des probabilités. Jamais de texte, jamais de raisonnement (documentation Jev sur OpenRouter).

noul

Oui ou non

« La porte est-elle encore ouverte ? » Réponse : la probabilité du oui, entre 0 et 1.

choice

Une option parmi plusieurs

« Pourquoi la porte est fermée : budget, timing, mauvaise personne ? » Réponse : une probabilité par option.

score

Un niveau sur une échelle

« À quel point cette entreprise colle-t-elle à la cible ? » Réponse : une probabilité pour chaque niveau.

Voilà un vrai appel, tel qu'il part de notre back office. L'état contient l'échange, la question porte une consigne et des critères pour le oui et pour le non.

POST /api/alpha/decisionsrequête
{
  "model": "typesafe/jev-latest",
  "state": "NOUS : Un appel de 15 minutes la semaine prochaine, ça aurait du sens ?\nPROSPECT : Pas maintenant, on est en plein budget. Relancez-moi en janvier.",
  "questions": {
    "relance": {
      "type": "noul",
      "instructions": "La porte est-elle encore ouverte pour une relance plus tard ?",
      "criteria": {
        "true": "intérêt, question, « pas maintenant » poli, renvoi vers un collègue",
        "false": "non ferme, demande d'arrêt, hors sujet, nous vend quelque chose"
      }
    }
  }
}
Réponse≈ 400 ms
{ "answers": { "relance": { "noul": 0.91 } }, "usage": { "cost": 0.00007 } }

Au moment de nos tests, l'entrée coûtait 0,042 $ par million de tokens, et la sortie était gratuite (il n'y en a pas). Latence médiane autour de 400 ms. Et avant que vous me demandiez : non, personne chez TypeSafe ne nous a payés pour écrire ça.

Le banc d'essai, 7 cas réels contre Sonnet

On n'a pas changé de modèle parce qu'il était nouveau. Avant de toucher à la production, Jordane a passé une journée à tester Jev sur 7 cas d'usage réels, avec nos données de production en lecture seule, contre Sonnet, et contre nos humains quand on avait des étiquettes humaines. (Capture du tableau de bench à ajouter ici.)

Cas d'usage Verdict Qui fait quoi maintenant
Réponses aux campagnes Jev Jev décide si la porte est ouverte, Sonnet rédige seulement dans ce cas
Messages reçus hors campagne Jev Jev classe le bruit (vendeurs, recruteurs, spam) tout seul
Fil LinkedIn Jev Jev décide si un post vaut un commentaire, Sonnet l'écrit
Sourcing de prospects Filtre Jev Jev écarte les évidences, Sonnet reste juge du reste
Fils Reddit Filtre Jev Jev filtre, Sonnet résume les fils pertinents et trouve l'angle
Demandes de connexion entrantes Filtre Jev Jev rejette les vendeurs hors cible évidents, Sonnet juge le reste
Choisir 1 à 3 secteurs parmi 165 Sonnet Inchangé : trop de contexte, trop d'options

Jev n'est pas magique. Quand la décision demande beaucoup de contexte nuancé (cette entreprise colle-t-elle à ce client, avec ce pitch ?), il est faible au milieu. Sur le sourcing, Sonnet reste le juge. Pour choisir 1 à 3 secteurs parmi 165 options, Sonnet encore.

Le « milieu de gamme » qui ne sert à rien

On a aussi testé Claude Haiku et Gemini Flash comme étage intermédiaire entre Jev et Sonnet. Aucun n'a aidé. Gemini Flash a dit oui à 97 % des posts LinkedIn. Un modèle très optimiste, donc un filtre inutile.

Règle 1, posez la question sur laquelle vous agissez

Notre premier essai sur le tri des réponses copiait l'ancien prompt : « Classe l'intention : très intéressé, intéressé, curieux, objection, pas intéressé. » Accord avec Sonnet : 57 %. Mauvais. Puis on s'est demandé ce que notre boîte de réception faisait vraiment de cette réponse. Elle se fiche de savoir si un prospect est « curieux » ou « intéressé ». Elle veut savoir une chose : on répond, ou pas ?

Alors on a posé exactement cette question à Jev : « La porte est-elle encore ouverte ? » Accord avec nos humains : 95 %. Rappel : 100 %, pas une seule porte ouverte perdue. Essayez vous-même ci-dessous, en basculant entre les deux façons de demander.

La porte, à vous

Même message, même modèle. Changez seulement la question.

Choisissez une réponse de prospect

Réponse reçue

« Pas maintenant, on est en plein budget. Relancez-moi en janvier. »

{
  "model": "typesafe/jev-latest",
  "state": "PROSPECT : Pas maintenant, on est en plein budget. Relancez-moi en janvier.",
  "questions": {
    "interet": { "type": "noul", "instructions": "Le prospect montre-t-il un intérêt maintenant ?" },
    "relance": { "type": "noul", "instructions": "La porte est-elle encore ouverte pour plus tard ?" }
  }
}
{ "answers": { "interet": { "noul": 0.22 }, "relance": { "noul": 0.91 } } }
intérêt maintenant0,22
porte ouverte plus tard0,91

interet_p > 0,5 || relance_p > 0,6

Porte ouverte : on répond, Sonnet rédige.

57 %

d'accord avec Sonnet, question en 5 classes

95 %

d'accord avec nos humains, 100 % des portes ouvertes retrouvées

Messages fictifs et probabilités illustratives. Les deux taux d'accord viennent de notre banc d'essai sur des réponses réelles.

La règle métier tient maintenant en une ligne que n'importe qui dans l'équipe peut lire :

const porte_ouverte = interet_p > 0.5 || relance_p > 0.6;

Même modèle, mêmes données. La seule chose qui a changé, c'est la question. Posez celle sur laquelle vous allez agir, pas celle qui fait joli dans un dashboard. Si vous cherchez quels signaux méritent cette question, notre article sur les 7 signaux d'un prospect chaud en liste plusieurs.

Règle 2, faites confiance aux extrêmes

C'est le vrai superpouvoir. Les probabilités de Jev sont calibrées : quand il dit 0,02, ce n'est (presque) jamais un oui. Quand il dit 0,95, ce n'est (presque) jamais un non. Un modèle calibré, c'est un modèle dont les 80 % se réalisent environ 80 fois sur 100, une propriété qui ne va pas de soi pour un réseau de neurones (Guo et al., ICML 2017).

Le milieu, entre 0,4 et 0,6, est bruité. Mais souvenez-vous : Sonnet aussi est bruité là. Personne n'est bon dans la zone grise, parce que la zone grise est grise. Du coup, on a arrêté de demander à Jev d'être juge partout. On lui demande de dégager les cas évidents, et on garde le modèle cher pour les cas durs.

0 à 0,02
rejet seul
non probable
0,4 à 0,6
zone grise, Sonnet ou humain
oui probable
0,95 et +
validé

Où on fait confiance à Jev seul, et où on passe la main. Les bornes dépendent du coût d'une erreur dans chaque cas d'usage.

Sourcing de prospects

43 % d'appels Sonnet en moins

Jev ne rejette seul une entreprise que si sa probabilité de correspondre à la cible est sous 0,02. Ça suffit à retirer 43 % des appels à Sonnet, avec 99,5 % d'accord avec ce que Sonnet aurait décidé.

Messages hors campagne

22 classés, 0 vraie conversation touchée

Sur les 36 premiers messages reçus sans campagne, Jev en a classé 22 automatiquement. Trois vendeurs déguisés sont passés. Tant pis : quand il se trompe, il se trompe du côté prudent.

Vous voyez l'idée ? Un filtre qui ne se trompe que dans un sens, c'est un filtre qu'on peut laisser tourner sans le surveiller. (Capture du rapport de tri hors campagne à ajouter ici.)

Règle 3, Jev décide, le LLM écrit

C'est l'architecture qu'on a maintenant, et honnêtement, on aurait dû la faire dès le premier jour. Chaque réponse passe d'abord par Jev. Si la porte est fermée, la conversation est classée avec une raison (budget, timing, mauvaise personne) et aucun texte n'est généré, parce qu'aucun texte n'est nécessaire. Si la porte est ouverte, Sonnet arrive et rédige les réponses suggérées. Ça concerne à peu près la moitié des conversations.

100 % des réponses lues par Jev : une décision et une raison en ≈ 400 ms, ≈ 0,00007 $ chacune
≈ la moitié classée sans texte : absence, refus, vendeur
≈ la moitié : porte ouverte, Sonnet écrit

Jaune : Jev décide. Gris : classé, aucun texte généré. Violet : le LLM écrit.

Même idée partout ailleurs. Le rédacteur n'écrit que quand il y a quelque chose qui mérite d'être écrit.

Fil LinkedIn

Jev décide si un post vaut un commentaire. Sonnet écrit seulement le commentaire.

Reddit

Jev filtre les fils. Sonnet résume seulement les fils pertinents et trouve l'angle.

Connexions entrantes

Jev rejette les vendeurs hors cible évidents. Sonnet juge les autres.

La plupart des cartes n'ont jamais besoin d'un rédacteur. Et comme la porte coûte presque rien, elle voit tout. C'est le même principe que dans notre agent IA de prospection LinkedIn : chaque brique fait un seul métier.

Combien ça coûte, dix jours après ?

2 211 décisions Jev en production. Facture totale : 16 centimes. Si chacune avait coûté autant qu'une réponse traitée par l'ancien prompt (environ 3 cents), on serait autour de 66 $. Le graphique ci-dessous met les deux côte à côte : une case jaune, c'est toute la facture Jev.

Jev, 2 211 décisions : 0,16 $ Même volume au tarif de l'ancien prompt : ≈ 66 $ Source : logs Hacquisition, 10 jours de production

Soyons clairs sur l'argent. En valeur absolue, notre facture LLM récurrente n'était pas énorme : on est une agence, pas une banque. Les économies sont réelles (sur le sourcing, le bench prédit environ 40 $ économisés par campagne de prospection), mais ce n'est pas le sujet principal.

Le vrai gain

Quand une décision ne coûte presque rien, vous arrêtez de rationner les décisions. On redécide tout quand une règle change. On rejoue 291 étiquettes humaines pour évaluer un changement, et ça coûte 2 centimes. On trie chaque post du fil au lieu d'un échantillon. Tout ce qu'on évitait parce que « ça fait beaucoup d'appels LLM » est devenu gratuit.

Et si votre équipe pouvait déplacer le seuil ?

Une probabilité a un dernier cadeau. Comme la décision, c'est « probabilité + seuil », le seuil devient un réglage, plus une constante qu'on devine. Chaque fois que quelqu'un de l'équipe corrige une étiquette dans la boîte de réception, on stocke la réponse humaine à côté de la décision IA qu'elle corrige. Chaque semaine, un petit job rejoue toutes ces corrections contre tous les seuils possibles. Aucun appel au modèle : les probabilités sont déjà stockées.

Et il est prudent exprès. Déplacez le seuil ci-dessous pour voir les garde-fous s'allumer, ou bloquer.

Le labo du seuil

64 corrections humaines rejouées, sans aucun appel au modèle.

zone grisevalidérejetL'équipe dit : porte ouverteL'équipe dit : porte fermée0,50

Seuil

0,50

actuel 0,50

Accords

53/64

+0 vs seuil actuel

Coût des erreurs

25

porte perdue ×3, vendeur gardé ×1

  • Au moins 40 corrections (64 disponibles)
  • Au moins +3 accords (+0)
  • Coût des erreurs réduit de 10 % (0 %)
  • Déplacement de 0,1 maximum (0,00)

Déplacez le seuil : le job compare chaque proposition au seuil actuel.

Points pleins : l'équipe a jugé la porte ouverte. Cercles vides : fermée. Cerclés de rouge : la décision au seuil choisi contredit l'équipe. Données illustratives, garde-fous réels.

01

Rien ne bouge sous 40 corrections

En dessous, un seuil « optimal » n'est que du bruit statistique.

02

Le nouveau seuil doit gagner au moins 3 accords

Et réduire le coût des erreurs d'au moins 10 %. Une porte ouverte perdue coûte plus cher qu'un vendeur gardé par erreur.

03

Jamais plus de 0,1 par semaine

Le seuil glisse, il ne saute pas. Une mauvaise semaine d'étiquettes ne peut pas tout casser.

Cas interne

Cette boucle nous a appris quelque chose sur nous-mêmes. Notre équipe utilisait l'étiquette « intéressé » pour deux choses différentes : « veut parler maintenant » et « la porte est ouverte pour plus tard ». On l'a coupée en deux (intéressé / à recontacter), et l'accord entre l'IA et l'équipe est passé de 53 % à 90 %. Parfois, le problème n'est pas le modèle. C'est la question.

Par où commencer demain matin ?

Commencez par faire l'inventaire, pas par changer de modèle. Six étapes, dans cet ordre.

01

Listez vos décisions déguisées

Chaque appel LLM qui renvoie une étiquette, un score ou un oui/non est une décision, pas un texte. Vous en avez sûrement plus que vous ne pensez.

02

Réécrivez-les en question métier

« On répond ? » bat « classe l'intention en 5 catégories ». À chaque fois.

03

Testez sur 100 vrais cas

Contre votre LLM actuel, et contre votre LLM actuel rejoué. Vous serez surpris de voir à quel point il se contredit.

04

Regardez où tombent les probabilités

Faites confiance aux extrêmes. Envoyez le milieu au modèle cher ou à un humain.

05

Gardez le LLM pour écrire

Réponses, raisons, résumés, angles. C'est là qu'il brille, et c'est là qu'il mérite son prix.

06

Loggez chaque correction humaine

À côté de la décision qu'elle corrige. Votre seuil vous remerciera dans un mois.

Si vous débutez avec l'IA dans votre prospection, commencez plutôt par notre guide de la prospection IA, qui fait le tri entre les cas d'usage rentables et le reste.

Ce que ces chiffres ne prouvent pas

Je sais ce que vous pensez si vous faites du machine learning : « vos échantillons sont petits ». Oui. Entre 3 et 74 cas positifs selon le cas d'usage, et la référence est souvent Sonnet, pas un humain. Ce n'est pas un article scientifique, c'est notre back office. Les chiffres sont vrais, et c'est la méthode qu'on vous invite à voler.

Côté réglementation, une précision qui revient souvent dans les recherches sur le « scoring IA » : l'AI Act européen interdit la notation sociale, c'est-à-dire classer des personnes sur leur comportement social pour les traiter défavorablement ailleurs (règlement (UE) 2024/1689, article 5). Trier des réponses commerciales ou des entreprises dans une cible n'en relève pas. Le RGPD, lui, s'applique toujours aux données de vos prospects, comme pour toute campagne de cold emailing.

Bref. Un bon LLM est un rédacteur. Quand vous lui demandez de décider, il vous rend un beau paragraphe qui finit par « ça dépend ». Un modèle de décision vous rend 0,91 et se rendort. Donnez à chacun le métier pour lequel il a été fait. Et si vous testez ça sur votre propre stack, écrivez-nous ce que vous trouvez : on mettra l'article à jour avec vos retours.

Pour aller plus loin

Partager :

Questions fréquentes

Vous voulez un back office qui trie pour vous ?

Chez Hacquisition, le tri des réponses, le scoring des entreprises et la veille tournent déjà sur cette architecture. Vous recevez les conversations qui comptent et les rendez-vous qualifiés, sans payer un LLM pour lire vos « désinscription ».

Articles liés