Skip to content

Brand Retail Knowledge Graph Schema

for a global multibrand retailer with LLM-powered content


0. Design Overview

Graph model: Property graph

  • Nodes have

  • label (type)

  • id (internal primary key)
  • Properties (scalars, lists, or JSON blobs)

  • Edges have

  • type (relationship name)

  • Direction (always defined)
  • Optional properties (weights, timestamps, etc.)

Core domains

  1. Commercial & Product – brands, products, GTIN/GPC, internal categories, vendors, supply chain, geography
  2. Brand Guidelines & Safety – visual/verbal/audio tokens, rules, risk domains, cultural context
  3. Audience & Cultural Intelligence – topics, signals, trends, need states
  4. Marketing & Campaigns – campaigns, themes, channel activations, calendar moments
  5. AI Context & Feedback – context, model configs, content generation, metrics, feedback, optimisation
  6. Customers & Archetypes – real customers, segments, synthetic Archetypes linked to real customers

Conventions

  • Node labels: UpperCamelCase (e.g. Brand, Product, Archetype)
  • Property names: snake_case (e.g. brand_type, created_at)
  • Edge types: UPPER_SNAKE_CASE (e.g. OWNS_BRAND, HAS_RULE)
  • Recommended on all nodes: id, created_at, updated_at

1. Node Types (Labels & Properties)

1.1 Brand & Product Domain

1.1.1 Brand

Represents master brand, private label, hosted brand, and co-brand.

Label: Brand

Property Type Description
id string Internal unique ID
external_id string Optional brand code (ERP / MDM)
name string Display name
brand_type enum MASTER, OWNED, HOSTED, CO_BRAND
description string Short description
tagline_default string Default global tagline
is_active boolean Active/inactive
primary_language string e.g. en, fr, es
localized_names map/json lang_code -> name
localized_taglines map/json lang_code -> tagline
metadata map/json Arbitrary brand metadata

1.1.2 Vendor

Suppliers / manufacturers / brand owners.

Label: Vendor

Property Type Description
id string Internal unique ID
external_id string Vendor code
name string Legal or trading name
vendor_type enum MANUFACTURER, DISTRIBUTOR, OWNER, …
gln string Optional GS1 Global Location Number
country_code string ISO-3166 country
is_active boolean Active/inactive
metadata map/json Extra attributes

1.1.3 Product

Individual sellable item (SKU/GTIN).

Label: Product

Property Type Description
id string Internal product ID (SKU ID)
sku string Internal SKU code (if distinct)
gtin string GTIN / EAN / UPC
name string Product name
description string Long description
brand_name_on_pack string Text as printed on pack
status enum ACTIVE, DISCONTINUED, COMING_SOON
launch_date datetime Optional
attributes map/json Key/value attributes (size, color, etc.)
media_refs list URIs / IDs of images, videos
metadata map/json Extra

1.1.4 InternalCategory (ICS)

Retailer’s internal category node.

Label: InternalCategory

Property Type Description
id string Internal category ID
code string Category code
name string Category name
level string e.g. DEPARTMENT, CATEGORY, SUBCAT
path string Denormalized path string
is_leaf boolean Leaf flag
metadata map/json Attributes (online_only, margin_band…)

1.1.5 GpcCategory

GS1 Global Product Classification node.

Label: GpcCategory

Property Type Description
id string Internal ID
gpc_code string GS1 GPC code
name string GPC category name
level string SEGMENT, FAMILY, CLASS, BRICK
definition string Official description
metadata map/json Extra

1.1.6 BrandedCategory (optional)

Brand-specific category naming.

Label: BrandedCategory

Property Type Description
id string ID
name string Brand’s own term
description string Optional
metadata map/json Other attributes

1.2 Operational & Geographic Domain

1.2.1 SupplyChainNode

Stores, warehouses, DCs, etc.

Label: SupplyChainNode

Property Type Description
id string Internal ID
external_id string Store/DC code
name string Name (“Store 1234 – London”)
node_type enum STORE, WAREHOUSE, DC, …
gln string Optional GLN
address string Free-form or structured
lat float Latitude
lon float Longitude
is_active boolean Active/inactive
metadata map/json Extra fields

1.2.2 GeographicRegion

Global → region → country → state → city etc.

Label: GeographicRegion

Property Type Description
id string Internal ID
code string e.g. GLOBAL, EMEA, US, US-CA, LON
name string Human-readable name
region_level enum GLOBAL, REGION, COUNTRY, STATE, CITY
metadata map/json Localization, currency, legal notes

