Consumer Graph
Purpose
A governed, person‑level record used to power analytics, measurement, and policy‑compliant segmentation. It consolidates identity, contact metadata, firmographics, location context, modeled psychographic/behavioral scores, and neighborhood indices. Activation against protected or sensitive attributes is blocked; those fields exist only for compliance auditing, fairness analysis, and model QA.
Row Granularity & Keys
Grain: one row per internal person (
MOONBRUSH_ID).Primary key:
MOONBRUSH_ID(opaque, non‑PII). RecommendedNOT NULLconstraint in DDL.Surrogate IDs: None. Use
MOONBRUSH_IDfor joins to decisioning, intent feed, and persona outputs.
Update Cadence & SLAs
Upserts: event‑driven plus scheduled batch compaction.
Timeliness targets: profile attributes ≤ 24h; streaming scores ≤ 1h;
LAST_UPDATEDalways refreshed on write.
Schema Overview (Groups)
The full DDL is provided in engineering assets. Below is a grouped view of major columns and intent. Example columns listed are intentionally not exhaustive.
1) Identity & Contact (PII → masked)
MOONBRUSH_ID,FIRST_NAME,LAST_NAMEEmails:
BUSINESS_EMAIL,ADDITIONAL_PERSONAL_EMAILS[],PROGRAMMATIC_BUSINESS_EMAILS[]Phones:
MOBILE_PHONE,DIRECT_NUMBER,PERSONAL_PHONELinks:
LINKEDIN_URLTimestamps & statuses:
BUSINESS_EMAIL_VALIDATION_STATUS,BUSINESS_EMAIL_LAST_SEEN,PERSONAL_EMAILS_VALIDATION_STATUS,PERSONAL_EMAILS_LAST_SEEN
2) Personal Location (PII → masked)
PERSONAL_ADDRESS,PERSONAL_ADDRESS_2,PERSONAL_CITY,PERSONAL_STATE,PERSONAL_ZIP,PERSONAL_ZIP4Geo enrichments:
METRO_NAME,COUNTY_NAME,COUNTY_FIPS,CBSA_FIPS,ZIPCODE_LAT,ZIPCODE_LONG,TIMEZONE_FROM_ZIP,DENSITY
3) Demographic Proxies (Governed)
GENDER,AGE_RANGE,MARRIED,CHILDREN,HOMEOWNER,INCOME_RANGE,NET_WORTH
4) Sensitive/Protected Attributes (Quarantined)
MODELED_ETHNICITY,POLITICAL_IDEOLOGY,RELIGIOUS_ALIGNMENT_SCORE, and related ideology/values scores. Policy: these fields are never used for targeting, bidding, or personalization decisions. They live in restricted views for fairness monitoring and compliance only.
5) Firmographics (B2B context)
Person role:
JOB_TITLE,JOB_TITLE_NORMALIZED,SENIORITY_LEVEL,SENIORITY_LEVEL_2,DEPARTMENT,DEPARTMENT_2Company:
COMPANY_NAME,PRIMARY_INDUSTRY,COMPANY_DOMAIN,COMPANY_LINKEDIN_URL,COMPANY_PHONE,COMPANY_REVENUE,COMPANY_EMPLOYEE_COUNT,COMPANY_SIC,COMPANY_NAICS,COMPANY_ADDRESS*,COMPANY_COUNTRYChange stamps:
COMPANY_LAST_UPDATED,JOB_TITLE_LAST_UPDATED
6) Behavioral & Engagement Scores
Channel:
EMAIL_ENGAGEMENT_SCORE,SMS_ENGAGEMENT_SCORE,DIGITAL_AD_ENGAGEMENT_SCOREShopping & subscription:
SUBSCRIPTION_PURCHASE_SCORE,LOYALTY_PROGRAM_RESPONSIVENESS_SCORE,SUBSCRIPTION_FATIGUE_SCORE,COUPON_CONVERSION_SCOREDevice/context:
MOBILE_DEVICE_ENGAGEMENT_SCORE,DESKTOP_DEVICE_ENGAGEMENT_SCORE,DAYPART_RESPONSIVENESS_SCORE,WEEKDAY_VS_WEEKEND_ACTIVITY_SCORE,RECENCY_FREQUENCY_WINDOW_RFW_SCORE
7) Psychographic/Decision‑Style Scores (modeled)
Examples:
RISK_TOLERANCE_SCORE,NOVELTY_SEEKING_BEHAVIOR_SCORE,PRICE/QUALITY BIASES(e.g.,BARGAIN_VS_QUALITY_BIAS_SCORE),AUTHORITY_RESPONSE_SCORE,SKEPTICISM_SCORE,RELATIONSHIP_RELIANCE_SCORE,TRUST_SIGNAL_SENSITIVITY_SCORE,DEAL_HUNTING_SCORE,BRAND_LOYALTY_SCORE,BRAND_SWITCHING_SCORE,ETHICAL_CONSUMPTION_SENSITIVITY_SCORE,PRIVACY_SENSITIVITY_SCORE,PURCHASE_RATIONALITY_SCORE,INFORMATION_OVERLOAD_TOLERANCE_SCORE, and others as defined in DDL.
8) Civic/Values/Ideation Indices (Governed)
Examples:
CIVIC_ENGAGEMENT_INTENSITY_SCORE,POLITICAL_MOBILIZATION_SCORE,DEI_ALIGNMENT_SCORE,PATRIOTIC_ALIGNMENT_SCORE,ENVIRONMENTAL_RISK_AVERSION_SCORE. Use: monitoring/model QA only; blocked for activation.
9) Neighborhood & Geo‑Social Indices
Examples:
LOCAL_OUTLIER_SCORE,NEIGHBORHOOD_HOMOGENEITY_SCORE,SOCIAL_EXPOSURE_SCORE,CULTURAL_AFFINITY_INDEX,COMMUNITY_VELOCITY_SCORE,CONFORMITY_PRESSURE_INDEX,GEO_SOCIAL_INFLUENCE_DENSITY,BEHAVIORAL_DISPARITY_SCORE,CIVIC_COHESION_SCORE,SPRAWL_INTENSITY_INDEX,GEO_ECONOMIC_PRESSURE_SCORE,LOCAL_IDEOLOGY_CONSISTENCY_SCORE.
10) Program Flags & Attributes
P0001…P0407(char(1)) andA0001…A0102(char(1)) represent binary program/attribute flags. Values are"Y"/"N"or"1"/"0"depending on upstream. The codebook defines each flag’s meaning and governance tier.
11) History & Graph Adjacent
Arrays:
WORK_HISTORY[],EDUCATION_HISTORY[],RELATED_DOMAINS[],SOCIAL_CONNECTIONS[]Free‑text:
COMPANY_DESCRIPTION
12) Operational Columns
LAST_UPDATED(row timestamp),CC_ID,STATE_ID,STATE
Governance & Policy
Consent & Purpose Limiting: all writes require aligned purpose; downstream views enforce consent scopes.
Sensitive Attributes: segregated in quarantined schema/views; accessible only to approved roles for fairness, bias monitoring, and regulatory reporting. Not surfaced to decisioning APIs.
PII Masking: dynamic masking on emails, phones, and street addresses by role.
Row Access: regional/tenant scoping via row access policies.
Example (Masking & Row Policies — illustrative)
-- Mask emails/phones for non-privileged roles
CREATE OR REPLACE MASKING POLICY mp_mask_email AS (val STRING) RETURNS STRING ->
CASE WHEN CURRENT_ROLE() IN ('ANALYST_PII','ADMIN') THEN val ELSE REGEXP_REPLACE(val, '(^.).+(@.+$)', '\\1***\\2') END;
ALTER TABLE UNIVERSAL_PERSON_ENRICHED
MODIFY COLUMN BUSINESS_EMAIL SET MASKING POLICY mp_mask_email;
-- Row Access by region consent (example predicate)
CREATE OR REPLACE ROW ACCESS POLICY rap_region AS (PERSONAL_STATE STRING) RETURNS BOOLEAN ->
CURRENT_ROLE() IN ('ADMIN','ANALYST_US') AND PERSONAL_STATE IN ('CA','NY','TX');
ALTER TABLE UNIVERSAL_PERSON_ENRICHED ADD ROW ACCESS POLICY rap_region ON (PERSONAL_STATE);The exact predicates/roles are maintained by security engineering and may differ by tenant, region, and operation.
Recommended Physical Design (SnowSQL)
Clustering:
CLUSTER BY (MOONBRUSH_ID, LAST_UPDATED)for point lookups and incremental updates.Search Optimization: enable on commonly filtered fields (e.g.,
COMPANY_DOMAIN,PERSONAL_ZIP,BUSINESS_EMAIL) for selective queries.Micro‑batch Upserts: MERGE on
MOONBRUSH_IDwithLAST_UPDATEDwinner rules.
Example Upsert (illustrative)
MERGE INTO UNIVERSAL_PERSON_ENRICHED t
USING @stage/person_delta.parquet s
ON t.MOONBRUSH_ID = s.MOONBRUSH_ID
WHEN MATCHED AND s.LAST_UPDATED > t.LAST_UPDATED THEN UPDATE SET
(FIRST_NAME, LAST_NAME, JOB_TITLE, LAST_UPDATED) = (s.FIRST_NAME, s.LAST_NAME, s.JOB_TITLE, s.LAST_UPDATED)
WHEN NOT MATCHED THEN INSERT (MOONBRUSH_ID, FIRST_NAME, LAST_NAME, JOB_TITLE, LAST_UPDATED)
VALUES (s.MOONBRUSH_ID, s.FIRST_NAME, s.LAST_NAME, s.JOB_TITLE, s.LAST_UPDATED);Access Patterns
Person lookup
SELECT MOONBRUSH_ID, EMAIL_ENGAGEMENT_SCORE, BRAND_LOYALTY_SCORE, LAST_UPDATED
FROM UNIVERSAL_PERSON_ENRICHED
WHERE MOONBRUSH_ID = 'SUB-7f91b1c6';Join to Intent Feed & Personas (safe view)
SELECT p.MOONBRUSH_ID, i.occurred_at, pr.persona_top, pr.p_top
FROM SAFE_PERSON_VIEW p
JOIN ENRICHED_INTENT_STREAM i USING (MOONBRUSH_ID)
JOIN PERSONA_ASSIGNMENTS pr USING (MOONBRUSH_ID)
WHERE i.occurred_at >= DATEADD(day, -7, CURRENT_TIMESTAMP());Neighborhood index query
SELECT PERSONAL_ZIP, AVG(CIVIC_COHESION_SCORE) cc, AVG(SPRAWL_INTENSITY_INDEX) sprawl
FROM SAFE_PERSON_VIEW
GROUP BY 1
ORDER BY cc DESC;Views & Exposure
To prevent accidental misuse, exposure is via tiered views:
SAFE_PERSON_VIEW— drops PII, sensitive attributes, and all ideology/religion proxies; retains engagement and non‑sensitive psychographic scores.RESEARCH_PERSON_VIEW— access‑controlled; includes additional modeled features for R&D (no activation).QUARANTINED_PERSON_VIEW— restricted; includes sensitive attributes for fairness/QA only.
Illustrative creation:
CREATE OR REPLACE VIEW SAFE_PERSON_VIEW AS
SELECT
MOONBRUSH_ID,
EMAIL_ENGAGEMENT_SCORE, SMS_ENGAGEMENT_SCORE,
BRAND_LOYALTY_SCORE, RISK_TOLERANCE_SCORE, NOVELTY_SEEKING_BEHAVIOR_SCORE,
DAYPART_RESPONSIVENESS_SCORE, WEEKDAY_VS_WEEKEND_ACTIVITY_SCORE,
-- ... (approved columns only)
LAST_UPDATED
FROM UNIVERSAL_PERSON_ENRICHED;Data Quality & Monitoring
Completeness: non‑null rate of
MOONBRUSH_ID, freshness ofLAST_UPDATED.PII Hygiene: valid email/phone patterns, DPV codes for addresses.
Drift: distribution shifts on key scores; PSI/KS alerts.
Governance: audit trail of column access; query pol
Last updated

