Doublecheck · Experiment · In ontwikkeling

Is dit al gefactcheckt? Antwoord met bron

Een zoeklaag die een screenshot of een stuk tekst koppelt aan factchecks die al bestaan, zonder zelf te oordelen.

Links een voorbeeldbericht met de tekst Een zonnebril dragen veroorzaakt huidkanker, rechts het antwoord van Doublecheck: al gecontroleerd, 3 factchecks door 2 uitgevers in 3 talen, met TheJournal.ie in het Engels en dpa in het Frans en het Nederlands, elk met datum en bron.

Door Alexander Kaan, product designer · bijgewerkt september 2026

Product
Doublecheck
Route
AI aan het werk zetten
Onderwerp
Open dataAI
Platform
Web
Jaar
2026

Iemand stuurt je een screenshot met een stellige bewering. Doublecheck zoekt of die bewering al door een factchecker is uitgezocht, en geeft terug wie dat deed, wanneer en wat eruit kwam. Een eigen oordeel of een waarheidspercentage zit er bewust niet in.

Gebouwd met
  • Python 3.12
  • FastAPI
  • sentence-transformers
  • PDQ-beeldhashes
  • Tesseract OCR
  • SQLite en numpy
  • pytest

In het kort

claims uit open factcheckdata
79.676
uitgevers van factchecks
1.596
talen in de index
38
verkeerde koppelingen op 1.550 paren tekst
5
tests, meer testcode dan code
1.682

Wat er lag

Iemand stuurt je een screenshot met een stellige bewering, en je wilt weten of het klopt. Een model laten oordelen levert alleen een nieuwe bewering op, die je dan weer moet checken. Daarom een kleinere en scherpere vraag: is dit al door iemand uitgezocht, en door wie? Het antwoord mag nooit verder gaan dan wat die factcheckers zelf schreven.

Drie details die het verschil maken

Hoe het is gemaakt

Wat we bouwden

Je geeft Doublecheck een screenshot of een stuk tekst. Uit een beeld leest hij eerst de tekst, in het Nederlands, Engels, Duits, Frans of Spaans. Dan zoekt hij in bijna tachtigduizend gecontroleerde beweringen naar dezelfde bewering, ook als die in een andere taal is geschreven, en geeft hij de factchecks terug met uitgever, datum en link. Het plaatje bovenaan is een voorbeeldbericht dat we zelf maakten; het antwoord ernaast is wat Doublecheck er echt van maakte.

Er zijn drie antwoorden, en meer niet: deze bewering is gecontroleerd door deze uitgevers, er is iets verwants gevonden maar niet dezelfde bewering, of we vonden niets. Een oordeel van ons, een score of een percentage over waarheid zit er niet in. Een browserextensie en een iOS-app om een screenshot te delen liggen als onderdeel klaar in Verifyr, het eerdere experiment dat nu ons onderdelenmagazijn is. Ze komen erbovenop zodra de laag eronder staat.

De testpagina van Doublecheck met het bestand bericht.png gekozen. De uitslag: deze bewering is gecontroleerd, drie checks van twee uitgevers, TheJournal.ie in het Engels, dpa in het Frans en dpa in het Nederlands, elk met datum en een link naar de bron.
Het voorbeeldbericht als plaatje ingestuurd. Doublecheck las de tekst uit het beeld en vond drie factchecks van twee uitgevers, in drie talen.

Hoe hij zoekt

Elke bewering wordt een rij van 384 getallen in een meertalig taalmodel, zodat dezelfde bewering in het Frans en in het Nederlands dicht bij elkaar ligt. Een match telt pas vanaf een gelijkenis van 0,92, over taalgrenzen heen vanaf 0,85, en tussen 0,80 en de drempel heet hij verwant. Een beeld krijgt daarnaast een vingerafdruk, en een beeld dat lijkt zonder dat de tekst klopt, telt nooit als meer dan verwant. Elk antwoord draagt de drempels en het model waarmee het gemaakt is, zodat je het kunt narekenen.

