Sari la conținut

Cum funcționează?În fiecare dimineață, la 8, un Mac citește Senatul.

De la PDF-ul de pe senat.ro până la pagina pe care o citești: ce rulează, unde rulează și ce verifică codul înainte să publicăm ceva. Până azi, 52 de proiecte urmărite, 194 de documente oficiale citite și 247 de articole de presă verificate.

Lanțul de dimineață

Lanțul de dimineață, în zece pași. Desenul are același conținut ca lista.
  1. Pasul 1: Senatul. Proiectele noi și PDF-urile lor, citite cu MinerU, cu titluri și tabele; Tesseract verifică fiecare pagină și o preia unde lipsește text. 194 de documente citite, 194 cu OCR.

  2. Pasul 2: Analiza. Gemini, Claude și ChatGPT citesc separat fiecare proiect nou. Apoi motivele avizelor negative CES, cu citate verificate.

  3. Pasul 3: Presa. Cele trei modele caută articole; rămân doar linkurile care trec de cod. 247 de articole. Caută pe web.

  4. Pasul 4: Organizațiile. Scrisori, petiții și puncte de vedere, verificate pe documentul original. 13 poziții. Caută pe web.

  5. Pasul 5: Parlamentarii. Contactele oficiale de pe cdep.ro și senat.ro, cu o cerere pe secundă.

  6. Pasul 6: Rapoartele. Greșelile semnalate de cititori, reverificate de cele trei modele față de textul oficial.

  7. Pasul 7: Memoriile. Documentul .docx al proiectelor noi sau corectate. Numele tău îl completezi în browser.

  8. Pasul 8: Publicarea. Fără date valide nu publicăm. Apoi site-ul static, construit și urcat pe Cloudflare.

  9. Pasul 9: Alertele. Ediția zilei pe e-mail, doar după o publicare reușită și doar cu ce e nou.

  10. Pasul 10: GitHub. Datele zilei intră într-un commit, lângă tot istoricul lor.

Fiecare pas merge și separat. Un pas care eșuează nu le oprește pe celelalte, cu o excepție: dacă verificarea datelor pică, nu publicăm nimic în ziua aceea.

Cine citește legile?Trei modele, fiecare separat.

Gemini, Claude și ChatGPT primesc același text și aceeași cerere. Niciunul nu vede ce au răspuns celelalte. Fiecare dă un scor de la 1 la 10, iar scorul comun e media lor.

Același text
Fișa de pe senat.ro, forma inițiatorului (până la 14.000 de caractere) și expunerea de motive (până la 10.000).
Fără unelte
Primesc textul în cerere și răspund cu JSON. Nu pot naviga, rula comenzi sau scrie fișiere.
Cel mult 7 minute
Dacă un model nu răspunde la timp, scorul comun se face din celelalte.
Scorurile rămân la vedere
Pe pagina fiecărui proiect vezi scorul fiecărui model și unde nu sunt de acord.
Cum citești culorile și dezacordul
Exemplu: proiectul B563/2026. Același text ajunge la Gemini, Claude și ChatGPT, care dau fiecare un scor; scorul comun e media lor, 9,8 din 10, risc ridicat.

B563/2026 · textul oficial

Monopolul avocaților (UNBR) asupra contractelor scrise, actelor ONRC și blocarea serviciilor AI / LegalTech

Forma inițiatorului și expunerea de motive, ca text, plus fișa de pe senat.ro.

  • Gemini9,8/10fără unelte, răspuns în JSON
  • Claude9,7/10fără unelte, răspuns în JSON
  • ChatGPT9,8/10fără unelte, răspuns în JSON

Scorul comun: media celor trei

Risc ridicat9,8

Modelele sunt de acord

Un proiect real, cu scorurile de azi. Modelele: Gemini 4 Argon, Claude Opus 5.5, ChatGPT (GPT-6.1 Sol).

Cum alegem presa?Un link ajunge pe site doar dacă trece de cod.