1.2.3 CustomerSegment

Audience segments.

Label: CustomerSegment

Property Type Description
id string Segment ID
name string “Gen Z Value Seekers”
description string Short narrative
criteria map/json Targeting rules (age, behaviour…)
metadata map/json Extra

1.2.4 Customer

Real customers (pseudonymised).

Label: Customer

Property Type Description
id string Internal customer ID (pseudonymised)
external_id string Optional hashed ID from CRM/CDP
origin_system string Source system (CDP, LOYALTY, ECOM, …)
is_active boolean Active customer flag
created_at datetime First seen
last_seen_at datetime Last activity
demographic_bucket map/json Non-PII buckets (age_band, income_band, household_size, etc.)
behaviour_profile map/json Aggregated traits (e.g. “high frequency”, “deal seeker”, “luxury skew”)
metadata map/json Non-PII extras (e.g. loyalty_tier, channel_pref)

1.3 Archetypes (Synthetic Personas)

1.3.1 Archetype

Data-driven or curated archetypes representing groups of customers.

Label: Archetype

Property Type Description
id string Archetype ID
name string “Eco-Conscious Gen Z Foodie”, “Busy Value Parent”
description string Narrative description
archetype_type enum SYNTHETIC, CURATED, HYBRID
generation_method string CLUSTERING, RULE_BASED, MANUAL, LLM_ASSISTED, …
embedding_ref string Optional: ID for vector/embedding in feature store
feature_profile map/json Behavioural + attitudinal profile (e.g. price_sensitivity, channel_pref)
language_codes list Languages typically used (e.g. [en-GB,es-ES])
is_active boolean Whether archetype is currently in use
metadata map/json Additional fields (model_version, author, notes, etc.)

1.4 Brand Guidelines & Safety

1.4.1 VisualIdentityToken

Label: VisualIdentityToken

Property Type Description
id string ID
name string “Core Visual System – Brand X”
primary_colors list Hex codes or color names
secondary_colors list Optional
logo_refs list URIs/asset IDs
imagery_style string e.g. “bright, lifestyle photography”
iconography string Guidance text
metadata map/json Extra

1.4.2 VerbalIdentityToken

Label: VerbalIdentityToken

Property Type Description
id string ID
name string “Verbal Identity – Brand X Global”
tone_of_voice string e.g. “playful, supportive, concise”
style_guidelines string Prose rules for copy
required_elements list e.g. “clear CTA”, “benefit-led opening”
approved_keywords list Words/phrases to use
prohibited_keywords list Words/phrases to avoid
example_snippets list Short exemplar copy strings
metadata map/json Extra

1.4.3 AudioIdentityToken

Label: AudioIdentityToken

Property Type Description
id string ID
name string “Audio Identity – Brand X”
audio_logo_ref string URI/asset ID
music_style string e.g. “upbeat, electronic”
voice_guidelines string TTS / voiceover style notes
metadata map/json Extra

1.4.4 ContentGuideline

Must-do / must-not-do rule or general guideline.

Label: ContentGuideline

Property Type Description
id string ID
rule_type enum MUST_DO, MUST_NOT_DO, ADVISORY
name string “No profanity”, “Always include CTA”
description string Detailed rule text
dimension string TONE, LEGAL, BRAND_SAFETY, FORMAT, …
severity integer e.g. 1–5
source string LEGAL, BRAND, EXPERIMENTAL, …
metadata map/json Extra

1.4.5 RiskDomain

Label: RiskDomain

Property Type Description
id string ID
name string “Alcohol”, “Politics”, “Body Image”
description string What this risk covers
severity integer 1–5
regulatory boolean True if regulatory-sensitive
metadata map/json Extra

1.4.6 CulturalNorm

Label: CulturalNorm

Property Type Description
id string ID
name string “Family-oriented”, “Price sensitivity”
description string Norm explanation
valence enum POSITIVE, NEGATIVE, NEUTRAL
metadata map/json Extra

1.4.7 CulturalSignal

Label: CulturalSignal

Property Type Description
id string ID
name string “Ramadan 2026 in MENA”, “Pride Month”
signal_type enum HOLIDAY, MOVEMENT, EVENT, TABOO, …
description string What it is, why it matters
start_date datetime
end_date datetime
sensitivity enum LOW, MEDIUM, HIGH
metadata map/json Extra

1.4.8 CalendarMoment

Retail/cultural calendar block (often drives campaigns).

