Algorithme · pillars_v1 Code public

Comment on choisit les articles qu'on te montre

Quatre piliers, des pénalités assumées, deux garde-fous qui jouent contre le classement. Chaque chiffre de cette page est une constante lisible dans le code.

Pertinence Ce qui t'intéresse 40 %
Source D'où ça vient 25 %
Fraîcheur Quand ça a été publié 20 %
Qualité Est-ce lisible ici 15 %
100 POINTS
Les pénalités se retranchent ensuite
Puis la diversité réordonne
Et chaque carte affiche sa raison

4 piliers · 40 / 25 / 20 / 15 · un score sur 100 · des malus en clair

Aucun engagement maximisé · aucune publicité · aucun profil vendu

La promesse

Un score calculable, article par article

Un classement se juge à ce qu'il cherche à obtenir de toi. Celui-ci cherche cinq articles que tu seras content·e d'avoir lus, et il le fait avec des constantes que tu peux relire.

Aucun engagement maximisé

Ni le temps passé dans l'app, ni le nombre de sessions, ni le taux de clic n'entrent dans le calcul. Les signaux appris viennent de tes lectures, de tes likes et de tes mises de côté, et leur écart au neutre se réduit de 2 % par jour quand tu arrêtes.

Aucune publicité

Il n'existe pas de slot sponsorisé dans le classement, ni de constante qui remonterait un média contre paiement. La liste complète des bonus tient sur cette page.

Aucun profil vendu

Le score d'un article ne dépend que de trois choses : tes réglages, ce que tu as déjà lu, et l'article lui-même. Aucun tiers acheteur dans la boucle.

Chaque score est explicable

Chaque carte porte sa raison principale, et le détail « Pourquoi cet article ? » liste jusqu'à 6 contributions triées par poids, les négatives comprises.

Le parcours

D'un flux RSS jusqu'à ton écran

Cinq étapes, dans cet ordre. Les trois premières décident de ce qui existe, les deux dernières de ce que tu vois en premier.

  1. 1 CollecteToutes les 30 minutes, les flux RSS du catalogue sont relus. Chaque article est enregistré une seule fois, avec sa date de publication, puis classé par thème et par sujets. À ce stade, aucun score n'existe.
  2. 2 Tri à l'entréeAvant toute note, la requête écarte ce que tu as masqué (sources, thèmes, sujets, entités, types de contenu), les articles payants si tu les caches, les sources non francophones que tu ne suis pas, et les articles déjà servis dans ton Essentiel du jour. Il reste au plus 500 candidats.
  3. 3 Notation par piliersChaque candidat passe dans les 4 piliers. Un pilier additionne ses points bruts, puis les ramène sur 100 en les divisant par son plafond attendu (160 pour la pertinence, 95 pour la source, 115 pour la fraîcheur, 32 pour la qualité). Le moteur en fait ensuite une moyenne pondérée : 40, 25, 20 et 15 %.
  4. 4 PénalitésLes malus s'appliquent après la pondération, en valeur absolue sur ce score sur 100. Ils ne sont donc pas dilués : une source masquée retire 80 points, un article affiché il y a moins d'une heure en retire 100. Le score final peut passer sous zéro.
  5. 5 Mise en ordreLà où la diversité agit Le tri par score est ensuite corrigé trois fois : fatigue de source, hasard contrôlé, puis remontée des sources suivies sur les sections thématiques. Chaque article servi reçoit enfin sa raison lisible.
Les 4 piliers

Ce qui fait monter un article

Les points ci-dessous sont les valeurs brutes, avant normalisation. Un pilier qui dépasse son plafond est ramené à 100 : empiler les bonus ne rapporte pas indéfiniment.

Pondération 100% répartis sur 4 piliers
P1 Pertinence 40 %
Est-ce que ça parle de ce que tu as choisi de suivre ?

Plafond brut du pilier : 160 points

