Skip to main content

Knowledge Graph — 25 Classes (AMWAY)

Published 2026-05-14Updated 2026-06-304 min read

A 25-class KG built on Neptune (openCypher). Estimated ~700K edges (reflecting ABO tree depth). Reflects the ABO multi-level organization + subscriptions + global multilingual characteristics.


1. Overview of the 25 Classes


2. AMWAY-specific Classes in Detail

ClassKey AttributesPrimary Relationships
ABOabo_id · level (Founders Platinum / Diamond / Founders Diamond / EDC / EC ...) · joined_at · country · pv · bv · cohort_tag-[SPONSORED_BY]→ Sponsor · -[BELONGS_TO]→ Persona
Customercustomer_id · age_band · region · cohort_tag-[REFERRED_BY]→ ABO
Sponsorsponsor_id · upline_chain (compressed path)-[SPONSORED]→ ABO
DownlineLinkfrom_abo · to_abo · depth · since-[CHAIN]→ ABO (bidirectional)
Personapersona_id · name (5 lifestyle types) · traits-[CLASSIFIES]→ ABO

2.2 Subscription (Recurring Subscriptions)

ClassKey AttributesPrimary Relationships
Subscriptionsub_id · plan (monthly / quarterly) · sku_list · auto_renew · paused_at · cancelled_at-[OF]→ ABO
SubscriptionEventevent_id · type (start / renew / pause / cancel) · at-[ON]→ Subscription

2.3 RegulatorySignal (Direct-selling Regulations)

ClassAttributes
RegulatorySignalrule_id · jurisdiction (FTC / Korea Door-to-Door Sales Act / EU) · topic (advertising · level · minors · refunds) · effective_at

3. Key Relationship Example (ABO Tree + Subscription)

Estimated edges:

  • ABO × DownlineLink (~250K, average tree depth of 5 levels)
  • ABO × Subscription × SubscriptionEvent (~120K)
  • ABODirectSale × Customer × Product (~200K)
  • In-house OrderTransaction × Product (~80K)
  • External signals (~50K)

Approximately 700K edges


4. openCypher Examples

4.1 S9-A — Five-level Downline tree for a Diamond-level ABO

MATCH (root:ABO {level: 'Diamond', abo_id: $rootId})
CALL {
WITH root
MATCH path = (root)-[:HAS_DOWNLINE*1..5]->(d:ABO)
RETURN d, length(path) AS depth
}
RETURN d.abo_id, d.level, d.pv, d.bv, depth
ORDER BY depth, d.pv DESC

4.2 S10-A — Detecting subscription churn signatures

MATCH (s:Subscription)-[:OF]->(a:ABO)
WHERE s.cancelled_at IS NOT NULL
AND s.cancelled_at > datetime() - duration('P30D')
WITH a, count(s) AS recent_cancels
WHERE recent_cancels >= 2
RETURN a.abo_id, recent_cancels

4.3 S11-A — Verifying that minor ABO sign-ups are blocked

MATCH (a:ABO) WHERE a.age_band = 'under_18'
RETURN count(a) AS minor_abo_count
// Expected result: 0 (Compliance guard)

5. cohort_tag Segmentation

ValueMeaning
realPII-masked in-house data (N = 1,000 ABOs + 5,000 customers)
synthSynthetic data (~50K ABO tree mimicking 5-level depth)
externalSocial, weather, FX, and regulatory signals

6. OpenSearch Indexes

IndexDocumentsAnalyzer
idx_productSKU metadata, in-house reviewsNori (Korean) + Standard (multi-country)
idx_aboABO profile, tags, personaNori + multilingual
idx_subscriptionSubscription metadata and historyNori
idx_reviewIn-house and external reviewsNori + multilingual
idx_social_trendSocial keywordsMultilingual
idx_regulationRegulatory text (Door-to-Door Sales Act, FTC)English / Korean BM25