feat: initial Dockerized domain intelligence dashboard
- FastAPI backend with DuckDB pushdown queries on 72M parquet
- Async enrichment worker: HTTP, SSL, DNS MX, CMS fingerprint, ip-api.com
- Resumable parquet download with HTTP Range support
- Lead scoring engine (max 100 pts, target countries ES,GB,DE,FR,RO,PT,AD,IT)
- Single-file Alpine.js + Chart.js dashboard on port 6677
- SQLite enrichment DB with job queue and scores tables
- Dockerized with persistent /data volume
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 16:22:30 +02:00
|
|
|
version: "3.9"
|
feat: BeautyLeads B2B cosmetics frontend on port 7788
New service (app/beauty_main.py) sharing the same /data volume:
- Separate FastAPI app running on port 7788
- beauty_ai.py: brand universe scan (~650 brands), portfolio match
detection against OUR_BRANDS, Gemini B2B assessment prompt in Spanish
returning quality/categories/dist_matches/outreach_email
- beauty_queue table + beauty_lead_quality/beauty_assessment columns
in enriched_domains (with migrations)
- Endpoints: /api/beauty/assess/batch, /api/beauty/leads,
/api/beauty/status, /api/beauty/export, /api/beauty/reset
- Static frontend: Browse (beauty/ecommerce pre-filtered, no CMS/SSL/KD
columns), Validator, B2B Pipeline (brand chips, expandable outreach),
Pre-screen, Export CSV
- docker-compose: second 'beauty' service with shared data volume
- Dockerfile: expose 7788 alongside 6677
Also: add 'error' prescreen_status handling + UI (orange stat box,
filter option) for 4xx/5xx HTTP responses
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 19:31:10 +02:00
|
|
|
|
|
|
|
|
x-common-env: &common-env
|
|
|
|
|
DATA_DIR: /data
|
|
|
|
|
PARQUET_URL: https://github.com/digitalcortex/72m-domains-dataset/raw/refs/heads/master/domains.parquet
|
|
|
|
|
CONCURRENCY_LIMIT: 50
|
|
|
|
|
SCORE_THRESHOLD: 60
|
|
|
|
|
TARGET_TLDS: es,com,net
|
|
|
|
|
TARGET_COUNTRIES: ES,GB,DE,FR,RO,PT,AD,IT
|
|
|
|
|
REPLICATE_API_TOKEN: r8_7I7Feai78f9PzMOs20y5GVFKiLkgUWP463vZO
|
|
|
|
|
AI_CONCURRENCY: 3
|
|
|
|
|
|
feat: initial Dockerized domain intelligence dashboard
- FastAPI backend with DuckDB pushdown queries on 72M parquet
- Async enrichment worker: HTTP, SSL, DNS MX, CMS fingerprint, ip-api.com
- Resumable parquet download with HTTP Range support
- Lead scoring engine (max 100 pts, target countries ES,GB,DE,FR,RO,PT,AD,IT)
- Single-file Alpine.js + Chart.js dashboard on port 6677
- SQLite enrichment DB with job queue and scores tables
- Dockerized with persistent /data volume
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 16:22:30 +02:00
|
|
|
services:
|
|
|
|
|
dashboard:
|
|
|
|
|
build: .
|
|
|
|
|
ports:
|
|
|
|
|
- "6677:6677"
|
|
|
|
|
volumes:
|
|
|
|
|
- ./data:/data
|
|
|
|
|
environment:
|
feat: BeautyLeads B2B cosmetics frontend on port 7788
New service (app/beauty_main.py) sharing the same /data volume:
- Separate FastAPI app running on port 7788
- beauty_ai.py: brand universe scan (~650 brands), portfolio match
detection against OUR_BRANDS, Gemini B2B assessment prompt in Spanish
returning quality/categories/dist_matches/outreach_email
- beauty_queue table + beauty_lead_quality/beauty_assessment columns
in enriched_domains (with migrations)
- Endpoints: /api/beauty/assess/batch, /api/beauty/leads,
/api/beauty/status, /api/beauty/export, /api/beauty/reset
- Static frontend: Browse (beauty/ecommerce pre-filtered, no CMS/SSL/KD
columns), Validator, B2B Pipeline (brand chips, expandable outreach),
Pre-screen, Export CSV
- docker-compose: second 'beauty' service with shared data volume
- Dockerfile: expose 7788 alongside 6677
Also: add 'error' prescreen_status handling + UI (orange stat box,
filter option) for 4xx/5xx HTTP responses
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 19:31:10 +02:00
|
|
|
<<: *common-env
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
beauty:
|
|
|
|
|
build: .
|
|
|
|
|
command: python -m app.beauty_main
|
|
|
|
|
ports:
|
|
|
|
|
- "7788:7788"
|
|
|
|
|
volumes:
|
|
|
|
|
- ./data:/data # shares the same DB / parquet / duckdb
|
|
|
|
|
environment:
|
|
|
|
|
<<: *common-env
|
|
|
|
|
depends_on:
|
|
|
|
|
- dashboard # dashboard handles parquet download & index build first
|
feat: initial Dockerized domain intelligence dashboard
- FastAPI backend with DuckDB pushdown queries on 72M parquet
- Async enrichment worker: HTTP, SSL, DNS MX, CMS fingerprint, ip-api.com
- Resumable parquet download with HTTP Range support
- Lead scoring engine (max 100 pts, target countries ES,GB,DE,FR,RO,PT,AD,IT)
- Single-file Alpine.js + Chart.js dashboard on port 6677
- SQLite enrichment DB with job queue and scores tables
- Dockerized with persistent /data volume
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 16:22:30 +02:00
|
|
|
restart: unless-stopped
|