De 80.555 factchecks van 1.596 uitgevers komen uit de open feed van Data Commons, onder een licentie die doorgeven toestaat. Een taal mag de index pas in als het model hem aantoonbaar kan lezen; drie talen gingen er daarom weer uit. Zoeken loopt nog langs alle beweringen tegelijk: de helft van de vragen is binnen 190 milliseconden klaar en de traagste deed er 479 over, onder de grens van een halve seconde die we onszelf stelden. Bij twee keer zoveel beweringen is dat op, en dan is een echte zoekindex nodig.

Het ruwe antwoord van Doublecheck als JSON: categorie matched, de Engelse claim Drinking hot liquids will kill the novel coronavirus, een gelijkenis van 0,937, en de drempels text_match 0,92, text_related 0,8, image_same 31, text_match_crosslingual 0,85 en cluster_same 0,93.
Het ruwe antwoord op de Nederlandse zin over heet water: gevonden via een Engelse claim, met de gelijkenis en alle drempels erbij.

De regels staan in de code

Afspraken zijn makkelijk te vergeten, dus staan de belangrijkste in de code. Een factcheck zonder uitgever of zonder link kan de index niet in. Een test loopt elk antwoordmodel in het pakket langs op woorden als waarheid, waarschijnlijkheid en geloofwaardigheid, en valt om zodra er ergens zo'n veld opduikt. Een drempel komt alleen uit de configuratie, en twijfel maakt een drempel nooit ruimer.

Wat een resolver moet doen, staat los beschreven als protocol, met een eigen test die je tegen elke resolver kunt draaien, ook tegen een die iemand anders bouwt. Die test is eerlijk over zijn eigen grenzen: tegen onze resolver zag hij geen schending, maar kwamen vier verplichtingen niet aan bod, en dan zegt hij dat dit geen bewijs is.

Een terminalvenster met de uitvoer van python -m conformance http://localhost:8000: zes verplichtingen met ok, vier met een vraagteken omdat er geen matched voorbijkwam, en de slotzin dat dit geen conformiteitsbewijs is. De exitcode is 2.
De conformantietest tegen onze eigen resolver op 30 september 2026, letterlijk overgenomen en in een venster gezet.

Als het niet klopt

Onder elke uitslag kun je hem betwisten. Standaard bewaren we dan alleen een vingerafdruk van wat je instuurde, je toelichting en de uitslag die je betwist. Vink je aan dat we je invoer mogen bewaren, dan houden we hem negentig dagen vast voor foutanalyse, en krijg je een sleutel waarmee je hem eerder kunt laten verwijderen.

Zonder betwisting bewaart Doublecheck je invoer niet. Ook een fout krijgt een eigen tekst: een bestand dat te groot is, een beeld dat niet te lezen is, of een index die met een ander model is gebouwd. In dat laatste geval weigert Doublecheck te zoeken in plaats van te gokken.

Het blok Klopt deze uitslag niet? op de testpagina van Doublecheck: een veld om te beschrijven wat er misgaat, een vinkje Bewaar wat ik instuurde, voor foutanalyse met de uitleg over de vingerafdruk en de negentig dagen, en de knop Betwist deze uitslag.
Het blok om een uitslag te betwisten. Zonder het vinkje bewaren we alleen een vingerafdruk en je toelichting.

Wat nog niet werkt

In onze eigen meting koppelde de tekstroute 5 van de 1.550 paren verkeerd en de beeldroute 0 van de 4.000, en vond hij 64,8 procent van de paren terug. Precisie gaat bewust voor dekking. De vijf fouten zijn bekend: twee keer een ingekorte bewering, twee keer een verdraaide en één keer een ontkenning, en geen drempel haalt ze weg zonder nieuwe fouten te maken. De beeldroute is gemeten op een eigen testindex, want de open factcheckdata bevat geen beelden. Een bijgesneden beeld herkent hij nog niet.