Label: CalendarMoment

Property Type Description
id string ID
name string “Back to School 2026”, “Black Friday”
moment_type enum RETAIL, CULTURAL, SPORT, RELIGIOUS
start_date datetime
end_date datetime
metadata map/json Extra

1.5.1 Topic

Semantic concept (for search, social, etc.).

Label: Topic

Property Type Description
id string ID
name string “sustainability”, “gaming”
description string Optional
aliases list Synonyms / related labels
metadata map/json Extra

1.5.2 AudienceSignal

Raw observation: search volume, social mention, etc.

Label: AudienceSignal

Property Type Description
id string ID
timestamp datetime When observed
channel string SEARCH, SOCIAL, SITE, CRM, …
metric_type string SEARCH_VOLUME, MENTION_COUNT, SENTIMENT_SCORE, …
value float Numeric value
unit string INDEX, %, COUNT
source_system string Where it came from
metadata map/json Extra

1.5.3 AudienceTrend

Aggregated / interpreted trend.

Label: AudienceTrend

Property Type Description
id string ID
name string “Eco-conscious Gen Z”
description string Trend narrative
start_date datetime When first detected
end_date datetime Optional
strength_score float 0–1
confidence float 0–1
source string Analytics system / methodology
metadata map/json Extra

1.5.4 CustomerNeedState

Job-to-be-done / need.

Label: CustomerNeedState

Property Type Description
id string ID
name string “Quick mid-week dinner”
description string Need narrative
intensity_score float 0–1
metadata map/json Extra

1.6 Marketing & Campaigns

1.6.1 Campaign

Label: Campaign

Property Type Description
id string Campaign ID
name string “Back to School 2026 – Brand X”
description string Summary
campaign_type string BRAND, CATEGORY, SEASONAL, etc.
start_date datetime
end_date datetime
status enum PLANNED, LIVE, ENDED
budget float Optional
kpi map/json e.g. target CTR, revenue, etc.
metadata map/json Extra

1.6.2 ChannelActivation

Per-channel execution.

Label: ChannelActivation

Property Type Description
id string ID
channel string EMAIL, INSTAGRAM, TV, etc.
content_type string POST, AD, DISPLAY, etc.
scheduled_at datetime When it goes live
status string PLANNED, LIVE, ENDED
metadata map/json Extra (placement, format…)

1.6.3 ContentTheme

Label: ContentTheme

Property Type Description
id string ID
name string “Eco-Friendly”, “Holiday”
description string
theme_type string SEASONAL, VALUE_PROP, EMOTIONAL
metadata map/json

1.7 AI Context & Feedback Loop

1.7.1 Context

Composite context for LLM (brand + channel + region + segment + archetype, etc.).

Label: Context

Property Type Description
id string ID
name string “Brand X – UK – Social – Archetype A”
description string
metadata map/json Arbitrary context metadata

1.7.2 ModelConfig

LLM configuration used.

Label: ModelConfig

Property Type Description
id string ID
model_name string e.g. gpt-5.1
model_version string Optional
temperature float
top_p float
max_tokens integer
system_prompt_ref string ID or URI for system prompt
created_at datetime
metadata map/json

1.7.3 ContentGenerationEvent

One generation call / batch.

Label: ContentGenerationEvent

Property Type Description
id string ID
timestamp datetime When generated
request_id string Request trace ID
prompt_hash string Hash of raw prompt
input_type string PROMPT, TEMPLATE_FILL, etc.
metadata map/json Traces, params, etc.

1.7.4 ContentVariant

A generated content variant.

Label: ContentVariant

Property Type Description
id string ID
content_type string COPY, SUBJECT_LINE, CAPTION, …
language string en-GB, fr-FR, etc.
body_text string Text content (or pointer)
version_tag string A, B, etc.
is_published boolean Whether used externally
metadata map/json Extra

1.7.5 EngagementMetric

KPI result for content, campaign, etc.

Label: EngagementMetric

Property Type Description
id string ID
metric_type string CTR, CVR, ATC_RATE, VIEW_TIME, …
value float
time_window string e.g. 2025-12-01/2025-12-07
channel string Optional
region_code string Optional
segment_id_ref string Optional
metadata map/json

1.7.6 UserFeedbackEvent

Explicit feedback on content.

Label: UserFeedbackEvent