Un model poate inventa o adresă sau un citat. De aceea nu-l credem pe cuvânt: fiecare link trece prin cinci verificări făcute de noi, în cod.

Cele cinci verificări din cod prin care trece fiecare link de presă, de la căutare până pe site.

Modelele caută. Gemini, Claude și ChatGPT dau, fiecare, adrese de articole și câte o propoziție copiată din ele. De aici înainte decide codul.

  1. Verificarea 1: Pagina se deschide?

    O descărcăm noi, în cel mult 15 secunde, și trebuie să fie o pagină web.

    Oprește: linkuri inventate, pagini blocate

  2. Verificarea 2: E o redacție?

    Nu site-uri oficiale ca senat.ro, nu rețele sociale, nu motoare de căutare.

    Oprește: surse care nu sunt presă

  3. Verificarea 3: Citatul e în pagină?

    Propoziția copiată de model trebuie să apară în articol: întreagă sau o bucată de 60 de caractere la rând. Altfel, măcar numărul proiectului.

    Oprește: citate parafrazate sau inventate

  4. Verificarea 4: E din perioada proiectului?

    Nu mai vechi cu un an decât înregistrarea proiectului la Senat.

    Oprește: articole mai vechi cu peste un an

  5. Verificarea 5: E o publicație urmărită?

    Publicațiile din lista noastră, de 72 de redacții, apar direct. Celelalte apar doar dacă cei trei cititori spun că articolul e chiar despre proiect.

    Oprește: preluări și articole care doar pomenesc proiectul

Pe site. Titlul, publicația și data le luăm din pagina articolului, nu de la model. Până azi au trecut 247 de articole din 96 de publicații.

Ce fel de articol e?

Fiecare articol verificat e citit apoi de trei cititori: două modele de decizie care rulează local, pe Mac, și GPT-6 Luna. Răspund la patru întrebări fixe, cu o probabilitate pentru fiecare variantă. Textul articolului îl curățăm întâi de meniuri și reclame, cu trafilatura.

  • Clef · Cloudflare

    Model de decizie open source (Apache-2.0), cu 27 de miliarde de parametri. Rulează cu MLX, pe 8 biți (mlx-community/clef-8bit).

  • d1-3B · Liquid AI

    Model de decizie open source (LFM Open License v1.0), cu 3 miliarde de parametri. Rulează cu PyTorch, pe GPU-ul Mac-ului (LiquidAI/d1-3B).

  • GPT-6 Luna · OpenAI

    Modelul din spatele Decisions API al OpenAI. Nu rulează local: îl întrebăm prin Codex CLI, fără unelte, ca pe celelalte modele mari.

Pe 46 de articole etichetate de mână, acolo unde cel puțin doi au fost de acord, poziția a fost corectă în 89% din cazuri.

Ce poziție are față de proiect?
criticfavorabilneutrumixt
Ce fel de sursă e?
presă naționalăpresă localăde specialitatepartid sau politicianpreluareblogONG sau instituție
Vorbește chiar despre proiect?
danu
E comunicatul de presă al unui partid?
danu

Cât de sigur e?

Eticheta apare doar dacă cel puțin doi din trei aleg aceeași variantă, fiecare cu cel puțin 60% încredere. Altfel, articolul rămâne fără etichetă.

Pozițiile organizațiilor trec prin aceleași porți. Și prin încă trei.

Scrisorile, petițiile și punctele de vedere le căutăm și pe site-urile emitenților, nu doar în presă. Proiectele cu risc ridicat sau aproape de termen le verificăm zilnic, cele cu risc moderat la trei zile, restul o dată pe săptămână.

Până azi: 13 poziții verificate, de la 387 de organizații.

  1. Emitentul e în document

    Numele organizației trebuie să apară în textul paginii sau al PDF-ului.

  2. Citatul spune poziția

    Cuvintele citatului trebuie să se potrivească cu ce cere: retragere, respingere, modificare sau susținere.

  3. Semnatarii se numără din document

    Numărăm lista numerotată, verificăm că numerotarea nu are goluri și o comparăm cu totalul anunțat în text. Persoanele fizice apar doar ca număr.

