Data Quality Score
Każde schronisko ma data_quality_score jako float w skali 0.0-1.0. Wyższy wynik = bardziej kompletne dane.
Skala teoretyczna
| Score | Co oznacza |
|---|---|
| 1.0 | Komplet danych: nazwa, adres, telefon, email, godziny, geo, www |
| 0.8 - 0.99 | Brakuje 1-2 pola opcjonalne |
| 0.6 - 0.79 | Brakuje 3+ pól opcjonalnych, ale telefon + adres są |
| 0.4 - 0.59 | Mamy podstawy (telefon LUB adres) |
| 0.2 - 0.39 | Bardzo niepełne, tylko nazwa + miasto + województwo |
| ≤ 0.2 | Krytyczne braki, sprawdź telefonicznie przed wizytą |
Realny rozkład v1.0
Phase 1 scraper jest konserwatywny, dlatego scores są zawężone do zakresu 0.50 - 0.75:
| Bucket | Schroniska | % |
|---|---|---|
| 0.4 - 0.59 | 120 | 94.5% |
| 0.6 - 0.79 | 7 | 5.5% |
| ≥ 0.8 | 0 | 0% |
AVG: 0.51 · MIN: 0.50 · MAX: 0.75
Phase 2.5 enrichment (Google Places dla geo, DostInf wnioski o brakujące dane WIW) podniesie spektrum do 0.6-0.9 dla większości rekordów.
Filtrowanie po quality
Praktyczny threshold dla v1.0 to ≥ 0.55 (top ~30 schronisk z najpełniejszymi danymi):
// v1.0: top schroniska z pełnymi danymi (telefon + adres + email lub www)
const r = await fetch('https://otwarteschroniska.org.pl/api/v1/shelters.json');
const shelters = await r.json();
const top = shelters.filter(s => (s.data_quality_score ?? 0) >= 0.55);
console.log(`${top.length} schronisk z dobrym pokryciem danych`);
// Po Phase 2.5 enrichment: threshold ≥ 0.7 będzie sensowniejszy. Jak score jest obliczany
Score wyliczany przez Phase 1 scraper na podstawie obecności pól + jakości źródła + cross-source verification. Nie jest to subjective ocena, deterministyczna formuła z 4 warstwami anti-hallucynacji (Pydantic strict + citation verify + cross-source fuzzy + sample audit).