Property Type Description
id string ID
timestamp datetime When given
feedback_type string THUMBS_UP, THUMBS_DOWN, RATING, COMMENT, ESCALATION
score float Rating or +/-1 as needed
comment string Free text
source string CONSUMER, AGENT, INTERNAL_REVIEW
metadata map/json

1.7.7 AIQualityEvaluation

Structured evaluation (human/automated).

Label: AIQualityEvaluation

Property Type Description
id string ID
timestamp datetime
evaluator_type string HUMAN_RATER, AUTO_CHECKER
scores map/json e.g. {brand_fit:0.9, clarity:0.8}
pass_fail_flags map/json e.g. {legal: true, tone: false}
metadata map/json

1.7.8 OptimisationRecommendation

Learning / suggestion node.

Label: OptimisationRecommendation

Property Type Description
id string ID
timestamp datetime When generated
scope_type string BRAND, CATEGORY, CAMPAIGN, CONTEXT, ARCHETYPE
scope_ref string ID-of-scope (if not inferred from edges)
change_type string TONE_ADJUSTMENT, RULE_UPDATE, TEMPLATE_CHANGE, TARGETING_CHANGE
description string Proposed change text
confidence float 0–1
metadata map/json

2. Relationship Types (Edges)

Notation: (SOURCE_LABEL)-[:EDGE_TYPE {props}]->(TARGET_LABEL)

2.1 Brand & Product Relationships

  • (Brand)-[:OWNS_BRAND]->(Brand)

  • Master brand → owned/private label

  • Props: since (datetime)

  • (Brand)-[:HOSTS_BRAND]->(Brand)

  • Retailer hosts external brand

  • (Brand)-[:BRAND_OWNER_IS]->(Vendor)

  • For hosted brands where vendor is corporate owner

  • (Brand)-[:CO_BRANDED_WITH]->(Brand)

  • Co-branding partnership (usually symmetric)

  • (Vendor)-[:SUPPLIES_PRODUCT]->(Product)

  • (Brand)-[:HAS_PRODUCT]->(Product)

  • (Product)-[:IN_INTERNAL_CATEGORY]->(InternalCategory)

  • Props: is_primary (boolean)

  • (Product)-[:HAS_GPC_CATEGORY]->(GpcCategory)

  • (InternalCategory)-[:CHILD_OF]->(InternalCategory)

  • (GpcCategory)-[:GPC_CHILD_OF]->(GpcCategory)

  • (InternalCategory)-[:MAPPED_TO_GPC]->(GpcCategory)

  • Props: confidence (float 0–1)

  • (BrandedCategory)-[:BELONGS_TO_BRAND]->(Brand)

  • (BrandedCategory)-[:MAPPED_TO_INTERNAL_CATEGORY]->(InternalCategory)

  • (BrandedCategory)-[:MAPPED_TO_GPC]->(GpcCategory)


2.2 Operational & Geographic

  • (SupplyChainNode)-[:LOCATED_IN]->(GeographicRegion)

  • (GeographicRegion)-[:REGION_CHILD_OF]->(GeographicRegion)

  • (CustomerSegment)-[:PRIMARY_REGION]->(GeographicRegion) (optional)

  • (CustomerSegment)-[:RELATED_TO_NEED_STATE]->(CustomerNeedState)

  • (Customer)-[:IN_SEGMENT]->(CustomerSegment)

  • Props: since (datetime), membership_source, confidence (float)


2.3 Archetypes & Customers

  • (Archetype)-[:BASED_ON_SEGMENT]->(CustomerSegment)

  • Props: weight (float 0–1)

  • (Archetype)-[:INFLUENCED_BY_TREND]->(AudienceTrend)

  • Props: impact_strength (float 0–1)

  • (Archetype)-[:FOCUSED_ON_NEED_STATE]->(CustomerNeedState)

  • (Archetype)-[:REPRESENTS_CUSTOMER]->(Customer)

  • Props:

    • match_score (float 0–1)
    • primary (boolean) – if this is the customer’s primary archetype
  • (Campaign)-[:TARGETS_ARCHETYPE]->(Archetype)

  • (Context)-[:CONTEXT_FOR_ARCHETYPE]->(Archetype)

  • (ContentGenerationEvent)-[:FOR_ARCHETYPE]->(Archetype)

  • (ContentVariant)-[:PERFORMS_FOR_ARCHETYPE]->(Archetype)

  • (EngagementMetric)-[:ATTRIBUTED_TO_ARCHETYPE]->(Archetype)

  • (UserFeedbackEvent)-[:FROM_ARCHETYPE_BUCKET]->(Archetype) (optional)

  • (OptimisationRecommendation)-[:APPLIES_TO_ARCHETYPE]->(Archetype)