Op echte data liep een tweede vraag vast: herhaalt een tekst van een taalmodel een weerlegde bewering in eigen woorden? Op 107 echte documenten vond Doublecheck geen van de 28 gevallen, en alle zeven meldingen waren fout, vooral op de factcheckpagina's zelf, die de bewering citeren voordat ze hem weerleggen. Op de 46 documenten die er niets mee te maken hadden kwam geen enkele valse melding. Dit is onderzoek, en zo staat het er ook.

Wat we eruit hebben geleerd

  1. 01

    Zes keer ging hetzelfde mis: een hulpmiddel nam stilletjes aan dat tekst in het Latijnse schrift staat, en omdat de tests Latijnse invoer gebruikten, werd het cijfer er zelfs beter van. Hoofdletters die in het Arabisch niet bestaan, een lettertype zonder Chinese, Japanse en Koreaanse tekens. Er staat nu een controle die elke tekstfunctie over 24 schriften laat lopen.

  2. 02

    Een drempel hoort bij een vraag. De grens die werkt voor de vraag of iets dezelfde bewering is, is te streng voor de vraag of een tekst hetzelfde zegt in andere woorden, en dat zag je pas op echte documenten.

  3. 03

    Lees de licentie voordat je de data leest. Het eerste corpus kwam uit een API van Google waarvan de voorwaarden een eigen database en doorgeven verbieden. Alles is omgezet naar de open feed van Data Commons en opnieuw gemeten.

  4. 04

    Een taal die het model niet kan lezen, maakt stille fouten. Drie talen gaven samen 71 procent valse koppelingen, op een manier die geen enkele benchmark zag. Sindsdien meten we eerst of het model een taal aankan, en pas dan mag hij erin.

Letters en kleuren

Letters
Testpagina
Systeemlettersystem-ui voor alles; de pagina laadt geen eigen letter en is hooguit 46rem breed.
Verwijdersleutel
IBM Plex MonoAlleen voor de sleutel die je na het betwisten krijgt, met de monospace van het systeem als terugval.
Kleuren
  • Vlak
    #F4F4F4
    het vak met de ruwe respons en de sleutel
  • Zacht
    #444444
    uitleg onder de velden
  • Rand
    #CCCCCC
    het kader om de uitslag
  • Vlak donker
    #23262B
    hetzelfde vlak in de donkere stand
  • Zacht donker
    #B9BEC7
    uitleg in de donkere stand
  • Bewust kaal: Doublecheck is een laag voor andere apps, en de testpagina is gereedschap om te zien wat hij teruggeeft, met het ruwe antwoord eronder.
  • Achtergrond en tekst volgen de kleuren van het systeem, zodat de pagina in de donkere stand leesbaar blijft.
  • Uitgelezen uit de code op 30 september 2026.

Waar het van gemaakt is

  • Invoer
    • FastAPI
    • POST /resolve
    • Tekst of beeld

    Eén ingang voor tekst tot tienduizend tekens of een beeld tot 8 MB; onbekende velden worden geweigerd.

  • Lezen
    • Tesseract
    • Vijf talen
    • Minimaal 12 tekens

    Staat er te weinig leesbare tekst op een beeld, dan zoekt hij alleen op het beeld zelf.

  • Tekst vergelijken
    • sentence-transformers
    • Meertalig MiniLM
    • 384 getallen

    Hoofdletters gaan eraf voor het vergelijken; drempels van 0,92, 0,85 over talen heen en 0,80 voor verwant.

  • Beeld vergelijken
    • PDQ
    • 256 bits
    • 31 bits verschil

    Een vingerafdruk van het beeld zelf; een beeldmatch zonder tekstmatch telt alleen als verwant.

  • Opslag en zoeken
    • SQLite
    • numpy
    • Alles langs

    Nog geen zoekindex: elke vraag wordt tegen alle 79.676 beweringen gelegd, de helft binnen 190 milliseconden.

  • Toetsen
    • pytest
    • Conformantietest
    • 24 schriften

    1.682 tests, een losse test voor het protocol, en een controle die elke tekstfunctie over 24 schriften laat lopen.

