Winnow et collecte de sources sans chaos de scraping
The pile of pages is not the product
There is a particular kind of AI project that starts with enthusiasm and ends with a folder called scrape-final-2-real-final. The team needs grounding. Someone says we should collect sources. Someoneelse finds a crawler. A week later there are thousands of files, three CSVs, a notebook that only runs on one laptop, and a small moral crisis about whether half the sources were allowed to be collected in the first place.
The tragedy is that everyone meant well. The team did not set out to build a data swamp. They wanted better answers. They wanted the model to cite actual material. They wanted the system to stop sounding like a consultant after airport delay number four. So they gathered. Then they gathered more. Then they discovered that gathering is not the same as having sources.
A source collection system has to answer boring questions before the clever work starts. Where did this come from? Was it allowed? When was it fetched? What status did the request return? What was extracted? What was the content hash? Which collector, search route, or API produced it? Can we reproduce the collection policy later? Can we show that private network ranges were blocked and rate limits were respected? If those questions are missing, the source pile is just a pile with confidence issues.
Winnow exists for that less glamorous, more useful layer. It is a Rust data-gathering platform and CLI/library for search, scrape, crawl, API collection, and structured output. The implementationdescribes text, JSON, JSONL, CSV, and HTML outputs, robots policy, per-domain rate limits, SSRF protection, and structured collection records. That is the right kind of boring. The crawler is not a hungry mouth. It is a controlled intake.
This distinction matters because AI grounding is only as good as the source path. A model can cite a paragraph and still be operationally useless if nobody knows where the paragraph came from, whether it was current, whether it was allowed to be used, or whether a later run would fetch the same material. Grounding without provenance is just a nicer-looking rumour.
Collection is a supply chain
People understand supply chains when boxes are involved. A supplier ships parts. The parts have batch numbers. There are invoices, delivery dates, quality checks, recalls, audits. Nobody serious says the warehouse is full, so we are done. With information, teams suddenly become mystical. A folder has files. A data lake has tables. A vector store has chunks. Somehow this is meant to imply truth.
It does not. Source collection is a supply chain too. The raw material is external information. It arrives through routes with different reliability, permissions, latency, formats, and failure modes. Search results are not the same as API records. A crawled page is not the same as an archive snapshot. A table export is not the same as a rendered HTML document. Treating all ofthat as just content flattens away the very facts that make content usable later.
Winnow's useful posture is that collection metadata travels with the extract. The source URL matters. The timestamp matters. The status matters. The content hash matters. The collector class matters. The output format matters. The record is not only the text that came out. It is the envelope around the text.
Cette enveloppe permet plus tard à un relecteur de distinguer la qualité de la source de celle du modèle. Si une réponse est fausse parce que le modèle a ignoré des preuves, c’est un échec. Si elle est fausse parce que la collecte a récupéré des pages obsolètes, c’en est un autre. Si elle est fausse parce qu’une source a été bloquée mais silencieusement ignorée, c’en est encore un autre. Si elle est fausse parce que le robot a récupéré une page de connexion et l’a traitée comme du contenu, félicitations, vous venez d’inventer une façon très coûteuse de citer une bannière de cookies.
Une bonne collecte de sources ne facilite pas tout le travail en aval. Elle rend les échecs diagnostiquables. C’est déjà une grande amélioration. En production, le diagnostiquable bat le magique à chaque fois. Les démos magiques vieillissent comme du lait.
Le web ouvert n’est pas votre entrepôt
Une grande partie de la culture du scraping se comporte encore comme si le web était un entrepôt gratuit avec un mauvais éclairage. Envoyer des requêtes, prendre des pages, déverser du HTML, passer à autre chose. Cette attitude était déjà fragile. Pour les systèmes d’IA, elle devient imprudente. Les données ne sont pas simplement consultées. Elles peuvent être indexées, résumées, citées, utilisées pour prendre des décisions, ou intégrées à des flux de travail qui survivent au moment initial de la collecte.
La collecte a donc besoin de freins. La politique robots n’est pas un fichier texte décoratif pour les gens polis. Les limites de débit ne sont pas facultatives parce que le pipeline a une échéance. Les plages réseau privées ne sont pas une opportunité de découverte passionnante. La protection SSRF n’est pas de la paranoïa. C’est la différence entre un outil de collecte et un incident de sécurité avec une mascotte.
Les notes de source Winnow s’alignent sur ces garde-fous : posture robots refusant par défaut, limites de débit par domaine, protection SSRF, sortie structurée. Ce ne sont pas des fonctionnalités secondaires. C’est la limite du produit. Un outil capable de récupérer des données sur Internet sans couche de politique n’est pas puissant de manière utile. C’est un passif avec un débit.
C’est aussi là que la gouvernance européenne devient très concrète. Pas au sens du slogan. Au sens opérationnel réel. Si une organisation veut une IA fondée sur des preuves, elle doit savoir comment les preuves sont entrées dans le système. La collecte était-elle autorisée ? Les sources étaient-elles traitées différemment selon leur classe ? Les enregistrements ont-ils été récupérés depuis des endroits que l’organisation est autorisée à traiter ? Les adresses privées étaient-elles bloquées ? Un opérateur pourrait-il expliquer la politique sans faire une danse interprétative devant les achats ?
Il y a une petite ironie sèche ici. Les paramètres ennuyeux du robot sont souvent plus importants pour la confiance que l’architecture du modèle. Cela semble injuste pour ceux qui aiment les diagrammes d’architecture. C’est pourtant vrai. Si les preuves entrent mal, le modèle ne peut devenir qu’un amplificateur élégant d’une mauvaise admission.
L’extraction n’est pas une copie
Une autre erreur courante consiste à confondre copie et extraction. Récupérer du HTML n’est pas la même chose qu’extraire un contenu utile. Une page brute contient de la navigation, des bannières de cookies, de la publicité, des liens connexes, des scories de pied de page, des scripts, des fragments de mise en page, et parfois la chose même que vous êtes venu chercher, cachée comme si elle vous devait de l’argent.
Les sorties de Winnow comptent, car les différentes tâches en aval ont besoin de formes différentes. Du texte pour la lecture. Du JSON ou du JSONL pour des lignes structurées. Du CSV pour des flux adaptés aux tableurs. Du HTML lorsque la structure d'origine importe. Le but n'est pas de choisir une sortie sacrée. Le but est de rendre la sortie explicite et adaptée à la tâche.
Cela devient crucial lorsque les sources alimentent la recherche, la récupération ou la gouvernance des connaissances. Un modèle ne devrait pas avoir à décider si un lien de pied de page est une preuve. Un système de récupération ne devrait pas indexer chaque bannière de cookies comme s'il s'agissait d'une déclaration de politique. Un pipeline de données ne devrait pas transformer une mise en page en table de faits par optimisme. L'extraction est le moment où la source devient un artefact utilisable par d'autres systèmes sans transporter chaque débris de page web tout au long du trajet.
Mais l'extraction doit aussi être honnête. Nettoyer n'est pas réécrire. Normaliser n'est pas inventer. Retirer le contenu standardisé n'est pas modifier l'affirmation. Si l'extracteur ne peut pas faire la différence, il doit être traité avec la même suspicion qu'un vendeur utilisant le mot sans effort. Bien en petites doses, dangereux près du budget.
Pourquoi cela vient avant la récupération
Les systèmes de récupération sont blâmés pour de nombreux problèmes qui ont commencé plus tôt. L'index renvoie de mauvais candidats, alors l'équipe ajuste le classement. Les citations sont faibles, alors quelqu'un change le découpage en morceaux. Le modèle semble incertain, alors quelqu'un ajoute une instruction d'invite avec la force émotionnelle d'un aimant de réfrigérateur. Parfois, la couche de récupération est effectivement le problème. Souvent, la couche de collecte a silencieusement empoisonné le repas avant même que le classement ne commence.
Si les sources arrivent sans enveloppes, la récupération ne peut pas les expliquer plus tard. Si les horodatages manquent, la fraîcheur devient une supposition. Si les codes de statut sont ignorés, l'échec ressemble à une absence. Si les hachages de contenu manquent, la détection de changement devient du folklore. Si la qualité d'extraction varie énormément, le classement devient un concours entre le signal et le contenu standardisé.
C'est pourquoi Winnow se place naturellement avant des systèmes comme BitWeave, Spindle, Fabric, ou tout produit IA basé sur des sources. Ce n'est pas la couche de raisonnement. Ce n'est pas le graphe de connaissances. Ce n'est pas l'interface utilisateur. C'est la discipline d'admission qui décide si les couches ultérieures reçoivent un matériel défendable ou un grenier hanté de fragments web.
Cet ordre compte. Collectez d'abord avec une politique. Enveloppez chaque source avec du contexte. Extrayez dans des formes explicites. Ensuite, indexez, citez, analysez, certifiez ou résumez. Si l'ordre est inversé, l'équipe finit par polir des réponses sur une entrée inconnue. C'est ainsi que des absurdités coûteuses obtiennent une belle interface.
Les comptes importent moins que le contrat
Winnow possède un vaste catalogue de collecteurs, d'intégrations de recherche, d'entrées API et de capacités d'extraction spécifiques à des sites. Les comptes exacts diffèrent entre les instantanés de sources, ce qui est normal pour une surface de collecte en évolution active et ne vaut pas la peine d'être transformé en poésie publique. Le point important n'est pas un nombre héroïque. Le point important est le contrat.
L'outil peut-il collecter à partir de plusieurs classes de routes ? Peut-il produire des formats structurés ? Peut-il appliquer des limites de sécurité ? Peut-il transporter des métadonnées de source ? Peut-il être utilisé comme bibliothèque ou CLI ? Une équipe peut-elle inspecter comment une source est entrée dans le système ? Ce sont les questions qui survivent à un déploiement réel.
Les chiffres sont tentants parce qu'ils semblent concrets. Mais pour une infrastructure de collecte, un mauvais chiffre peut détourner l'attention de la véritable assurance. Mille collecteurs bâclés valent moins qu'un ensemble plus restreint doté d'une politique, d'enveloppes et de contrats de sortie appropriés. La question qui compte n'est pas de savoir combien vous pouvez extraire. La question qui compte est de savoir ce que vous pouvez défendre après l'avoir extrait.
La leçon
La leçon de Winnow est que la collecte de sources n'est pas un prélude au véritable système d'IA. Elle fait partie du véritable système d'IA. La réponse qu'un utilisateur voit dépend de ce qui est entré, de la manière dont c'est entré, de ce qui a été extrait, du contexte qui a survécu et des routes non sécurisées qui ont été bloquées. Ce travail mérite une ingénierie, pas un script de week-end avec un nom de variable héroïque.
Winnow est utile parce qu'il traite la collecte comme une admission contrôlée : routes de sources, portes de politique, limites de sécurité, sorties structurées et enveloppes de sources. Il ne rend pas chaque source digne de confiance. Il rend le chemin de la source suffisamment visible pour que le reste du système puisse se comporter de manière responsable.
C'est la vérité sèche derrière la plupart des travaux d'IA fondés sur des sources. Avant que le modèle ne cite une source, avant que la récupération ne classe un candidat, avant que Spindle ne certifie un atome, avant que Fabric n'affiche une page derrière une réponse, quelqu'un doit collecter le matériel sans faire de désordre. Pas glamour. Très nécessaire. Un peu comme la plomberie, sauf que quand ça fuit, tout le monde appelle ça une hallucination de l'IA.
Alors oui, collectez des sources. Mais ne confondez pas un tas avec un corpus, ni un robot d'exploration avec une gouvernance. La question utile n'est pas de savoir à quelle vitesse l'outil peut dévorer le web. La question utile est de savoir si l'organisation peut encore expliquer ce qu'elle a dévoré, pourquoi c'était autorisé, ce qui en est ressorti et si le système suivant devrait lui faire confiance.