2.4 Brand Guidelines & Safety

  • (Brand)-[:USES_VISUAL_IDENTITY]->(VisualIdentityToken)

  • (Brand)-[:USES_VERBAL_IDENTITY]->(VerbalIdentityToken)

  • (Brand)-[:USES_AUDIO_IDENTITY]->(AudioIdentityToken)

  • (Brand)-[:HAS_CONTENT_GUIDELINE]->(ContentGuideline)

  • Props: applicability (e.g. GLOBAL, REGION_SPECIFIC)

  • (InternalCategory)-[:HAS_CONTENT_GUIDELINE]->(ContentGuideline)

  • (GpcCategory)-[:HAS_CONTENT_GUIDELINE]->(ContentGuideline)

  • (RiskDomain)-[:GOVERNED_BY_RULE]->(ContentGuideline)

  • (CulturalSignal)-[:RELATES_TO_RISK_DOMAIN]->(RiskDomain)

  • (CulturalSignal)-[:EXPRESSES_NORM]->(CulturalNorm)

  • (CulturalSignal)-[:OCCURS_IN_REGION]->(GeographicRegion)

  • (CalendarMoment)-[:ASSOCIATED_WITH_CULTURAL_SIGNAL]->(CulturalSignal)

  • (Brand)-[:ALIGNS_WITH_SIGNAL]->(CulturalSignal)

  • (Brand)-[:MUST_AVOID_SIGNAL]->(CulturalSignal)

  • (Campaign)-[:ATTACHED_TO_CALENDAR_MOMENT]->(CalendarMoment)

  • (Campaign)-[:MUST_NAVIGATE_SIGNAL]->(CulturalSignal)


  • (AudienceSignal)-[:ABOUT_TOPIC]->(Topic)

  • (AudienceSignal)-[:OBSERVED_IN_SEGMENT]->(CustomerSegment)

  • (AudienceSignal)-[:OBSERVED_IN_REGION]->(GeographicRegion)

  • (AudienceTrend)-[:DERIVED_FROM_SIGNAL]->(AudienceSignal)

  • Props: weight (float)

  • (AudienceTrend)-[:RELEVANT_FOR_SEGMENT]->(CustomerSegment)

  • (AudienceTrend)-[:INFLUENCES_BRAND]->(Brand)

  • (AudienceTrend)-[:INFLUENCES_CATEGORY]->(InternalCategory)

  • (AudienceTrend)-[:INFLUENCES_GPC_CATEGORY]->(GpcCategory)

  • (AudienceTrend)-[:INFORMS_CAMPAIGN]->(Campaign)

  • (CustomerNeedState)-[:EXPRESSED_AS_TREND]->(AudienceTrend)


2.6 Marketing & Campaigns

  • (Brand)-[:HAS_CAMPAIGN]->(Campaign)

  • (Campaign)-[:PROMOTES_BRAND]->(Brand)

  • (Campaign)-[:PROMOTES_CATEGORY]->(InternalCategory)

  • (Campaign)-[:PROMOTES_GPC_CATEGORY]->(GpcCategory)

  • (Campaign)-[:TARGETS_SEGMENT]->(CustomerSegment)

  • (Campaign)-[:TARGETS_ARCHETYPE]->(Archetype)

  • (Campaign)-[:HAS_THEME]->(ContentTheme)

  • (Campaign)-[:RUNS_IN_REGION]->(GeographicRegion)

  • (Campaign)-[:HAS_ACTIVATION]->(ChannelActivation)

  • (ChannelActivation)-[:IN_REGION]->(GeographicRegion)

  • (ChannelActivation)-[:USES_THEME]->(ContentTheme) (optional)


2.7 AI Context & Feedback

2.7.1 Context wiring

  • (Context)-[:CONTEXT_FOR_BRAND]->(Brand)

  • (Context)-[:CONTEXT_FOR_REGION]->(GeographicRegion)

  • (Context)-[:CONTEXT_FOR_SEGMENT]->(CustomerSegment)

  • (Context)-[:CONTEXT_FOR_ARCHETYPE]->(Archetype)

  • (Context)-[:CONTEXT_FOR_CAMPAIGN]->(Campaign) (optional)

  • (Context)-[:USES_VERBAL_IDENTITY]->(VerbalIdentityToken)

  • (Context)-[:USES_VISUAL_IDENTITY]->(VisualIdentityToken)

  • (Context)-[:USES_AUDIO_IDENTITY]->(AudioIdentityToken)

  • (ContentGuideline)-[:OVERRIDES_IN_CONTEXT]->(Context)