Voor wie verder wil lezen

Onder de motorkap

De index wordt opgebouwd uit de ClaimReview-feed van Data Commons.

De index wordt opgebouwd uit de ClaimReview-feed van Data Commons. Elke bewering krijgt een naam die volgt uit haar eigen tekst, zodat dezelfde bewering op elke machine dezelfde naam heeft. De taal wordt herkend, en alleen talen die op de gemeten lijst staan mogen erin. Beweringen die vrijwel hetzelfde zeggen worden gegroepeerd, zodat je ziet hoeveel onafhankelijke uitgevers er iets over schreven.

Elke vingerafdruk draagt de versie van het model waarmee hij gemaakt is. Draait de resolver met een ander model dan de index, dan zoekt hij niet. Het oordeel van een factchecker gaat letterlijk mee, en wordt daarnaast teruggebracht tot een paar vaste woorden zoals onwaar of onbekend, zodat je oordelen in verschillende talen naast elkaar kunt leggen.

Er staat meer testcode dan code: bij de laatste balans 9.305 regels test tegen 8.037 regels productie. Metingen die niet klopten zijn niet weggegooid maar staan als ingetrokken in het benchmarkdocument, zodat je ziet hoe de cijfers tot stand kwamen.

Waar het nu staat

Af: de zoeklaag voor tekst en beeld, de index van 79.676 beweringen in 38 talen, de testpagina, het betwisten, en het protocol met zijn eigen test.

Af: de zoeklaag voor tekst en beeld, de index van 79.676 beweringen in 38 talen, de testpagina, het betwisten, en het protocol met zijn eigen test. Doublecheck draait bij ons en is niet openbaar.

Nog niet af: de vijf bekende fouten in de tekstroute, bijgesneden beelden, en bijna een kwart van de oordelen die niet in een vast woord te vangen zijn. Voordat het corpus kan groeien is een echte zoekindex nodig. Daarna volgen een naam, metingen op echte data, en de extensie en de app erbovenop.

Zegt Doublecheck of iets waar is?

Nee. Hij zegt welke factcheckers een bewering al uitzochten en wat zij schreven, met de bron erbij. Een oordeel van ons, een score of een percentage over waarheid zit er niet in.

Wat kun je insturen?

Een screenshot of een stuk tekst. Uit een beeld leest hij eerst de tekst, in het Nederlands, Engels, Duits, Frans of Spaans.

Wordt wat ik instuur bewaard?

Nee. Alleen als je een uitslag betwist en aanvinkt dat we je invoer mogen bewaren, houden we hem negentig dagen vast voor foutanalyse, met een sleutel om hem eerder te laten verwijderen.

Waar komen de factchecks vandaan?

Uit de open feed van Data Commons, onder een licentie die doorgeven toestaat: 80.555 factchecks van 1.596 uitgevers.

Kan ik het al gebruiken?

Nog niet. Doublecheck draait bij ons en is niet openbaar.

Wat we hier deden

Lees ook

De oprichter van een filmstudio voor de ledwand met een zonsondergang, een laptop onder zijn arm.

Een halfuur gratis sparren over jouw digitale idee?

Waar loop jij tegenaan in je bedrijf? Wat kan beter? Wat kan sneller? Wat gaat nog met de hand en moet nodig geautomatiseerd worden?

  • Een halfuur sparren over jouw idee, gratis
  • Je weet direct welke route het is, hoeveel weken, en wat het kost
  • Ruwe inschatting over de prijs en het aantal weken
Wat is jouw idee?

„Een browsertool zoals Figma, maar dan om samen muziek te maken.”

Muzieklabel, Hilversum

Alexander Kaan, zwart-witfoto.

Vertel me je probleem, je geniale idee of stel gewoon wat vragen!

Alexander Kaan, product designer

Mogen we met cookies meten hoe je deze site gebruikt? Meer