---
name: L2 Philosophy - mql-enrichment-service
description: AI philosophy for mql-enrichment-service. Names three concrete red lines, the PII tenant-only rule, sample-review HITL placement, retention defaults, and the response-shape conventions every component honors.
type: layer-artifact
layer: L2
populated_from: Q4, Q3 (no anti-tone since tone is N/A), Q9 (GDPR + SOC 2)
Owner: RevOps-AI eng lead, with Compliance Engineering signoff on PII rule and consent flow
---

# L2 Philosophy - mql-enrichment-service

- **Last reviewed:** 2026-04-22 (consent-flow incident drove a review)
- **Review cadence:** quarterly + on regulatory change + on adversary evolution
- **Status:** active

## Maturity self-assessment

| Aspect | State | Evidence |
|--------|-------|----------|
| Red lines named (>= 3, concrete) | mature | Three red lines below; each has enforcement mechanism cited in L3 contract |
| PII rule decided and enforced | mature | `pii-tenant-only`; tenant-boundary egress check at every model and tool call; verified 2026-04-22 incident drill |
| Human-in-loop placement decided | mature | Sample-review at 5% + SDR manual override; reviewer rotation in Confluence `revops-ai/oncall` |
| Retention default decided | mature | See section below; SOC 2 audit trail retained per regulatory requirement |
| Response-shape conventions named | mature | Structured-record output only; schema versioned alongside prompt library |

## Red lines

Every component honors these. Output that violates is a defect.

### 1. Never enriches an MQL with data from sources where consent is missing or revoked

- **Concrete behavior:** before any enrichment field is written, the consent-service is checked for the MQL's email + tenant pair; absent or revoked consent results in a no-enrichment record (the MQL passes through unenriched with a `consent_check_result: revoked` annotation)
- **Enforcement mechanism:** input guardrail (consent check) runs before any model or tool call; output guardrail re-checks before write to `revops.mql_facts`; consent-flow ADR (ADR-0003) names the implementation
- **Recent test:** synthetic revocation test 2026-04-22; propagated within 3 minutes 14 seconds (well within 5-minute cache TTL)

### 2. Never overwrites an SDR's manual qualification edit

- **Concrete behavior:** if an SDR has set any field in `revops.mql_facts` for an MQL, the enrichment service annotates rather than overwrites; the structured record carries `sdr_edit_protected: {field_list}` for fields the SDR locked
- **Enforcement mechanism:** output guardrail compares incoming SDR-edited timestamp on each field; mismatch triggers annotate-don't-overwrite; logged as `guardrail_trips: sdr_edit_respect`
- **Recent test:** weekly SDR-feedback drain confirms no reported overwrites in 14 weeks

### 3. Never produces a confidence score on data older than 90 days without flagging staleness explicitly

- **Concrete behavior:** every enrichment field carries a `data_snapshot_date`; if any source field is > 90 days old, the field's confidence score is suppressed and replaced with a `stale_pending_refresh` flag visible to SDRs
- **Enforcement mechanism:** post-hoc guardrail audits a daily sample; staleness rate above 5% trips an alert to RevOps-Ops oncall
- **Recent test:** 2026-04-25 daily audit; staleness rate 1.8% (well below threshold)

## PII handling

- **Rule:** `pii-tenant-only`
- **PII definition:** per {{cutting_edge_saas_company}}'s GDPR mapping, includes name, email, phone, IP address, behavioral fingerprint (cookies / session ids), inferred title, inferred company size if derived from PII source
- **PII may travel:** within tenant-scoped queues (`enrichment-queue-{tenant_id}`); within the warehouse fact tables under tenant scoping
- **PII may not travel:** to {{shared_log_aggregator}} (logs scrubbed at egress); to third-party model APIs (we use the platform team's privately-hosted models from `{{platform_team_name}}/ai-kit`); to any downstream pod outside the tenant boundary
- **Detection mechanism:** regex + ML PII classifier from `{{platform_team_name}}/ai-kit/guardrails/pii-detector` at every tenant-boundary egress point
- **Action on detection:** redact-or-block; never silent-pass. Detection event logs to `cross-platform/alerting-fabric.md` topology

## Human-in-loop placement

- **Placement:** `sample-review` at 5% (every 20th enrichment is reviewed by an SDR-team reviewer; reviewer outputs land in `revops.mql_review_log`)
- **Plus:** SDR manual override on every individual MQL (Red Line 2 enforces respect for these)
- **Reviewer role:** SDR Team Lead (rotating; weekly assignment)
- **Review SLA:** 4 business hours per sampled record (held; trailing 30-day SLA hit rate 98.4%)
- **Escalation path:** if reviewer queue grows beyond 12-hour aggregate backlog, PagerDuty fires to RevOps-AI eng lead; second-tier escalation to {{exec_vp_revops}}

## Retention defaults

- **Inputs (raw MQLs):** 30 days (operational debugging window for enrichment quality issues)
- **Outputs (enrichment records):** 90 days in operational store; permanent in warehouse `revops.mql_facts` for revenue attribution
- **Intermediate state (tool calls, reasoning traces):** 7 days (cost containment)
- **Audit trail (SOC 2 obligation):** 7 years per {{cutting_edge_saas_company}} compliance retention policy
- **Override path:** `RETENTION-EXTEND-{NNNN}` Linear ticket signed by VP RevOps + Compliance Engineering; logged in `runbooks/retention-extend.md`

## Response-shape conventions

`mql-enrichment-service` outputs are structured records, not prose. Conventions:

- **Never:** emits prose, narrative, or explanatory text in enrichment records
- **Always:** emits the schema in `kit/contracts/enrichment-record-schema.json`, with every field carrying provenance (source) and confidence (0.0-1.0)
- **Length envelope:** N/A (structured record; field count varies by enrichment depth tier)
- **Citation requirement:** every non-deterministic enrichment field cites its source row in the warehouse with a stable identifier; deterministic fields (e.g., domain-based firmographics) cite the lookup table version

## Compliance posture

Active regimes: GDPR (EU customer data), SOC 2 (vendor audit obligation).

Per-regime obligations landing on L2:

- **GDPR Art. 7 + 17:** consent must be checked before processing; revocation must propagate to all live state within a bounded window (5 minutes; ADR-0003); data-subject deletion request propagates to all retention buckets within 30 days. Mechanism: `consent-flow.md`
- **SOC 2 CC6 + CC7:** audit trail with model, prompt, tools, data version pin per request; reviewable on auditor request; annual control-test evidence captured in `runbooks/soc2-control-evidence.md`. Mechanism: L3 telemetry schema

## Inheritance and dependencies

This L2 inherits from: `policies/strategy.md` (L0); {{cutting_edge_saas_company}} corporate AI policy.

This L2 is inherited by: every L5 instance dossier (each enforces the red lines); the L3 framework contract (every guardrail derives from these red lines).

## Cross-references inside this instance

- `policies/strategy.md` (L0)
- `policies/framework-contract.md` (L3) - the technical contract that enforces these red lines
- `cross-platform/consent-flow.md` - consent enforcement mechanism
- `cross-platform/alerting-fabric.md` - red line trip alerts route here
- `runbooks/pii-incident.md`
- `runbooks/sdr-edit-respect.md`
- `decisions/ADR-0003-consent-flow-integration.md`
