Skip to content

Méthodologie des recommandations ​

DURUM.ai génère des recommandations (Insight DURUM) à partir de vos données de campagnes, de votre funnel, de vos ventes et, si vous les avez connectés, de vos appels enregistrés. Cette page décrit exactement comment le moteur décide, avec les seuils réels, et ce qu'il ne fait pas.

Sept principes ​

Chaque recommandation respecte ces règles. Si une règle ne peut pas être satisfaite, le moteur ne génère rien plutôt que de risquer de vous induire en erreur.

1. Fiabilité avant volume ​

Trois garde-fous s'appliquent avant toute recommandation :

  • Aucune donnée, aucune recommandation. Si la période sélectionnée ne contient ni dépense publicitaire ni événement (lead, rendez-vous, vente), le moteur s'arrête.
  • Indice de confiance des données. Le moteur calcule un dataConfidence entre 0 et 1 (formule plus bas). Sous 0.3, aucune recommandation n'est générée.
  • Couverture d'attribution. La couverture est la part des ventes rattachées à une publicité. Les règles qui dépendent du revenu par campagne (par exemple increase_budget et channel_role) exigent une couverture d'au moins 50 % (attributionFloor, valeur du profil par défaut). Entre 50 % et 70 %, la recommandation porte la mention « Attribution UTM partielle » ; sous 50 %, la mention « Attribution UTM faible, recommandation basée sur des données partielles ».

Enfin, toute recommandation dont la confiance est inférieure à 40 % est écartée avant l'affichage.

2. Jamais de promesse chiffrée ​

Toute estimation d'impact monétaire est une fourchette, jamais un chiffre unique. La fourchette est construite autour d'un point médian avec un écart de ± 40 % par défaut (rangeSpread, de 30 % à 60 % selon le profil business). Pour un point médian de 50 K$, vous verrez « 30 K$ à 70 K$ ».

Chaque impact est introduit par « Scénario illustratif » et accompagné de cet avertissement :

Estimation basée sur les données récentes. Dépend de l'exécution et des conditions de marché.

Ce n'est jamais un résultat garanti. C'est un ordre de grandeur pour prioriser.

3. Contexte complet ou rien (fatigue créative) ​

Le moteur ne conclut pas à une « fatigue créative » sur une simple baisse de CTR. Le diagnostic d'une publicité exige d'abord au moins 1 000 impressions et 50 $ de dépense (sinon le verdict est insufficient_data). Il croise ensuite :

  • la tendance du CTR (7 derniers jours vs 7 jours précédents) ;
  • la tendance du CVR (taux de conversion), quand les conversions par publicité sont disponibles ;
  • la tendance du CPM ;
  • la fréquence (impressions / portée) ;
  • l'âge de la publicité (days_active) ;
  • le calendrier saisonnier.

Les fenêtres saisonnières pendant lesquelles le moteur refuse de conclure à une fatigue : Black Friday et Cyber Monday (20 novembre au 3 décembre), Temps des Fêtes (15 décembre au 5 janvier), Boxing Day (26 au 31 décembre), Saint-Valentin (7 au 15 février), fins de trimestre (25 mars au 2 avril, 25 juin au 2 juillet, 25 septembre au 2 octobre, 20 au 31 décembre) et Rentrée (15 août au 5 septembre).

Le verdict retourné, dans l'ordre d'évaluation :

VerdictConditionLecture
seasonalFenêtre saisonnière activeMétriques atypiques, on ne conclut pas
budget_issueCPM en hausse de 25 % ou plus, CTR et CVR stables (variation inférieure à 10 %)Problème d'enchère ou de concurrence, pas de créative
landing_issueCVR en baisse de 25 % ou plus, CTR stableLe problème est en aval du clic (page ou offre)
saturationFréquence supérieure à 3 et CTR en baisse de 15 % ou plusChanger d'audience avant de changer la créative
fatigueCTR en baisse de 20 % ou plus, fréquence inférieure ou égale à 3Le message ne résonne plus : nouvelles créatives
healthyPublicité active depuis plus de 21 jours sans dégradation, ou aucun signal clairRien à faire