Ce se întâmplă când greșim?O corectură cere trei confirmări.

Oricine poate semnala o greșeală de pe pagina proiectului. Raportul e tratat ca date, niciodată ca instrucțiuni, iar analiza se schimbă singură doar dacă toate trei modelele îi dau dreptate.

Până azi: 1 analiză corectată așa.

  1. Raportul tău

    Îl trimiți de pe pagina proiectului. Turnstile oprește roboții, iar în baza de date nu păstrăm IP-ul tău sau alt identificator.

  2. Filtrul din cod

    Un raport care pare să dea ordine modelelor nu ajunge la ele: merge direct la un om.

  3. Trei verificări separate

    Gemini, Claude și ChatGPT, fără unelte, compară raportul cu textul oficial. Raportul le ajunge marcat ca text nesigur.

  4. Citatele, verificate

    Afirmația contestată trebuie să existe, cuvânt cu cuvânt, în analiza noastră, iar citatul dat de model, în textul oficial.

  5. Corectura

    Doar dacă toate trei confirmă. Claude o scrie fără să vadă textul raportului; Gemini și ChatGPT trebuie s-o aprobe amândoi.

  6. Pe pagină, cu data

    Corectura apare pe pagina proiectului, cu ziua în care am făcut-o. Orice alt raport ajunge la un om. Rapoartele verificate se șterg după 90 de zile.

Ce au voie modelele?Să citească și să răspundă. Atât.

Paginile web și rapoartele cititorilor pot ascunde instrucțiuni. De aceea modelele rulează închise: primesc textul, răspund cu JSON și nu pot atinge nimic altceva pe calculator.

Modelele primesc doar textul din prompt și răspund cu JSON, într-un dosar gol, cu un mediu minim și fără chei. Nu au terminal, nu scriu fișiere, nu au servere MCP. Doar căutarea de presă și de poziții are voie pe web. Codul verifică apoi răspunsul.

Prompt

textul oficial, ca date

un dosar gol · un mediu minim · fără chei

  • Gemini
  • Claude
  • ChatGPT
  • Fără: Terminal sau comenzi
  • Fără: Scriere de fișiere
  • Fără: Chei și tokenuri
  • Fără: Servere MCP și pluginuri
  • Căutare pe web doar la presă și la pozițiile organizațiilor. Tot ce găsesc trece apoi prin porțile din cod.

JSON

doar răspunsul cerut

Codul verifică

Pentru programatori: cum e închis fiecare CLI
  • claude: --tools "" (la căutare doar WebSearch,WebFetch) și --strict-mcp-config fără nicio configurație MCP.
  • codex: exec -s read-only, cu shell-ul, browserul, computer use, aplicațiile, pluginurile, hook-urile și serverele MCP oprite; --search doar la căutare.
  • agy: doi agenți proprii din .agents/agents/: lastraja-offline, fără unelte, și lastraja-web, doar cu search_web. Fără componentele implicite, fără MCP moștenit, fără terminal și fără fișiere.
  • Toate rulează în .cache/ai-sandbox, un dosar gol, cu un mediu minim: PATH, HOME, utilizatorul, limba, dosarul temporar și CODEX_HOME. Nimic din .env. Niciun flag „dangerously”.
  • Codul, în scripts/lib/ai-cli.mjs

Unde rulează?Pe un Mac, pe Cloudflare și pe GitHub.

Lanțul rulează pe calculatorul întreținătorului. Site-ul e static: pagini gata făcute, servite de Cloudflare. Un singur Worker răspunde la formulare și trimite e-mailurile.

