# 🚨 PLAN NAPRAWY I WERYFIKACJI DANYCH ## SYTUACJA KRYTYCZNA - WATERM: oznaczony jako "software house" → BŁĄD (to firma HVAC) - Potencjalnie więcej błędnych danych w 73 firmach - **RYZYKO:** Utrata zaufania użytkowników --- ## FAZA 1: NATYCHMIASTOWE DZIAŁANIA (TERAZ) ### 1.1 Ukrycie błędnych danych (5 min) ```bash ✓ Wyłączyć sekcję "Analiza Strony WWW" w company_detail.html ✓ Dodać info: "Analiza w trakcie weryfikacji" ✓ Pozostawić tylko zweryfikowane dane (NIP, REGON, KRS, adresy) ``` ### 1.2 Analiza skali problemu (30 min) ```python ✓ Sprawdzić 10 losowych firm ręcznie ✓ Porównać AI content_summary z rzeczywistą stroną ✓ Zidentyfikować % błędów ✓ Stworzyć listę priorytetową firm do naprawy ``` --- ## FAZA 2: POPRAWIONY PROCES ANALIZY (60-90 min) ### 2.1 Nowy prompt dla AI z weryfikacją ```python KLUCZOWE ZMIANY: 1. WIELOETAPOWA ANALIZA: - Krok 1: Odczytaj tytuł strony i menu główne - Krok 2: Znajdź sekcję "O nas" / "Usługi" - Krok 3: Podsumuj główny profil działalności - Krok 4: Wypisz konkretne usługi/produkty 2. CROSS-VALIDATION: - Porównaj z kategorią firmy w bazie (Inne/IT/Budownictwo/etc) - Jeśli niezgodność → FLAG do ręcznej weryfikacji 3. CONFIDENCE SCORE: - AI podaje pewność 1-10 - Jeśli <7 → wymaga ręcznej weryfikacji 4. STRUKTURYZOWANE DANE: { "company_type": "HVAC / Software / Construction / etc", "main_activity": "Krótki opis 1 zdanie", "services": ["lista", "konkretnych", "usług"], "confidence": 8, "verification_needed": false, "discrepancies": [] } ``` ### 2.2 Automatyczna weryfikacja jakości ```python def verify_analysis_quality(company, ai_result): """ Sprawdza spójność danych AI z bazą """ issues = [] # 1. Kategoria vs profil działalności if company.category == "IT" and "software" not in ai_result.lower(): issues.append("Category mismatch: IT company but no software mentioned") # 2. Nazwa vs opis if "waterm" in company.name.lower() and "software" in ai_result.lower(): issues.append("SUSPICIOUS: Waterm labeled as software company") # 3. Istniejące usługi vs AI services existing_services = [s.service.name for s in company.services] if existing_services and not any(s in ai_result for s in existing_services): issues.append("No overlap between existing and AI-detected services") return { 'needs_review': len(issues) > 0, 'issues': issues, 'confidence': 10 - (len(issues) * 3) } ``` ### 2.3 Wolniejsze tempo + retry ```python PARAMETRY: - 10 sekund między requestami (zamiast 4s) - Retry jeśli JSON błędny - Timeout 30s na request (zamiast 10s) - Zapisz RAW response do audytu ``` --- ## FAZA 3: WERYFIKACJA RĘCZNA (2-3 godziny) ### 3.1 Priorytet weryfikacji ``` 1. TOP 10 najczęściej odwiedzane firmy 2. Wszystkie firmy z category_id != wykrytej przez AI 3. Wszystkie z confidence < 7 4. Losowa próbka 10% pozostałych ``` ### 3.2 Narzędzie do weryfikacji ```python # Skrypt do ręcznej weryfikacji python verify_companies.py Wyświetla: [1/73] WATERM Website: https://waterm.pl AI says: "Software house..." Category: Usługi ⚠️ SUSPICIOUS: Category mismatch Open website? [Y/n]: y Correct? [Y/n]: n Enter correct description (PL): > WATERM to firma z Wejherowa specjalizująca się w systemach grzewczych... ✓ Saved! Next... ``` --- ## FAZA 4: MECHANIZMY DŁUGOTERMINOWE ### 4.1 Dashboard weryfikacji dla admina ``` /admin/data-quality Pokazuje: - Firmy wymagające weryfikacji (czerwone) - Historia zmian danych - User feedback (jeśli firma zgłosi błąd) - Confidence scores ``` ### 4.2 Feedback od użytkowników ```html Na profilu firmy: [⚠️ Zgłoś błąd w danych] Modal: "Co jest nieprawidłowe?" - Opis działalności - Usługi - Dane kontaktowe - Inne Powiadomienie → admin → weryfikacja → naprawa ``` ### 4.3 Self-service dla firm ``` Każda firma może: 1. Zalogować się (email verification) 2. Zobaczyć swój profil 3. Zaproponować poprawki 4. Admin akceptuje/odrzuca ``` ### 4.4 Okresowy audit (co kwartał) ```python # Cron job: co 3 miesiące 1. Ponownie fetchuj strony wszystkich firm 2. Porównaj z aktualnym zapisem 3. Jeśli duża różnica → flag do weryfikacji 4. Raport dla admina ``` --- ## FAZA 5: METRYKI JAKOŚCI ### 5.1 KPI ``` ✓ Accuracy rate: >95% (obecnie: ???) ✓ User reported errors: <2% firm ✓ Avg confidence score: >8/10 ✓ Time to fix reported error: <24h ``` ### 5.2 Dashboard quality metrics ```sql SELECT COUNT(*) as total, COUNT(*) FILTER (WHERE needs_verification) as needs_review, AVG(confidence_score) as avg_confidence, COUNT(*) FILTER (WHERE user_verified) as user_verified FROM company_website_analysis; ``` --- ## TIMELINE | Faza | Czas | Priorytet | Status | |------|------|-----------|--------| | 1.1 Ukrycie błędnych danych | 5 min | P0 | TODO | | 1.2 Analiza skali | 30 min | P0 | TODO | | 2.1 Nowy prompt | 30 min | P1 | TODO | | 2.2 Auto-weryfikacja | 30 min | P1 | TODO | | 2.3 Ponowna analiza 73 firm | 15 min | P1 | TODO | | 3.1 Weryfikacja TOP 10 | 1h | P1 | TODO | | 3.2 Weryfikacja flagged | 2h | P2 | TODO | | 4.1 Admin dashboard | 3h | P2 | TODO | | 4.2 User feedback | 2h | P2 | TODO | | 4.3 Self-service | 5h | P3 | TODO | **Łączny czas krytyczny (P0+P1): 2-3 godziny** --- ## REKOMENDACJA ### TERAZ (następne 3 godziny): 1. ✓ Ukryj sekcję "Analiza WWW" (5 min) 2. ✓ Stwórz nowy skrypt z lepszą weryfikacją (30 min) 3. ✓ Ponownie przeanalizuj wszystkie 73 firmy (15 min) 4. ✓ Ręcznie zweryfikuj TOP 20 (2h) 5. ✓ Włącz sekcję z poprawnymi danymi ### JUTRO: 6. Dodaj user feedback mechanism 7. Stwórz admin dashboard do weryfikacji ### W TYM TYGODNIU: 8. Zaimplementuj self-service dla firm 9. Ustaw quarterly audit --- ## CHECKPOINTS Przed włączeniem danych publicznie: - [ ] 100% TOP 10 firm ręcznie zweryfikowane - [ ] <5% firm z flagami do weryfikacji - [ ] Avg confidence >8/10 - [ ] Feedback mechanism działa - [ ] Admin może łatwo poprawiać błędy **Nie publikujemy dopóki wszystko nie jest zweryfikowane!**