Legal Data Hunter - warstwa katalogu zrodel polskiego prawa
Warstwa "katalog + harvest" projektu legal AI MateMatic. Mapuje, co z polskiego
prawa jest juz dostepne gotowymi kolektorami, i wskazuje luki do uzupelnienia
wlasnymi konektorami.
Czym to jest
worldwidelaw/legal-sources (Legal Data Hunter) - otwarte repo skryptow zbierania
otwartych danych prawnych z 110+ krajow (960+ kolektorow). Kazdy kolektor pobiera
i normalizuje dane z oficjalnego portalu/API rzadowego do wspolnego schematu.
Lokalna kopia
Sparse-clone polskiej czesci jest w ~/legal-data-hunter/
(17 MB; sources/PL/ + framework common/ + runner.py). Aktualizacja:
cd ~/legal-data-hunter && git pull
Pelne repo to 388 MB - NIE klonuj calosci, sparse-checkout wystarcza:
git clone --filter=blob:none --no-checkout --depth 1 \
https://github.com/worldwidelaw/legal-sources.git legal-data-hunter
cd legal-data-hunter
git config index.sparse true
git sparse-checkout init --cone --sparse-index
git sparse-checkout set sources/PL common docs
git checkout
⚠️ --sparse-index jest KONIECZNY na Windows - bez niego git checkout wywala
sie na sciezkach z : w nazwie (US/Louisiana) mimo cone-mode.
Pokrycie polskiego prawa (16 zrodel, stan 2026-05-19)
Pelna tabela ze statusem, API i licencja: references/coverage-pl.md.
Dziala (13 zrodel) - legislacja, orzecznictwo, regulatorzy, podatki:
- Legislacja:
DziennikUrzedowy, Sejm (ELI API, 96K aktow - oznaczony untested)
- Orzecznictwo:
ConstitutionalCourt (TK), SupremeCourt (SN), NSA, KIO,
SAOS (hurtowe archiwum wszystkich sadow)
- Regulatorzy:
KNF, UODO, UOKIK, UKE, URE
- Podatki:
KIS-EUREKA, NSA-Tax
Zablokowane / luki (3 zrodla):
SN - sn.pl w konserwacji, alternatywa SAOS zawiesila sie (osobne zrodlo
SupremeCourt dziala - ta pozycja to redundantny, zepsuty wariant)
MF - interpretacje podatkowe sip.mf.gov.pl, API EUREKA geo-blokowane/WAF
(czesciowo zastepuje je dzialajacy KIS-EUREKA)
To pokrywa wieksza czesc opublikowanego polskiego prawa - stad teza "~80%".
Czego TU NIE MA - luki do uzupelnienia przez MateMatic
| Luka |
Dlaczego |
Plan MateMatic |
| Biezace orzeczenia sadow powszechnych |
LDH ma je tylko przez SAOS, a SAOS to archiwum konczace sie ~2018 |
wlasny konektor do portali orzeczen orzeczenia.ms.gov.pl |
| Interpretacje podatkowe MF |
zrodlo MF zablokowane (WAF/geo) |
wlasny konektor lub oprzec sie na KIS-EUREKA |
| KRS - rejestr przedsiebiorcow |
brak w sources/PL w ogole |
skille gaius-lex (KRS) juz w MateMatic; ew. wlasny konektor MCP |
| Monitor Polski |
jawnie nieindeksowany |
do rozwazenia |
| Wyszukiwanie interaktywne (live query) |
kolektory LDH to HARVESTERY (hurt), nie API zapytan |
wlasne konektory zapytan: skill saos-orzecznictwo, przyszle ISAP/KRS |
Jak to sie laczy z reszta architektury
Trzy warstwy dostepu do polskiego prawa - nie konkuruja, uzupelniaja sie:
- Harvest / katalog (ta warstwa) - Legal Data Hunter. Hurtowy zaciag ~13
dzialajacych zrodel do lokalnego korpusu RODO-safe. Off-line, batch.
- Live query - wlasne konektory MateMatic. Skill
saos-orzecznictwo
(interaktywne wyszukiwanie orzeczen), przyszle ISAP/KRS. To jest moat.
- Prawo UE - skill
eu-sparql-search (EUR-Lex/CJEU).
Kolektor SAOS w LDH (sources/PL/SAOS) uzywa tylko Dump API (hurtowe archiwum,
append-only). Skill saos-orzecznictwo uzywa Search/Browse API (zapytania na
zywo). To NIE jest dublowanie - jedno zasila lokalny indeks, drugie odpowiada na
pytanie tu i teraz.
⚠️ Hostowane Search API legaldatahunter.com to zaleznosc chmurowa - sprzeczna
z teza zero-cloud MateMatic (RODO-safe self-hosted stack). Do produktu dla
kancelarii uruchamiaj kolektory lokalnie i trzymaj korpus u siebie. Hostowane
API jest OK tylko do szybkiego rozpoznania/dev.
Uruchamianie kolektorow
Framework: Python. Zaleznosci w requirements.txt (core: requests, pyyaml,
beautifulsoup4, lxml; ciezsze opcjonalne: playwright, psycopg2-binary,
opendataloader-pdf). Core jest juz zainstalowany na tej maszynie.
cd ~/legal-data-hunter
python runner.py status # przeglad stanu projektu
python runner.py sample PL/SAOS # tryb probny - 10+ rekordow do walidacji
python runner.py test PL/UODO # test kolektora
python runner.py fast PL/KIO # bootstrap_fast
Struktura kazdego zrodla sources/PL/<Nazwa>/:
bootstrap.py - kolektor: fetch_all(), fetch_updates(), normalize()
config.yaml - metadane, API, rate-limit, schema, licencja danych
status.yaml - historia uruchomien (jesli byl uruchamiany)
sample/ - 10+ rekordow do walidacji
retrieve.py - resolver referencji ("art. 415 kc" -> dokument), o ile istnieje
⚠️ common/pdf_extract.py ma preload_existing_ids() odpytujace hostowana baze
Neon Postgres (idempotencja pipeline'u LDH). Przy harveScie dla MateMatic
uruchamiaj w trybie bez tego checku - nie wystawiaj danych kancelarii do Neon.
Workflow
- Pytanie "czy mamy zrodlo X?" - sprawdz
references/coverage-pl.md. Jest
-> uzyj kolektora. Nie ma / zablokowane -> luka, patrz tabela luk wyzej.
- Hurtowy zaciag -
runner.py sample na probe, potem pelny fetch_all();
zapis do lokalnego korpusu (SQLite + vector store, patrz
wewnetrzne KGLF MateMatic).
- Synchronizacja - kolektory legislacyjne robia upsert (akty sie zmieniaja),
case-law append-only z dedup. Cyklicznie
fetch_updates().
- Zapytanie na zywo - NIE przez LDH; uzyj
saos-orzecznictwo lub innego
konektora zapytan.
- Luka - jesli zrodla brak albo jest zablokowane, to kandydat na wlasny
konektor MateMatic. Najpierw skill (wzorem
saos-orzecznictwo), potem MCP.
Reguly
- Repo AGPL-3.0 - skrypty kolektorow sa copyleft. Dane wyjsciowe maja wlasne
licencje (per
config.yaml). Uruchamianie kolektorow jako osobnych procesow i
uzywanie zebranych danych nie czyni powloki MCP MateMatic dzielem zaleznym -
spojne z insightem licencyjnym o MCP w otwartym ekosystemie MateMatic.
- Do produktu dla kancelarii: kolektory lokalnie, korpus lokalnie. Bez Neon, bez
hostowanego Search API.
- README polskiej sekcji w repo bywa nieaktualny (widziano date 2026-02-21 i
spis 4 zrodel przy realnych 16) - ufaj drzewu
sources/PL/ i status.yaml,
nie tekstowi README.
- Statusy w
references/coverage-pl.md to migawka 2026-05-19 - przy waznych
decyzjach odswiez (git pull + runner.py status).
1---2name: legal-data-hunter-pl3description: Catalog and bulk-harvest layer for Polish legal data, built on the Legal Data Hunter project (worldwidelaw/legal-sources). Use this skill whenever the user wants to know which Polish legal sources are already available, bulk-download Polish legislation, case law or regulator decisions (UODO, UOKiK, KNF, UKE, URE, KIO, NSA, Trybunal Konstytucyjny, Sad Najwyzszy, Dziennik Urzedowy, Sejm ELI), build a local RODO-safe corpus of Polish law, or decide whether MateMatic needs to build its own connector for a gap. Trigger on "Legal Data Hunter", "pokrycie polskiego prawa", "zaciagnij ustawy", "harvest orzecznictwa", "ktore zrodla mamy", "luka w zrodlach". Companion to saos-orzecznictwo (live query) and eu-sparql-search (EU law).4license: Apache-2.05---67# Legal Data Hunter - warstwa katalogu zrodel polskiego prawa89Warstwa "katalog + harvest" projektu legal AI MateMatic. Mapuje, co z polskiego10prawa jest juz dostepne gotowymi kolektorami, i wskazuje luki do uzupelnienia11wlasnymi konektorami.1213## Czym to jest1415`worldwidelaw/legal-sources` (Legal Data Hunter) - otwarte repo skryptow zbierania16otwartych danych prawnych z 110+ krajow (960+ kolektorow). Kazdy kolektor pobiera17i normalizuje dane z oficjalnego portalu/API rzadowego do wspolnego schematu.1819- Repo: https://github.com/worldwidelaw/legal-sources20- Dashboard + hostowane Search API (16 mln dokumentow): https://legaldatahunter.com21- **Licencja repo: AGPL-3.0** (skrypty). Licencja DANYCH jest per-zrodlo - patrz22 blok `license:` w `config.yaml` danego zrodla (np. SAOS = public domain).2324## Lokalna kopia2526Sparse-clone polskiej czesci jest w `~/legal-data-hunter/`27(17 MB; `sources/PL/` + framework `common/` + `runner.py`). Aktualizacja:2829```bash30cd ~/legal-data-hunter && git pull31```3233Pelne repo to 388 MB - NIE klonuj calosci, sparse-checkout wystarcza:34```bash35git clone --filter=blob:none --no-checkout --depth 1 \36 https://github.com/worldwidelaw/legal-sources.git legal-data-hunter37cd legal-data-hunter38git config index.sparse true39git sparse-checkout init --cone --sparse-index40git sparse-checkout set sources/PL common docs41git checkout42```43> ⚠️ `--sparse-index` jest KONIECZNY na Windows - bez niego `git checkout` wywala44> sie na sciezkach z `:` w nazwie (US/Louisiana) mimo cone-mode.4546## Pokrycie polskiego prawa (16 zrodel, stan 2026-05-19)4748Pelna tabela ze statusem, API i licencja: `references/coverage-pl.md`.4950**Dziala (13 zrodel)** - legislacja, orzecznictwo, regulatorzy, podatki:51- Legislacja: `DziennikUrzedowy`, `Sejm` (ELI API, 96K aktow - oznaczony untested)52- Orzecznictwo: `ConstitutionalCourt` (TK), `SupremeCourt` (SN), `NSA`, `KIO`,53 `SAOS` (hurtowe archiwum wszystkich sadow)54- Regulatorzy: `KNF`, `UODO`, `UOKIK`, `UKE`, `URE`55- Podatki: `KIS-EUREKA`, `NSA-Tax`5657**Zablokowane / luki (3 zrodla)**:58- `SN` - sn.pl w konserwacji, alternatywa SAOS zawiesila sie (osobne zrodlo59 `SupremeCourt` dziala - ta pozycja to redundantny, zepsuty wariant)60- `MF` - interpretacje podatkowe sip.mf.gov.pl, API EUREKA geo-blokowane/WAF61 (czesciowo zastepuje je dzialajacy `KIS-EUREKA`)6263To pokrywa wieksza czesc opublikowanego polskiego prawa - stad teza "~80%".6465## Czego TU NIE MA - luki do uzupelnienia przez MateMatic6667| Luka | Dlaczego | Plan MateMatic |68|---|---|---|69| Biezace orzeczenia sadow powszechnych | LDH ma je tylko przez SAOS, a SAOS to archiwum konczace sie ~2018 | wlasny konektor do portali orzeczen `orzeczenia.ms.gov.pl` |70| Interpretacje podatkowe MF | zrodlo `MF` zablokowane (WAF/geo) | wlasny konektor lub oprzec sie na `KIS-EUREKA` |71| KRS - rejestr przedsiebiorcow | brak w `sources/PL` w ogole | skille `gaius-lex` (KRS) juz w MateMatic; ew. wlasny konektor MCP |72| Monitor Polski | jawnie nieindeksowany | do rozwazenia |73| Wyszukiwanie interaktywne (live query) | kolektory LDH to HARVESTERY (hurt), nie API zapytan | wlasne konektory zapytan: skill `saos-orzecznictwo`, przyszle ISAP/KRS |7475## Jak to sie laczy z reszta architektury7677Trzy warstwy dostepu do polskiego prawa - **nie konkuruja, uzupelniaja sie**:78791. **Harvest / katalog (ta warstwa)** - Legal Data Hunter. Hurtowy zaciag ~1380 dzialajacych zrodel do lokalnego korpusu RODO-safe. Off-line, batch.812. **Live query** - wlasne konektory MateMatic. Skill `saos-orzecznictwo`82 (interaktywne wyszukiwanie orzeczen), przyszle ISAP/KRS. To jest moat.833. **Prawo UE** - skill `eu-sparql-search` (EUR-Lex/CJEU).8485Kolektor SAOS w LDH (`sources/PL/SAOS`) uzywa tylko Dump API (hurtowe archiwum,86append-only). Skill `saos-orzecznictwo` uzywa Search/Browse API (zapytania na87zywo). To NIE jest dublowanie - jedno zasila lokalny indeks, drugie odpowiada na88pytanie tu i teraz.8990> ⚠️ **Hostowane Search API legaldatahunter.com to zaleznosc chmurowa** - sprzeczna91> z teza zero-cloud MateMatic (RODO-safe self-hosted stack). Do produktu dla92> kancelarii uruchamiaj kolektory lokalnie i trzymaj korpus u siebie. Hostowane93> API jest OK tylko do szybkiego rozpoznania/dev.9495## Uruchamianie kolektorow9697Framework: Python. Zaleznosci w `requirements.txt` (core: `requests`, `pyyaml`,98`beautifulsoup4`, `lxml`; ciezsze opcjonalne: `playwright`, `psycopg2-binary`,99`opendataloader-pdf`). Core jest juz zainstalowany na tej maszynie.100101```bash102cd ~/legal-data-hunter103python runner.py status # przeglad stanu projektu104python runner.py sample PL/SAOS # tryb probny - 10+ rekordow do walidacji105python runner.py test PL/UODO # test kolektora106python runner.py fast PL/KIO # bootstrap_fast107```108109Struktura kazdego zrodla `sources/PL/<Nazwa>/`:110- `bootstrap.py` - kolektor: `fetch_all()`, `fetch_updates()`, `normalize()`111- `config.yaml` - metadane, API, rate-limit, schema, licencja danych112- `status.yaml` - historia uruchomien (jesli byl uruchamiany)113- `sample/` - 10+ rekordow do walidacji114- `retrieve.py` - resolver referencji ("art. 415 kc" -> dokument), o ile istnieje115116> ⚠️ `common/pdf_extract.py` ma `preload_existing_ids()` odpytujace hostowana baze117> Neon Postgres (idempotencja pipeline'u LDH). Przy harveScie dla MateMatic118> uruchamiaj w trybie bez tego checku - nie wystawiaj danych kancelarii do Neon.119120## Workflow1211221. **Pytanie "czy mamy zrodlo X?"** - sprawdz `references/coverage-pl.md`. Jest123 -> uzyj kolektora. Nie ma / zablokowane -> luka, patrz tabela luk wyzej.1242. **Hurtowy zaciag** - `runner.py sample` na probe, potem pelny `fetch_all()`;125 zapis do lokalnego korpusu (SQLite + vector store, patrz126 wewnetrzne KGLF MateMatic).1273. **Synchronizacja** - kolektory legislacyjne robia upsert (akty sie zmieniaja),128 case-law append-only z dedup. Cyklicznie `fetch_updates()`.1294. **Zapytanie na zywo** - NIE przez LDH; uzyj `saos-orzecznictwo` lub innego130 konektora zapytan.1315. **Luka** - jesli zrodla brak albo jest zablokowane, to kandydat na wlasny132 konektor MateMatic. Najpierw skill (wzorem `saos-orzecznictwo`), potem MCP.133134## Reguly135136- Repo AGPL-3.0 - skrypty kolektorow sa copyleft. Dane wyjsciowe maja wlasne137 licencje (per `config.yaml`). Uruchamianie kolektorow jako osobnych procesow i138 uzywanie zebranych danych nie czyni powloki MCP MateMatic dzielem zaleznym -139 spojne z insightem licencyjnym o MCP w otwartym ekosystemie MateMatic.140- Do produktu dla kancelarii: kolektory lokalnie, korpus lokalnie. Bez Neon, bez141 hostowanego Search API.142- README polskiej sekcji w repo bywa nieaktualny (widziano date 2026-02-21 i143 spis 4 zrodel przy realnych 16) - ufaj drzewu `sources/PL/` i `status.yaml`,144 nie tekstowi README.145- Statusy w `references/coverage-pl.md` to migawka 2026-05-19 - przy waznych146 decyzjach odswiez (`git pull` + `runner.py status`).