Harta infrastructurii, pe o singură linie: datele vin de pe senat.ro pe Mac-ul întreținătorului; Mac-ul publică site-ul pe Cloudflare, trimite ediția alertelor și pune datele pe GitHub, pe o ramură separată; tu citești paginile de pe Cloudflare și trimiți acolo rapoarte și abonări.
  1. senat.ro

    și cdep.ro, sursa

    • Proiectele în consultare, cu PDF-urile și cronologia
    • Fișele parlamentarilor, o cerere pe secundă
    • Mai departe: proiecte, documente, fișe
  2. Mac-ul întreținătorului

    Apple Silicon · luni–vineri, 08:00, prin launchd

    • Scripturile lanțului, în Node.js
    • Gemini, Claude și ChatGPT, prin CLI-urile lor, închise
    • OCR: MinerU, verificat cu Tesseract
    • Clef și d1-3B, modelele de decizie locale
    • Build-ul site-ului static
    • Mai departe: datele zilei, cu tot istoricul
    • Înapoi: schimbări aprobate de întreținător

    GitHub

    github.com/eek/destraja.ro, public

    • Codul (AGPL-3.0), prompturile și datele (CC BY 4.0)
    • Datele fiecărei zile, într-un commit
    • Orice schimbare din afară trece pe la întreținător
    • Mai departe: site-ul, la fiecare publicare
    • Mai departe: ediția alertelor, fără adrese
    • Înapoi: rapoartele cititorilor
  3. Cloudflare

    destraja.ro

    • Site-ul static, din exportul Next.js
    • Un Worker pentru /api: rapoarte, abonări, alerte
    • D1: rapoartele și abonații
    • Turnstile, împotriva roboților
    • Email Service, de la alerte@destraja.ro
    • Cel mult 5 rapoarte sau abonări pe minut de la o adresă

    Adresele de e-mail stau doar aici, în D1. Pe Mac nu ajunge niciuna: scriptul trimite ediția zilei, iar Worker-ul o expediază abonaților.

    • Mai departe: pagini și e-mailuri
    • Înapoi: rapoarte și abonări
  4. Tu

    în browser

    • Pagini gata făcute, fără cont
    • Memoriul .docx, completat la tine în browser
    • Statistici doar dacă accepți

Cu ce e construit?Un site static și un singur Worker.

Unelte obișnuite, la vedere. Versiunile sunt cele din build-ul de azi.

Pe site

Next.jspaginile, exportate static
15.5
Reactcomponentele
19.3
Tailwind CSSstilurile, cu tema deschisă și cea închisă
4.3
TypeScripttot codul site-ului
5.9
three.jssatul 3D de pe prima pagină
0.186
docxmemoriul, generat în browser
9.13
Source Serif 4 și Public Sansfonturile, cu licență OFL
Google Analytics 4doar după ce accepți

Pe Cloudflare

Workerssite-ul static și cele câteva adrese /api
D1rapoartele cititorilor și abonații
Turnstileverificarea anti-roboți din formulare
Email Serviceconfirmările și alertele zilnice
Wranglermigrațiile bazei și publicarea
4.148

Pe Mac

launchdpornește lanțul luni–vineri la 08:00
Node.jsscripturile din scripts/
agy, claude, codexCLI-urile pentru Gemini, Claude și ChatGPT
pdf-parsestratul de text al PDF-urilor, dacă OCR-ul nu e disponibil
1.1
MinerU (OpenDataLab)textul PDF-urilor, cu titluri și tabele
ocrmypdf și Tesseractverificarea fiecărei pagini, OCR în română
MLXrulează local Clef
PyTorchrulează local d1-3B
trafilaturatextul curat al articolelor, fără meniuri
gitistoricul datelor, zi de zi

Pot verifica singur?Da. Totul e public.

Codul, prompturile, răspunsurile modelelor și datele sunt pe GitHub, cu tot istoricul. Codul e sub AGPL-3.0, analizele și datele sub CC BY 4.0. Orice schimbare venită din afară trece prin aprobarea întreținătorului, pentru că acest cod rulează zilnic pe calculatorul lui, cu drept de publicare.