Metoda
Tu pokazujemy dokładnie jak liczymy ranking, jak działa AI Strażnik i co dzieje się z twoim zgłoszeniem od kliknięcia „Wyślij" do publikacji.
Cykl życia zgłoszenia
- 1Submit: Użytkownik (zalogowany lub anonimowy) wypełnia formularz. Tytuł + opis + kategoria + urząd. Anonimowi podają email do claim flow.
- 2AI Strażnik: Treść przechodzi przez klasyfikator AI: spam, mowa nienawiści, dane osobowe, manipulacja. Jeśli spam_score lub hate_speech_score >0.85 — odrzucone z prośbą o poprawę.
- 3Moderacja: Moderator (rola=moderator|admin) widzi zgłoszenia w /moderacja. Decyzja: zaakceptuj / odrzuć / poproś o doprecyzowanie.
- 4Publikacja: Status `oczekujace` → widoczne publicznie, można je weryfikować.
- 5Weryfikacja społ.: Inni zalogowani użytkownicy oceniają: Potwierdzam / Podważam / Notatka. Każda waży reputacją głosującego.
- 6Konsensus: Algorytm liczy konsensus_score (-100 do +100). Powyżej +30 → status `potwierdzona_patologia`/`potwierdzona_pozytywna`. Poniżej -30 → `odrzucone`. Przedział → `kontrowersyjne`.
- 7Indeks patologii urzędu: Z agregacji konsensus_score zgłoszeń liczymy indeks per urząd (0-100, im wyżej tym gorzej).
Wzór: Indeks Patologii urzędu
Dla urzędu U z liczbą zgłoszeń N(U):
indeks(U) = 100 × (Σ max(0, konsensus_score(z)) / 100) ÷ N(U) × wagaWolumenu(N(U)) gdzie: konsensus_score(z) ∈ [-100, +100] wagaWolumenu(n) = min(1, log10(n+1) / log10(10)) // tłumi efekt dla małej próbki
- Wartość 0-100: 0 = ideał, 100 = jaskinia patologii.
- Tylko zgłoszenia ze statusem `potwierdzona_patologia` / `kontrowersyjne` wliczamy do indeksu.
- Wagi w drugiej iteracji wprowadzą czynnik czasu (świeższe zgłoszenia ważą więcej).
- Dobre praktyki obniżają indeks symetrycznie.
Konsensus społeczny (Community Notes style)
Inspiracja: Twitter/X Community Notes. Idea: nie liczy się sumaryczny wynik głosowania, ale cross-faction agreement.
Każdy głos (Potwierdzam/Podważam/Notatka) waży reputacją głosującego. Reputację zdobywa się przez spójność z konsensusem w przeszłych głosowaniach — nie przez "wygrane" w jakąkolwiek stronę.
Konsekwencja: głosowanie tłumu w jedną stronę bez różnorodności źródeł NIE wpływa znacząco na konsensus. Dopiero gdy ludzie zwykle nie zgadzający się ze sobą się ZGADZAJĄ — score skacze.
Aktualnie: faza beta — używamy uproszczonego algorytmu (suma głosów ważona reputacją). Pełen algorytm Bridge-Based Ranking trafi do produkcji wraz z migracją Supabase.
AI Strażnik treści
Model:
spam_score— czy to spam, oszustwo, reklamahate_speech_score— mowa nienawiści, groźbypersonal_data_score— czy ujawnia PESEL, pełne nazwiska, adresymanipulation_score— sygnały manipulacji emocjonalnej, dezinformacjicredibility_score— wewnętrzna spójność narracji
Próg blokady: spam_score lub hate_speech_score > 0.85 → zgłoszenie odrzucone (z uzasadnieniem). Inne flagi tylko priorityzują kolejkę moderacji.
AI nie podejmuje decyzji ostatecznej — zawsze widzi to człowiek. Klasyfikator służy do sortowania.
Ochrona zgłaszającego
- Anonimowość zgłaszającego jest defaultem. Nawet zalogowany user może wybrać opcję „anonim".
- Nazwiska urzędników: tylko imię + pierwsza litera (np. „Pan Jan K.").
- IP zapisujemy w logach 90 dni — wyłącznie na potrzeby zgodności DSA i fail2ban.
- Email do claim flow przechowujemy zaszyfrowany (Supabase RLS).
- Eksport CSV dla dziennikarzy jest w pełni anonimizowany (bez user_id, email).
Granice metodologii
- To obraz emocji obywateli, nie naukowa ewaluacja skuteczności urzędu.
- Algorytm nie jest odporny na koordynowane kampanie (mitygowane Community Notes-style).
- Świeże urzędy z <5 zgłoszeniami mają niski confidence — pokażemy etykietę „Mała próbka".
- Mała próbka nie znaczy „dobry urząd" — znaczy „brak danych".
Pełna transparentność jest naszą polisą. Zob. /transparentnosc dla finansów i zespołu.
Sugestie do metodologii: redakcja@zeropatologii.pl