Ce diagnostic alimente la règle creative_concentration, déclenchée quand deux publicités concentrent plus de 70 % de la dépense.

4. Respect des humains (coaching des reps) ​

Le moteur juge des résultats, jamais la conformité à un style. La règle coach_rep ne s'active que si :

  • au moins deux reps ont 15 présences (meetingShows) ou plus sur la période ;
  • le rep concerné a un taux de closing sous la moyenne de l'équipe ;
  • l'écart avec le meilleur rep dépasse 30 points.

Un rep qui ferme au-dessus de la moyenne n'est jamais signalé, quel que soit son style. La règle talk_ratio (part de parole supérieure à 55 % sur au moins 8 appels analysés) exige au minimum 15 enregistrements pour le compte, reste en priorité basse et est supprimée si coach_rep couvre déjà le même rep.

5. Flexibilité par profil business ​

Les seuils dépendent du type de business. Six profils existent dans le moteur :

ProfilExempleÉchantillons minimaux (leads / rendez-vous / présences / appels)Couverture d'attribution minimale
b2c_high_ticket (défaut)Coaching, formation, services de 2 K$ à 10 K$15 / 10 / 8 / 1550 %
b2c_ecomProduits physiques de 50 $ à 500 $, volumes élevés50 / s.o. / s.o. / s.o.60 %
b2b_midmarketTicket de 5 K$ à 50 K$, cycle de 30 à 90 jours10 / 5 / 5 / 1040 %
b2b_enterpriseContrats de 50 K$ et plus, cycle de 6 mois et plus5 / 3 / 3 / 530 %
saas_plgSelf-serve, 10 $ à 500 $ par mois30 / s.o. / s.o. / s.o.70 %
services_proAvocat, comptable, consultant, faibles volumes5 / 3 / 2 / 540 %

Le profil est stocké sur le compte client (business_profile). Aucune interface ne permet encore de le choisir : le widget Recommandations utilise le profil par défaut.

6. Priorité dynamique ​

Un ROAS négatif depuis 3 jours n'a pas l'urgence d'un ROAS négatif depuis 14 jours. Pour les règles concernées, modulatePriority additionne trois composantes :

ComposantePoints
Durée du problème14 jours et plus : 3, 7 à 13 jours : 2, 3 à 6 jours : 1
Ampleur (part du budget touchée)30 % et plus : 3, 15 % à 29 % : 2, 5 % à 14 % : 1
TendanceS'aggrave : +1, s'améliore : -1

Score de 5 ou plus : priorité high. De 2 à 4 : medium. Sinon : low.

7. Attribution ​

DURUM.ai propose cinq modèles d'attribution. Le sélecteur se trouve au-dessus des tableaux de la Vue d'ensemble et de la page Publicités ; un modèle peut être épinglé comme défaut du compte (default_attribution_model).

ModèleCodeDescription
Hybride Durum (défaut)hybridPremière pub si la vente survient en moins de 30 jours, dernière pub au-delà
LinéairelinearCrédit égal à chaque pub du parcours
First Touchfirst_touchCrédit à la première pub vue
Last Touchlast_touchCrédit à la dernière pub vue
Position (40-20-40)position40 % première, 40 % dernière, 20 % milieu (pondérations ajustables)

Les KPI du funnel (leads, rendez-vous, ventes) sont neutres : ils ne changent pas selon le modèle. Dans le moteur de recommandations, le modèle position est approximé par 40 % first touch + 40 % last touch (pas de touche intermédiaire dans les données par publicité), et le widget Recommandations utilise le modèle hybrid. La page Réglages, Attribution (/settings/attribution) explique chaque modèle.


Seuils et formules ​

Indice de confiance des données ​

Avant toute recommandation, le moteur calcule :

