# APAC data inventory — readable today vs. blocked

Verified live against `gcp-martech-infra.plg_dashboard.vw_pql_candidate_facts` (us-west2), APAC scope
(India + APAC-Others, excl. CN & JP), 38,429 tenants.

## Readable TODAY (enough to run Signal axis + the matrix in Fit-Unknown mode)

| Field | Coverage | Use |
|-------|----------|-----|
| `signup_date`, `signup_age_days`, `ga_channel`, UTM | full | acquisition / recency |
| `country`, `tenant_region` | full | APAC + per-market filter |
| `email_domain` | full | free-email vs. corporate heuristic (interim Fit) |
| `first_cluster_created_at` | ~92% | activation floor (weak) |
| `first_query_executed_at` | 42–55% | real activation gate |
| `first_import_attempted_at` / `_completed_at` | ~1.4k completed | **strongest live signal** |
| `has_payment_method`, `payment_method_added_at` | 743 | commercial intent |
| `cluster_count`, `logs_7d`, `logs_28d`, `active_days_28d` | full | workload depth + velocity |
| `data_as_of` | full | freshness |

## Blocked — every v1 axis enrichment is empty for APAC in this source

Confirmed `0` (or near-0) populated rows in the APAC slice:

| Field | Populated | Needed for | How to wire |
|-------|-----------|-----------|-------------|
| `company_ai_category` | **0** | **Fit axis → P0** | enrichment: EMEA uses a `domain_intelligence` cache + OpenAI web search (`cluster_metrics.py`). Interim = domain heuristic. |
| `tenant_avg_qps` | **0** | Workload Strong | **Clinic API** (Prometheus `tidb_executor_statement_total`, rate over 1h) — how EMEA's `cluster_metrics.py` computes it via `clinic.pingcap.com/.../data/metrics`. Grafana shows the same metric. |
| first-DDL timestamp | **absent (no column)** | Workload (build intent) | **O11Y** (slowlog/statements) — https://pingcap.feishu.cn/wiki/AoO4wmSKviDfG5kKvhdcA3t8nLf . The only signal genuinely still O11Y-only; not extracted in EMEA either. **Not solved this round.** |
| `spending_limit_updated_at` | **0** | Commercial (capacity) | **v1-planned** (EMEA upgrade, not started). Raw events exist in DevOps/billing (~473 EMEA tenants); window 30d when wired. Not Grafana, not metadb. |
| `track_step` | **0** | connected guard / suppression | CRM/ops write-back (EMEA stores it in `emea_active_tenants.track_step`: 0=N/A,1=email,2=connected) |
| `account_segmentation` | 0.4% | Fit (secondary) | enrichment |
| invoice / billed customer | absent | true monetization | DW — card is only a proxy |

## Impact of the blockers (why the asks matter, in numbers)
- **No fit enrichment → P0 = 0.** A latent pool of **180+** strong-signal accounts is stuck at P1 only because fit is Unknown.
- **No QPS / first DDL** → the two strongest workload signals contribute 0; APAC Strong is currently carried almost entirely by **imports**.
- **No `track_step`** → the queue can re-surface accounts sales already touched; connected-guard is a no-op until write-back exists.

## The earlier `pql-candidates-tab` gap (same list, for continuity)
When a PQL candidates tab was scoped in `tidb_growth_data`, the missing fields were exactly the
"Blocked" rows above: fit/AI-category, QPS, spending-limit, connected state, invoice. APAC inherits
the same gap list — tracked here so it isn't rediscovered.
