Process Integration & Zonal Search Agent PI-ZZA ใฏใOSM Overpass / JFA / ๅฝ็จๅบๆณไบบ็ชๅท CSV / ๅ ฌๅผใใผใธ / ไปปๆใฎ Google Places ใ็ตใฟๅใใใFC ไบๆฅญไผ็คพใๆ นๆ ไปใใง้่จใใใญใฑใผใทใงใณใปใคใณใใชใธใงใณในใปใใผใซใงใใ
ใใฉใณใใฃใคใบ (FC) ๆฅญ็ใซใใใ**ใกใฌใใฉใณใใฃใคใธใผ๏ผ20 ๅบ่ไปฅไธใฎ้ๅถไผ็คพ๏ผ**ใฎ็นๅฎใใ็ดๅถใปFC ใฎๅคๅฅใจใใฃใใไบบ้ใๆฐ้ฑ้ใใใฆ่กใๆณฅ่ญใใชใตใผใๆฅญๅใใAI ใจใผใธใงใณใใๆฐๆ้ใงๅฎ้ใใใใใจใ็ฎ็ใจใใฆใใพใใ
ๅฏพ่ฑกใฏใใซใผใใน / ใขในใใผใฌใผ / ๆฅญๅในใผใใผ / Ittoๅๅฅๆๅฐๅญฆ้ข / ใจใใฟใคใ ใใฃใใใใน / ใณใกใ็็ฒ / ใทใฃใใฌใผใผ / ใใผใใชใ / ใชใใใฆใน / Kids Duo / ใขใใใฌใฌใผใธ / ใซใซใไธผใจในใณ่ฑ่ ๅฐ้ๅบ้ไธผ / Brand off / TSUTAYA ใฎ 14 ใใฉใณใ ร 47 ้ฝ้ๅบ็ใLLM ใฏๅ็งฐๆญฃ่ฆๅใปๆน่ฉใปๆฝๅบ่ฃๅฉใซ้ๅฎใใground truth ใฏ pipeline ใๅๅพใใๅค้จ source ใจๅฝ็จๅบๆณไบบ็ชๅท CSV ใงๆค่จผใใพใใ
ไธป่ฆๆๆ็ฉใฏ test/fixtures/megafranchisee/ ใซๅบๅฎในใใใใทใงใใใจใใฆๅบๅใใพใใGoogle API ใฏไปปๆใงใOSM / JFA / ๅ ฌๅผใใผใธ / ๅฝ็จๅบ CSV ใฎ็ต่ทฏใ ใใงใๆดๆฐใงใใพใใ
| ใใกใคใซ | ่กๆฐ | ๅฝนๅฒ |
|---|---|---|
operator-centric-master-14brand-complete.csv |
527 | 14 ใใฉใณใๆจชๆใกใฎ operator-centric master |
fc-operators-14brand-only.csv |
481 | 14 ๅฏพ่ฑกใใฉใณใใ ใใฎ 1 ไบๆฅญไผ็คพ 1 ่ก master |
fc-links-14brand-only.csv |
427 | 14 ๅฏพ่ฑกใใฉใณใใ ใใฎ brand ร operator flat link |
all-fc-operator-links.csv |
744 | ๅ จใใฉใณใๆจชๆญใฎ franchisee/operator ็ขบๅฎ flat link |
all-fc-operator-candidates.csv |
767 | ๅ จใใฉใณใๆจชๆญใฎ franchisee + unknown ๅ่ฃ็ฃๆป flat link |
by-view/all-fc-brand-index.csv |
172 | ๅ จใใฉใณใๆจชๆญใฎ brand ๅฅ operator ไปถๆฐ index |
by-view/all-fc-singleton-brands.csv |
109 | operator 1ไปถใ ใใฎ่ใ brand ็ฃๆปใชในใ |
extended-fc-operator-links.csv |
348 | ่ฟฝๅ FCใใฉใณใ + ๆขๅญ้14ใใฉใณใใฎ franchisee/operator ๅฐ็จ flat link |
extended-brand-summary.csv |
345 | ่ฟฝๅ FCใใฉใณใ seed + ๆขๅญ้14ใใฉใณใใฎๅๅพ็ถๆณ summary |
brand-fill-rate.csv |
433 | brand ๅฅใฎๆฌ้จๅ ฌ่กจๅบ่ๆฐใซๅฏพใใ FC operator ๅ ๅกซ็ใปๅชๅ ๅบฆ |
official-source-audit.csv |
15 | ๅ ฌๅผFCใใผใธ / ๅ ฌๅผๆฑไบบ / ๅ ฌๅผๅบ่ไธ่ฆงใฎๅฉ็จๅฏ่ฝ source ็ต่ทฏ |
by-view/allbrand-operators-min20.csv |
213 | ๅ จใใฉใณใๆจชๆญ 20ๅบ่ไปฅไธ operator |
by-view/allbrand-megajii-min20-2brand.csv |
122 | ๅ จใใฉใณใๆจชๆญ 20ๅบ่ไปฅไธใใค2ใใฉใณใไปฅไธใฎใกใฌใธใผ |
by-view/megajii-ranking.csv |
22 | 14 ๅฏพ่ฑกใใฉใณใๅ ใง 2 ๆฅญๆ ไปฅไธใใค 20 ๅบ่ไปฅไธใฎๅณๅฏใกใฌใธใผใฉใณใญใณใฐ |
jfa-disclosures.csv |
103 | JFA ๆ ๅ ฑ้็คบๆธ้ข PDF index |
ๆก็จ source ใฏ jfa / jfa_disclosure / manual_megajii_* / pipeline / osm_overpass / official_franchisee_page / operator_official_brand_link ใชใฉใง provenance ใไฟๆใใพใใๆณไบบ็ชๅทใฏ var/houjin/registry.sqlite ใฎๅฝ็จๅบ CSV ใง็
งๅใงใใๅ ดๅใ ใไปไธใใพใใ
ๅ็ๆใฎๅบๆฌใณใใณใ:
env UV_CACHE_DIR=/tmp/uv-cache UV_NO_SYNC=1 ./bin/pizza osm-fetch-all
env UV_CACHE_DIR=/tmp/uv-cache UV_NO_SYNC=1 ./bin/pizza jfa-sync
env UV_CACHE_DIR=/tmp/uv-cache UV_NO_SYNC=1 ./bin/pizza jfa-disclosure-sync --fetch-pdfs
env UV_CACHE_DIR=/tmp/uv-cache UV_NO_SYNC=1 ./bin/pizza official-franchisee-sources
env UV_CACHE_DIR=/tmp/uv-cache UV_NO_SYNC=1 ./bin/pizza integrate --mode export \
--out test/fixtures/megafranchisee/fc-links.csv
env UV_CACHE_DIR=/tmp/uv-cache UV_NO_SYNC=1 ./bin/pizza brand-fill-rate-export
env UV_CACHE_DIR=/tmp/uv-cache UV_NO_SYNC=1 uv run --project services/delivery \
python -m pizza_delivery.megafranchisee_clean_export
env UV_CACHE_DIR=/tmp/uv-cache UV_NO_SYNC=1 ./bin/pizza extended-fc-brand-export
env UV_CACHE_DIR=/tmp/uv-cache UV_NO_SYNC=1 uv run --project services/delivery \
python -m pizza_delivery.operator_master_export \
--min-total 1 \
--out test/fixtures/megafranchisee/operator-centric-master-14brand-complete.csvโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ฅ Oven (Go Orchestrator) โ
โ cmd/pizza/ โ pizza bake ... โ
โโโโโโโโโโโฌโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
โ gRPC โ gRPC โ REST โ SQLite
โผ โผ โผ โผ
โโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโ
โ ๐ซ Dough โ โ ๐ต Courier โ โ ๐ง Kitchen โ โ ๐ฆ Box โ
โ Seed (Go) โ โ Delivery โ โ Firecrawl โ โ BI โ
โ โ โ (Python) โ โ (TS/AGPL) โ โ (Py) โ
โ M1 โ โ M3 โ โ M2 โ โ M4 โ
โโโโโโโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโ
โ Multi-LLM
โโโโโโโโโโโโโผโโโโโโโโโโโโโ
โผ โผ โผ
Anthropic OpenAI Gemini
| # | ใขใธใฅใผใซ | ๆฏๅฉ | ๅฎ่ฃ ่จ่ช | ใใฉใผใฏๅ | ใฉใคใปใณใน |
|---|---|---|---|---|---|
| M1 | Seed | ๐ซ ็ๅฐ | Go | gosom/google-maps-scraper + googlemaps/google-maps-services-go | MIT / Apache-2.0 |
| M2 | Kitchen | ๐ง ใใใใณใฐ | TypeScript | mendableai/firecrawl | AGPL-3.0 (REST ่ถๅขใง้้ข) |
| M3 | Delivery | ๐ต ้ ้ | Python | browser-use/browser-use | MIT |
| M4 | Box | ๐ฆ ็ฎฑ | Python (Streamlit + SQLite) | โ (่ชไฝ) | โ |
ๅค่จ่ชๅ ฑๅญ (polyglot): Go ใชใผใฑในใใฌใผใฟใ gRPC ใงๅใขใธใฅใผใซใๆใญใพใใใใฉใผใฏๅ OSS ใฏๅ ่จ่ชใฎใพใพไฟๆใใAPI ๅข็ใงๆฅ็ถใใพใใ
# 1. Clone
git clone git@github.com:clearclown/pizza.git
cd pizza
# 2. ็ฐๅขๆง็ฏ (Go / uv / buf / ใใผใซไธๅผ)
make bootstrap
# 3. ็ฐๅขๅคๆฐ
cp .env.example .env # Google Maps Platform ใฏใใใฉใซใ็กๅน
# 4. gRPC ใณใผใ็ๆ + Go ใใคใใชใใซใ
make proto
make build
# 5. ใในใ
make test # Go pkg + pytest 640 pass / 6 skipped (2026-04-27)
# 6. PI-ZZA ใ็ผใ (ๆๆ Places API ใไฝฟใๅ ดๅใ ใๆ็คบ opt-in)
PIZZA_ENABLE_PAID_GOOGLE_APIS=1 # ๅฟ
่ฆใชๆใ ใ่จญๅฎ
./bin/pizza bake --query "ใจใใฟใคใ ใใฃใใใใน" --area "ๆฐๅฎฟ"
# 6b. Expert Panel (Gemini Flash ร 2 + Claude critic) ใงๅคๅฎ
./bin/pizza serve --mode panel & # gRPC ่ตทๅ (ๅฅใทใงใซๆจๅฅจ)
./bin/pizza bake --query "ใจใใฟใคใ ใใฃใใใใน" --area "ๆฐๅฎฟ" \
--with-judge --judge-mode panel
# 6c. Research Pipeline ใง operator ๆทฑๆใ + ๅบๅ่ใฅใๅผ + ๆณไบบ็ชๅท verify
./bin/pizza research --brand "ใจใใฟใคใ ใใฃใใใใน" \
--expand --expand-area "ๆฑไบฌ้ฝ" --verify-houjin
# ๅ
จใใฉใฐ็ขบ่ช
./bin/pizza help # bake / research / serve ใฎ flag ไธ่ฆง
# 7. BI ๅฏ่ฆๅ
uv run streamlit run cmd/box-ui/app.pyDELIVERY_MODE ใฎๅๆฟ:
mock(default) โ ๅบๅฎๅคๅฎใง็้ใ ใ็ขบไฟใCI / ็้ใในใ็จliveโ.envใฎANTHROPIC_API_KEY(ใพใใฏ OpenAI / Gemini) ใไฝฟใฃใฆ browser-use + LLM ใง็ๅคๅฎ
ๆฌใใญใธใงใฏใใงใฏ Red โ Green โ Refactor ใๅณๅฎใใพใใ
# 1. ๐ด Red: ๅคฑๆใใใในใใ ใใณใใใ
git commit -m "test(scoring): add failing test for mega franchisee threshold"
# 2. ๐ข Green: ๆๅฐๅฎ่ฃ
ใงใในใใ้ใ
git commit -m "feat(scoring): count stores with 20+ threshold"
# 3. ๐ต Refactor: ๆง้ ใๆดใใ
git commit -m "refactor(scoring): extract threshold to config"่ฉณ็ดฐ: CONTRIBUTING.md / docs/tdd-workflow.md
pizza/
โโโ api/pizza/v1/ # ๐ gRPC proto ๅฅ็ด (buf ็ฎก็)
โโโ cmd/ # ๐ ใใคใใชใจใณใใช (pizza, dough-service, delivery-service, box-ui)
โโโ internal/ # ๐ Go ใใใฑใผใธ (oven / dough / toppings / courier / box / grid / scoring)
โโโ services/delivery/ # ๐ Python browser-use wrapper + Multi-LLM providers
โโโ gen/ # ๐ proto ็ๆ็ฉ (go / python / ts)
โโโ third_party/ # ๐ด upstream OSS ใฎใใฉใผใฏ (git subtree)
โโโ deploy/ # ๐ข compose.yaml, Dockerfile.*
โโโ docs/ # ๐ architecture / tdd / fork-strategy / proto-versioning
โโโ test/ # ๐งช E2E (testcontainers-go) + fixtures
โโโ scripts/ # ๐ bootstrap.sh / proto.sh / e2e.sh
ๅ จไฝๅใฏ ARCHITECTURE.md ใจ docs/architecture.md ใๅ็ งใ
| Layer | Tool |
|---|---|
| Orchestrator | Go 1.22+, gRPC, bufconn, testify, gomock |
| API ๅฅ็ด | Protocol Buffers, buf |
| AI ใจใผใธใงใณใ | browser-use, Anthropic / OpenAI / Gemini SDK |
| Crawler | Firecrawl (REST, ใปใซใใในใใพใใฏ SaaS) |
| Maps / Open Data | OSM Overpass, JFA, ๅฝ็จๅบๆณไบบ็ชๅท CSV, gosom/google-maps-scraper, Google Maps Places API |
| Python | 3.11+, uv, pytest, ruff |
| BI | Streamlit + SQLite |
| CI | GitHub Actions (ci / buf / codeql / release-please / upstream-sync) |
| Container | Docker Compose (podman ไบๆ) |
| ๆฉ่ฝ | ็ถๆ | ๅฎๆธฌ |
|---|---|---|
| 14 ใใฉใณใ operator-centric master | ๐ข | 527 operatorใ14 ใใฉใณใๅ จ CSV export |
| FC operator directory | ๐ข | 14ๅฏพ่ฑกใใฉใณใ 461 operator / 410 brand links |
| ๅ จใใฉใณใ FC operator links | ๐ข | 172ใใฉใณใใง727 franchisee links / ๅ่ฃ750 links |
| ่ฟฝๅ FCใใฉใณใ directory | ๐ข | 232่ฟฝๅ ใใฉใณใ seed + 113ๆขๅญ้14ใใฉใณใ / 159ใใฉใณใใง348 franchisee links |
| ๅณๅฏใกใฌใธใผใฉใณใญใณใฐ | ๐ข | ๅ จใใฉใณใ122็คพ / 14ๅฏพ่ฑกใใฉใณใ22็คพใ2+ๆฅญๆ ใใค20+ๅบ่ |
| OSM Overpass ๅ จๅฝ่ฃๅฎ | ๐ข | Google API ไธไฝฟ็จใฎๅบ่ๅๅพ็ต่ทฏ |
| JFA ๅไผๅก / ๆ ๅ ฑ้็คบๆธ้ข | ๐ข | ๅไผๅก scrape + PDF index 103 ไปถ |
| ๅ ฌๅผใใผใธ source ่ฟฝๅ | ๐ข | ๅ ฌๅผFCใป้ๅถไผ็คพใปๆฌ้จPRๆฌๆใๅฝ็จๅบ็ งๅไปใใง ORM ๅ |
| Places API scan | ๐ก | ๆๆ API ใฏ PIZZA_ENABLE_PAID_GOOGLE_APIS=1 ใฎๆ็คบ opt-in ๆใฎใฟ |
| EDINET / gBizINFO | ๐ก | API key ่จญๅฎๅพใซ่ฃๅฎๅฏ่ฝ |
่ฉณ็ดฐใช fixture ไปๆง: test/fixtures/megafranchisee/README.md
- ARCHITECTURE.md โ ไฟฏ็ฐๅณ
- docs/architecture.md โ ใทใผใฑใณในๅณใปSQLite ในใญใผใใปgRPC ๅฅ็ด
- docs/phase0-audit.md โ Phase 0 ๅฎไบใฌใใผใ
- docs/phase1-audit.md โ Phase 1 ๅฎไบ + ๆฎไปถ
- docs/tdd-workflow.md โ Red-Green-Refactor ๅฎไพ๏ผGo/Python๏ผ
- docs/fork-strategy.md โ git subtree ใงใฎ upstream ๅๆ
- docs/license-compliance.md โ AGPL Firecrawl ใฎ REST ่ถๅข้้ข
- docs/proto-versioning.md โ buf breaking ใใชใทใผ
- ้็บๅทฅ็จ.md โ ใใงใผใบๅฅใญใผใใใใ๏ผๆฅๆฌ่ชๅๆฌ๏ผ
- CONTRIBUTING.md โ ่ฒข็ฎใฌใคใ
- CODE_OF_CONDUCT.md โ ่กๅ่ฆ็ฏ
- SECURITY.md โ ่ๅผฑๆงๅ ฑๅ
- English README
ใใซใชใฏใจในใๆญ่ฟใใพใ๏ผ Red โ Green โ Refactor ใฎ TDD ใตใคใฏใซใจ Conventional Commits ใซๅพใฃใฆใใ ใใใ
Issue ใฏ ใใกใใ่ญฐ่ซใฏ Discussionsใ
ๆฌใใญใธใงใฏใใฏ MIT License ใงๅ ฌ้ใใฆใใพใ โ ใฆใผใขใขใจๅน็ใๆใใใในใฆใฎใจใณใธใใขใธใ
ใใฉใผใฏๅ OSS ใฎใฉใคใปใณในใฏๅใชใใธใใชใซๅพใใพใใFirecrawl ใฏ AGPL-3.0 ใงใใใPI-ZZA ๆฌไฝใจใฏใใญใปในๅข็๏ผREST๏ผใงๅ้ขใใใฆใใพใใ่ฉณ็ดฐ: docs/license-compliance.mdใ