2.7.2 Generation & evaluation

  • (ContentGenerationEvent)-[:USES_MODEL_CONFIG]->(ModelConfig)

  • (ContentGenerationEvent)-[:FOR_BRAND]->(Brand)

  • (ContentGenerationEvent)-[:FOR_CAMPAIGN]->(Campaign)

  • (ContentGenerationEvent)-[:FOR_CATEGORY]->(InternalCategory)

  • (ContentGenerationEvent)-[:FOR_SEGMENT]->(CustomerSegment)

  • (ContentGenerationEvent)-[:FOR_ARCHETYPE]->(Archetype)

  • (ContentGenerationEvent)-[:FOR_REGION]->(GeographicRegion)

  • (ContentGenerationEvent)-[:USES_CONTEXT]->(Context)

  • (ContentGenerationEvent)-[:PRODUCED_VARIANT]->(ContentVariant)

  • (ContentVariant)-[:CONFORMS_TO_RULE]->(ContentGuideline)

  • (ContentVariant)-[:VIOLATES_RULE]->(ContentGuideline)

  • (AIQualityEvaluation)-[:EVALUATES_VARIANT]->(ContentVariant)

  • (AIQualityEvaluation)-[:CHECKS_RULE]->(ContentGuideline)

  • (UserFeedbackEvent)-[:FEEDBACK_ON_VARIANT]->(ContentVariant)

  • (EngagementMetric)-[:MEASURES_VARIANT]->(ContentVariant)

  • (EngagementMetric)-[:ROLLS_UP_TO_CAMPAIGN]->(Campaign)


2.7.3 Learning loop

  • (EngagementMetric)-[:UPDATES_TREND]->(AudienceTrend)

  • (UserFeedbackEvent)-[:SUPPORTS_TREND_QUALITATIVELY]->(AudienceTrend)

  • (AIQualityEvaluation)-[:GENERATES_RECOMMENDATION]->(OptimisationRecommendation)

  • (EngagementMetric)-[:INSPIRES_RECOMMENDATION]->(OptimisationRecommendation)

  • (OptimisationRecommendation)-[:APPLIES_TO_BRAND]->(Brand)

  • (OptimisationRecommendation)-[:APPLIES_TO_CATEGORY]->(InternalCategory)

  • (OptimisationRecommendation)-[:APPLIES_TO_CAMPAIGN]->(Campaign)

  • (OptimisationRecommendation)-[:APPLIES_TO_CONTEXT]->(Context)

  • (OptimisationRecommendation)-[:APPLIES_TO_ARCHETYPE]->(Archetype)

  • (OptimisationRecommendation)-[:PROPOSES_RULE_UPDATE]->(ContentGuideline)

  • (OptimisationRecommendation)-[:PROPOSES_TOKEN_UPDATE]->(VerbalIdentityToken)

  • (ContentGuideline)-[:REFERENCED_BY_MODEL_CONFIG]->(ModelConfig)

  • (VerbalIdentityToken)-[:REFERENCED_BY_MODEL_CONFIG]->(ModelConfig)


3. Implementation Notes (for Data Engineers / KG Modellers)

  1. Platform

  2. Any property graph DB (Neo4j, JanusGraph, Neptune, TigerGraph, etc.) will work.

  3. Use constraints / indexes on IDs and key business keys (GTIN, category codes, region codes).

  4. Multi-language

  5. Either store language variants in *_localized maps, or create a LocalizedText pattern if preferred.

  6. Versioning

  7. For guidelines and tokens, either version via properties (version, valid_from, valid_to) or via new nodes linked by PREVIOUS_VERSION_OF.

  8. Customer privacy

  9. Only pseudonymised IDs and bucketed attributes in Customer.

  10. No raw PII (email, name, phone, exact address) in the graph.

  11. Scale considerations

  12. Archetype→Customer edges can be limited to primary archetype and/or sampled customers.

  13. Detailed memberships can live in warehouse / feature store and be projected into the graph selectively.

  14. LLM integration path

  15. At generation time, the application resolves:

    • CustomerArchetypeSegmentBrand / Category / Region / Trends / Guidelines / Context
    • Then it assembles a prompt from those nodes (tokens, rules, examples) and logs a ContentGenerationEvent.