dataConfidence = min(spend, events) x 0.7 + attribution x 0.3
ComposanteValeur
spend (jours avec dépense)28 jours et plus : 1.0, 14 à 27 : 0.7, 7 à 13 : 0.4, sinon 0.2
events (leads + rendez-vous + ventes)30 et plus : 1.0, 10 à 29 : 0.6, sinon 0.2
attribution (part des ventes rattachées à une pub)70 % et plus : 1.0, 50 % à 69 % : 0.75, 30 % à 49 % : 0.5, sinon 0.3 (0.7 s'il n'y a aucune vente)

Si dataConfidence < 0.3, aucune recommandation n'est générée.

Échantillons minimaux par règle ​

RègleMinimum requis
Coaching des reps (coach_rep)15 présences par rep, au moins 2 reps
Anomalie de dépense (spend_anomaly)16 jours d'historique ; z-score supérieur à 2.5 vs la moyenne mobile 14 jours ; le jour en cours est exclu
Fatigue créative1 000 impressions et 50 $ de dépense par publicité
Maillon faible du funnel (chain_link), écart entre sources (source_variance)15 leads
No-show par rep (rep_noshow)10 rendez-vous par rep
Baisse du taux de closing (close_rate_drop)8 présences
Part de parole (talk_ratio)15 enregistrements analysés, 8 appels pour le rep

Ces minimums sont ceux du profil par défaut (voir le principe 5).

Cadre de mesure de l'impact ​

Quand une recommandation enregistrée passe au statut « implémentée », un instantané des KPI des 30 derniers jours est capturé (capture_reco_baseline). Un traitement quotidien (update_reco_baselines) remesure les mêmes KPI à T+7, T+30 et T+90 jours. La fonction get_reco_quality_by_rule calcule ensuite, par règle, la variation moyenne du ROAS et du taux de closing à T+30. C'est ce qui permet de juger si une règle produit un effet réel.


Ce que le moteur ne fait pas ​

  • Pas de recommandation sans données. Période sans dépense ni événement, ou dataConfidence sous 0.3 : rien n'est affiché.
  • Pas d'attribution hors ligne (appels entrants, visites en personne). Seuls les parcours numériques sont couverts.
  • Pas d'affichage sous 40 % de confiance. Un signal trop faible est écarté plutôt qu'affiché avec un avertissement.

Cycle de vie d'une recommandation ​

Les recommandations du widget sont recalculées à chaque affichage à partir de la période et des filtres sélectionnés. Quand les conditions ne sont plus réunies (par exemple un ROAS revenu au-dessus de 1), la recommandation disparaît d'elle-même.

Pour les développeurs : une recommandation enregistrée (ai_recommendations) porte un statut parmi pending, acknowledged, in_progress, implemented, dismissed, auto_resolved et expired. Une recommandation pending expire automatiquement après 7 jours (traitement quotidien). Un refus est enregistré avec une raison (dismiss_reason) parmi pas_pertinent, deja_fait, trop_risque, budget_insuffisant et autre. Les recommandations marquées implémentées ou refusées ne réapparaissent pas dans le widget.


Questions fréquentes ​

Pourquoi une recommandation disparaît-elle ? ​

Parce qu'elle est recalculée à chaque affichage : si le constat n'est plus vrai sur la période sélectionnée, elle n'est plus générée. Les recommandations enregistrées expirent par ailleurs après 7 jours sans action.

Pourquoi les recommandations changent-elles quand je change la période ? ​

Parce que le moteur ne lit que la période et les filtres affichés. Une période plus courte contient moins de jours de dépense et moins d'événements, ce qui abaisse l'indice de confiance et peut faire taire certaines règles.

Pourquoi certains impacts sont-ils des fourchettes ? ​

Parce que l'avenir n'est pas une promesse. Une fourchette reflète l'incertitude réelle d'une projection basée sur l'historique récent.


Contact ​

Une question sur une recommandation précise ? Écrivez à info@durum.ai en citant le titre de la recommandation et la période affichée.

Propulsé par DURUM.ai : attribution publicitaire et intelligence opérationnelle