ใ็ฒพๅบฆใฎ้ซใใใผใฟใใใพใก๏ผใ PI-ZZA ใฏใGoogle Maps ใฎ็ถฒ็พ ็ๆค็ดขใจ AI ใซใใ่ชๅพใใฉใฆใธใณใฐใ็ตใฟๅใใใใๆฌกไธไปฃใฎใญใฑใผใทใงใณใปใคใณใใชใธใงใณในใปใใผใซใงใใ
ใใฉใณใใฃใคใบ (FC) ๆฅญ็ใซใใใ**ใกใฌใใฉใณใใฃใคใธใผ๏ผ20 ๅบ่ไปฅไธใฎ้ๅถไผ็คพ๏ผ**ใฎ็นๅฎใใ็ดๅถใปFC ใฎๅคๅฅใจใใฃใใไบบ้ใๆฐ้ฑ้ใใใฆ่กใๆณฅ่ญใใชใตใผใๆฅญๅใใAI ใจใผใธใงใณใใๆฐๆ้ใงๅฎ้ใใใใใจใ็ฎ็ใจใใฆใใพใใ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ฅ 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_API_KEY ใๆไฝ้่จญๅฎ
# 4. gRPC ใณใผใ็ๆ + Go ใใคใใชใใซใ
make proto
make build
# 5. ใในใ
make test # Go 9 pkg ok + Python 185 pass + 6 live skipped
# 6. PI-ZZA ใ็ผใ (ๆๅฐ: Places API 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 | 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 ไบๆ) |
| ๆฉ่ฝ | ็ถๆ | ๅฎๆธฌ |
|---|---|---|
| M1 Seed โ Places API (New) ใงๅบ่ๆฝๅบ | ๐ข | ๆฐๅฎฟ 25 ใปใซ โ 72 ๅบ่ / 5.4s |
| M2 Kitchen โ Firecrawl REST client | ๐ข | unit test 9/9ใlive ใฏ Firecrawl ็จผๅๆ |
| M3 Delivery โ browser-use + LLM ๅคๅฎ | ๐ข | mock / live ๅๆฟ (DELIVERY_MODE) |
| M4 Box โ SQLite + CSV + Streamlit UI | ๐ข | streamlit run cmd/box-ui/app.py ใงๅฏ่ฆๅ |
| Oven Pipeline.Bake | ๐ข | Seed โ Kitchen โ Judge โ Box ใฎ in-process ็ตฑๅ |
CLI pizza bake |
๐ข | .env ่ชๅ่ชญ่พผ + --with-judge ใงใใซ็ตฑๅ |
| Classification ็ฒพๅบฆ โฅ90% | ๐ก | golden 10 ใตใณใใซใmock baseline 60%ใPhase 3 ใง LLM ็ฒพๅบฆๆนๅ |
| E2E testcontainers-go | ๐ก | skeleton ใฎใฟ |
่ฉณ็ดฐใช็ถๆณ: docs/phase1-audit.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ใ