Le pilier le plus lourd. Il regarde les thèmes et les sujets que tu suis, les sujets que tu as créés toi-même, et les noms propres que tu lis souvent. Un article hors de tout ça n'est pas exclu, il part juste avec un léger retard.

Les points réels

  • Thème que tu suis (thème secondaire d'une source : 0,7 fois moins)+50
  • Sujet précis que tu suis, 2 au maximum (pondéré par son rang dans l'article et par le poids appris)+45
  • Thème et sujet qui matchent tous les deux+18
  • Un sujet que tu as créé (×1,5 s'il vise une personne ou une organisation nommée, ×2 si tu l'as mis en favori)+25
  • Thème que tu lis beaucoup (50 par point d'affinité au-dessus du neutre, poids plafonné à 3,0)jusqu'à +100
  • Nom propre que tu lis souvent (8 par point d'affinité, plafonné)jusqu'à +30
  • Sujet relayé par plusieurs médias (2 médias +12, 3 +19, 6 et plus +30)jusqu'à +30
  • Format que tu préfères (podcast ou vidéo +20, format court ou long +15)+20
  • Aucun thème ni sujet suivi ne correspond-8
P2 Source 25 %
Est-ce que ça vient d'un média que tu as choisi, et qui tient la route ?

Plafond brut du pilier : 95 points

Ce pilier mélange ton choix explicite (les sources que tu suis, celles que tu as ajoutées, celles auxquelles tu es abonné·e), ton comportement (les médias que tu ouvres souvent) et la note de fiabilité issue de la grille d'évaluation des médias.

Les points réels

  • Source que tu suis+35
  • Source que tu ne suis pas (socle commun, pour que la découverte reste possible)+15
  • Source que tu as ajoutée toi-même (en plus des 35)+12
  • Source à laquelle tu es abonné·e (en plus des 35, débloque aussi ses articles payants)+20
  • Média que tu ouvres souvent (affinité apprise)jusqu'à +25
  • Fiabilité haute dans la grille méthodologie+10
  • Fiabilité basse dans la grille méthodologie-20
  • Curseur que tu poses sur une source (« plus » multiplie le pilier par 2, « moins » le multiplie par 0,2)×2 / ×0,2
P3 Fraîcheur 20 %
Est-ce que ça vient de sortir ?

Plafond brut du pilier : 115 points

Pas de paliers, une courbe continue : 100 divisé par (âge en heures ÷ 24 + 1). La valeur perd la moitié en un jour, puis décroît lentement. Ta préférence d'onboarding ajoute ensuite un léger accent.

Ce que donne la courbe

  • À la publication100
  • 24 heures plus tard50
  • 48 heures33
  • 72 heures25
  • Une semaine12,5
  • Tu as demandé du contenu récent, et l'article a moins de 24 h+15
  • Tu as demandé du contenu intemporel, et l'article a plus de 48 h+10
P4 Qualité 15 %
Est-ce que ça se lit correctement dans l'app ?

Plafond brut du pilier : 32 points

Le nom est ambitieux, la mesure l'est moins. Ce pilier vérifie qu'un article s'affiche bien et qu'il est lisible sans quitter l'app. Il ne juge pas la valeur du texte, et c'est écrit noir sur blanc dans les limites connues.

Les points réels

  • L'article a une image d'aperçu+12
  • Le texte complet est lisible dans Facteur+10
  • Seule une partie du texte est disponible+5
  • La source figure au catalogue éditorialisé+10
Les malus

Ce qui fait descendre un article

Ces valeurs s'appliquent sur le score final, après pondération. Sur une échelle qui va jusqu'à 100, retirer 80 points revient à sortir un article de ta journée sans le supprimer de la base.

Ce que tu as masqué

  • Source masquée-80
  • Type de contenu masqué (articles, podcasts ou vidéos)-50
  • Thème masqué-40
  • Sujet ou nom propre masqué (cumulable, une fois par correspondance)-30

Ces malus sont une double sécurité : la plupart de ces articles ont déjà été écartés par la requête, à l'étape 2. Le malus rattrape les cas limites, par exemple un nom propre repéré dans le texte plutôt que dans les métadonnées.

Ce que tu as déjà vu

  • Affiché il y a moins d'une heure-100
  • Affiché il y a moins de 24 heures-70
  • Affiché il y a moins de 48 heures-40
  • Affiché il y a moins de 72 heures-20
  • Au-delà de 72 heures0
  • Tu as appuyé sur « J'ai déjà vu » (définitif, sans décroissance)-120

Le malus d'affichage s'efface tout seul avec le temps. Un article croisé mardi peut donc remonter vendredi s'il reste pertinent, ce qui évite qu'un bon papier disparaisse pour avoir défilé une fois trop vite.

Ce qui pèse sur le contenu lui-même

  • Fiabilité basse de la source (dans le pilier Source, avant pondération)-20
  • Aucun thème ni sujet suivi ne correspond (dans le pilier Pertinence)-8
  • Épisode d'une série ou d'un feuilleton (sur les sections thématiques seulement)-6

Une fiabilité basse coûte 20 points bruts sur un pilier plafonné à 95, lui-même pondéré à 25 %. Un média mal noté n'est jamais banni, il doit être nettement meilleur ailleurs pour remonter. Le seuil et la façon dont la note est établie sont détaillés dans la méthodologie.

Les contrepoids

Deux mécanismes qui jouent contre le classement

Un score bien calibré converge vers le même média et les mêmes idées, jour après jour. Ces deux règles dégradent volontairement le classement pour empêcher ça. Elles sont dans le code, au même titre que les bonus.

Contrepoids 1

La fatigue de source

Dans ton flux, chaque article supplémentaire d'un même média voit son score multiplié par 0,70. Le deuxième garde 70 % de sa valeur, le troisième 49 %, le quatrième 34 %. Un média excellent ne peut donc pas occuper le haut du flux tout seul : à un moment, un article moins bien noté d'un autre média passe devant.

1er article100 %
2e70 %
3e49 %
4e34 %

Dans l'Essentiel du jour, la règle est encore plus nette : le deuxième article d'un même média voit son score divisé par 2, pour obtenir un effet de revue de presse. Sur une section consacrée à un seul thème, la fatigue est désactivée, parce que tu y suis délibérément une poignée de médias ; un entrelacement doux évite alors les murs de même source, sans toucher aux scores.

Contrepoids 2

Le hasard contrôlé

Avant l'affichage, un bruit aléatoire est ajouté à l'ordre de tri. Sa température vaut 0,15 dans le flux et 0,08 dans le digest. Concrètement, des articles séparés par quelques points peuvent permuter, tandis qu'un écart important tient bon.

Ce que ça change pour toi

Deux ouvertures de l'app à cinq minutes d'intervalle ne donnent pas exactement le même ordre. C'est voulu : sans ce bruit, les mêmes gagnants remonteraient indéfiniment et rien de nouveau n'aurait sa chance d'être vu.

Le score déterministe, lui, n'est jamais modifié : seul l'ordre bouge. Quand ce hasard est actif, il apparaît dans le détail de la carte, sous la mention « Hasard pour diversifier ». Sur les listes paginées d'une section thématique, il est désactivé pour que « Voir plus » ne renvoie pas deux fois le même article.

Un troisième réglage joue dans l'autre sens : sur une section de thème ou de sujet, les articles de tes sources suivies sont remontés en bloc au-dessus des autres, chaque groupe gardant son ordre interne.

Ton contrôle

Ce que tu décides vraiment

Autant le dire simplement : tes réglages commandent ce qui entre dans la sélection. L'ordre final, lui, reste largement décidé par l'algorithme. Voici la répartition exacte.

Tes mains sur le tri d'entrée

  • Les sources que tu suis, celles que tu ajoutes, celles auxquelles tu es abonné·e
  • Les thèmes et les sujets suivis, et ceux que tu crées toi-même
  • Tout ce que tu masques, qui sort de la requête avant même la notation
  • Les articles payants et les sources non francophones que tu ne suis pas, masqués par défaut
  • Le curseur par source, qui multiplie son pilier par 2 ou par 0,2

Ce que l'algorithme garde pour lui

  • La pondération des piliers, identique pour tout le monde
  • La fatigue de source et le hasard contrôlé, qui réordonnent après coup
  • Les poids appris : une lecture ajoute 0,05 au poids d'un thème, un like 0,15 au poids d'un sujet, une mise de côté 0,05, un rejet en retire 0,15
  • La décroissance de ces poids, qui ramène l'écart au neutre de 2 % par jour

Tes réglages filtrent ce qui entre, la diversité décide de l'ordre. Dire que tu contrôles ton feed serait donc exagéré. Ce que tu contrôles, c'est le terrain de jeu : si un média te sort par les yeux, le masquer le fait disparaître de la sélection, et pas seulement descendre.

Limites connues

Les angles morts, écrits par ceux qui les ont créés

Une page de transparence qui ne liste pas ses défauts est une page de communication. Voici les quatre faiblesses assumées de la version actuelle.

Limite 1

La « qualité » mesure surtout la présence d'une image

Sur les 32 points du pilier, 12 viennent d'une simple vignette et 10 du fait que la source figure au catalogue. Il reste 10 points, au mieux, pour un signal touchant réellement au texte, et ce signal dit seulement si l'article est lisible en entier dans l'app. Aucune ligne de code ne juge la valeur d'un papier. Cette part de l'évaluation reste faite par des humains, dans la grille des médias.

Limite 2

La courbe de fraîcheur favorise l'actualité chaude

Un article perd la moitié de sa fraîcheur en 24 heures et les trois quarts en 72 heures. Une enquête publiée il y a trois jours démarre donc avec 25 points là où une brève de ce matin en a 100. Pour une app qui défend la lenteur, c'est une tension réelle : la préférence « contenu intemporel » ne rend que 10 points, ce qui ne compense pas l'écart.

Limite 3

Le bonus de pluralité ne joue pas partout

Le bonus qui récompense un sujet traité par plusieurs médias (jusqu'à +30) a besoin du regroupement des articles par événement. Ce regroupement n'est calculé que sur certaines surfaces, l'Essentiel du jour et les sujets. Dans le flux ordinaire, la plupart des articles n'ont pas de groupe attaché, et le bonus vaut alors zéro.

Limite 4

Un thème très lu peut écraser le reste

Le poids appris d'un thème monte jusqu'à 3,0 et rapporte alors 100 points bruts, soit une bonne moitié de la marge du pilier Pertinence. Sur un compte ancien, l'habitude peut donc peser plus lourd que l'intérêt du jour. La décroissance de 2 % par jour a été ajoutée pour ça, et elle met environ 34 jours à ramener un poids maximal à 2,0.

Une de ces limites te paraît plus grave qu'écrit ici ? Le code est ouvert, les constantes aussi.

Aller vérifier
Le code

Vérifie par toi-même, fichier par fichier

Chaque chiffre de cette page vient d'un de ces fichiers. Si une valeur diffère de ce que tu lis dans le dépôt, c'est le dépôt qui a raison, et cette page qui a pris du retard.

recommendation/scoring_config.py Toutes les constantes : pondération des piliers, bonus, plafonds, températures. recommendation/pillars/ Les 4 piliers (pertinence, source, fraîcheur, qualité) et le passage des pénalités. recommendation/scoring_engine.py La normalisation sur 100, la moyenne pondérée, puis l'application des malus. recommendation_service.py La méthode qui construit le flux : candidats, fatigue de source, hasard, remontée des sources suivies. recommendation/randomization.py Le hasard contrôlé, et la garantie que le score déterministe reste intact. recommendation/reason_builder.py La construction de la phrase « Pourquoi cet article ? » et de ses 6 lignes de détail.

La méthode d'évaluation des médias, qui alimente le pilier Source, se lit à côté.

Lire la méthodologie