# Entity AI Category — Classification Rubric

**Scope:** `entity_ai_category` on EMEA (and regional) tenant tables · sourced from `domain_intelligence` email-domain enrichment  
**Owner:** GTM (Heidi) · **Runtime:** Yujie daily scan pipeline → OpenAI web search → `domain_intelligence` cache  
**Status:** Living document — **canonical source** for category definitions; update here first, then align enrichment prompt + downstream SQL/docs.

**Consumers:** Signal Model FIT score · Daily Brief routing · EMEA Tenants Monitor bot · Kerry outreach tiers · HubSpot AI Category field

---

## Why this doc exists

[`EMEA-Daily-Intelligence-Brief.md`](./EMEA-Daily-Intelligence-Brief.md) previously had one-line labels only. Enrichment had no published rubric in-repo, which led to **over-broad `company_ai_core`** tags (e.g. CPaaS / comms APIs classified as AI core).

This rubric is **stricter** than implicit LLM behavior. Pipeline prompt and manual overrides should converge on these rules over time.

---

## Category definitions

### `company_ai_core`

**AI 是核心产品或主营卖点。**

Examples (non-exhaustive):

- AI agent platforms / agent builders  
- AI automation products where AI is the product  
- AI creative tools (generative image/video/character platforms)  
- AI-native platforms (product does not exist without AI as the primary value prop)

**Not core:** “We use AI internally”, “AI-powered feature on a non-AI product”, generic “intelligent” marketing without AI as the main offering.

---

### `company_ai_related`

**公司产品/服务明显涉及 AI，但 AI 不是唯一或主要业务。**

Examples (non-exhaustive):

- AI-assisted workflow  
- AI-enabled analytics  
- AI integrations / add-ons  
- AI training or evaluation services  
- “AI-powered …” or “AI-driven …” on a broader SaaS (customs, ads, logistics, etc.)

Use when AI is **material** but the company’s primary category is something else (SaaS, vertical software, services).

---

### `company_non_ai`

**软件、SaaS、云、数据、FinTech、MarTech、通信、数据库、区块链等 — 只要官网没有把 AI 作为核心主营，即判为非 AI。**

Default bucket for real companies when AI is absent, peripheral, or marketing-only.

---

### `individual`

**公共邮箱或个人站点。**

- Free email domains (gmail, yahoo, hotmail, outlook, icomail, proton, etc.) → usually `individual` via `free_email_domain_list`  
- Personal sites with no inferable company entity

---

### `institution_non_ai` / institution variants

**学校、大学、教育/研究机构。**

Whether to use AI-related institution tags depends on **explicit AI education or research** on the public site — same strict bar as company rules (core vs related vs non-AI).

*(Enum in DB today: `institution_non_ai`; extend here if pipeline adds `institution_ai_*` later.)*

---

### `unknown`

**无法可靠确认组织。**

Use when web search is inconclusive, domain is parked, or enrichment fails. Route to manual review (`#emea-gtm-review`) — do not SLG outreach until resolved.

---

## Decision flow (summary)

```
Corporate email domain?
├─ Free email list match     → individual
├─ School / NGO / gov site   → institution_* (AI only if explicit AI research/education)
├─ Cannot identify org       → unknown
└─ Real company
   ├─ AI is THE product      → company_ai_core
   ├─ AI is a clear feature  → company_ai_related
   └─ Otherwise              → company_non_ai
```

---

## Validation examples

| Domain / company | Wrong (legacy enrichment) | Correct (this rubric) | Rationale |
|------------------|-------------------------|------------------------|-----------|
| **sinch.com** | `company_ai_core` | **`company_non_ai`** | Cloud comms / CPaaS (messaging, voice, verification APIs). AI not core offering. |
| qredence.ai | — | `company_ai_core` | Agentic AI systems as the product |
| azarc.io | — | `company_ai_related` | Customs automation platform with AI features |
| bidx.io | — | `company_ai_related` | Amazon ads SaaS with AI-driven optimization |

**Sinch canonical copy (enrichment output target):**

> `company_non_ai` · Sinch is a cloud communications company that provides messaging, voice, email, video, and verification APIs for businesses.

---

## How labels enter the system

| Step | Where | Notes |
|------|-------|-------|
| 1 | Email → `email_domain` | Per tenant |
| 2 | Cache lookup | `domain_intelligence` |
| 3 | Miss → OpenAI web search | `source = openai_web_search`; prompt should embed **this rubric** |
| 4 | Join to tenants | `emea_new_signup` · `emea_active_tenants` |
| 5 | Manual fix | Update `domain_intelligence` row or ops override; re-run routing |

Signal Model **does not re-classify** — it only reads `entity_ai_category` for FIT score and P0/P1 gates.

---

## FIT score mapping (Signal Model v0)

| Category | FIT points |
|----------|------------|
| `company_ai_core` | +30 |
| `company_ai_related` | +20 |
| `company_non_ai` (corporate email) | +15 |
| `institution_non_ai` | +8 |
| `unknown` | +3 |
| `individual` | +0 |

Stricter classification → fewer false P0/P1 from inflated FIT.

---

## Changelog

| Date | Change |
|------|--------|
| 2026-05-28 | Initial rubric (stricter core vs related vs non-AI). Sinch → `company_non_ai`. |

---

## Related files

- [`EMEA-Daily-Intelligence-Brief.md`](./EMEA-Daily-Intelligence-Brief.md) — routing rules  
- [`EMEA-Signal-Model-v0.sql`](./EMEA-Signal-Model-v0.sql) — scoring  
- [`Regional-Signal-Model-Ops-Flow.drawio`](../Regional-Signal-Model-Ops-Flow.drawio) — enrich step in pipeline  

**Pipeline prompt / code:** Yujie EMEA scan (not in this repo) — sync prompt from this doc when updating.
