End-to-end map from brief input through cell selection, lander routing, tool completion, dynamic
post-result monetization, and Stage R signal capture. Scopes the taxonomy expansion that invalidates
ADR 0013’s 3-value monetization_path enum — this page is the scoping
conversation for ADR 0018 (Expanded Monetization & Lander-Routing Taxonomy).
Today’s monetization_path
enum (ADR 0013 Accepted 2026-04-19) has 4 values: affiliate_online /
direct_school /
content_only /
hybrid.
Operator 2026-04-21 clarification surfaces two material expansions: (1) the economic-endpoint enum needs 6 values, not 4, to distinguish
aggregator-portal vs direct-online-school vs ping/post-marketplace vs organic-state-school vs content-only vs hybrid-dynamic;
and (2) lander mode is a separate orthogonal axis with 3 values that describes how the ad enters
the funnel, not where the money comes from. The current schema conflates these into a single dimension. This page
visualizes the new two-axis model so ADR 0018 can be authored next session against a concrete picture, not against words.
flowchart TD classDef input fill:#0d0d1a,stroke:#2a3a6a,color:#6a8cf7,stroke-width:1px classDef engine fill:#12121a,stroke:#4a2a4a,color:#af6adf,stroke-width:1px classDef stage fill:#0d1a0d,stroke:#1a3a1a,color:#4acf4a,stroke-width:1px classDef landing fill:#1a1a0d,stroke:#3a3a1a,color:#cfcf4a,stroke-width:1px classDef current fill:#0a2a0a,stroke:#1a4a1a,color:#4acf4a,stroke-width:2px classDef future fill:#1a1a0d,stroke:#3a3a1a,color:#cfcf4a,stroke-width:1px,stroke-dasharray:4 4 classDef organic fill:#0d0d1a,stroke:#2a3a6a,color:#6a8cf7,stroke-width:1px,stroke-dasharray:4 4 classDef always fill:#1a0d1a,stroke:#3a1a3a,color:#cf4acf,stroke-width:1px classDef signal fill:#1a0d0d,stroke:#3a1a1a,color:#cf8a4a,stroke-width:1px A["Campaign Brief
vertical_tag · intends_paid_traffic
projected_spend_usd · persona_segments · goal"]:::input A --> B["Strategy Engine — Cell Selection
32-cell corpus walk per ADR 0013 rule_12
For each selected cell, resolve:
• monetization_path (1 of 6)
• lander_mode (1 of 3) NEW
• archetype_tag (only for archetype_* modes)
• proof_mechanism_id (FK to tool_registry)
• paid_traffic_eligible (derived + persona AND school gate)"]:::engine B --> C["Stage 3 + 4 — Copy × Creative
Angle-per-cell copy matrix
Creative variants per angle × platform
Ads route to lander per lander_mode"]:::stage C --> D{"Lander Mode"}:::landing D -->|"content_site_tool_direct"| E["Tool on content site
Long-form content surrounds tool
Primary for organic + high-quality signal"]:::landing D -->|"archetype_tool_embedded"| F["Archetype lander
Tool embedded inline
Bridges between ad aggression + tool proof"]:::landing D -->|"archetype_prequalifier"| G["Archetype pre-qualifier
2-3 Q quick qualification
→ then routes to Tool"]:::landing E --> H F --> H G --> H H["Tool Completion — Dynamic Routing Decision
User sees RESULT + options
System evaluates:
• HHI · location · intent · vet status · credit · school preference
• Available partner routes (current state)
• Consent state (for ping/post compliance)"]:::engine H --> I1["★ affiliate_aggregator_portal
$35 CPL external partner
CURRENT primary revenue today"]:::current H --> I2["affiliate_direct_online_school
SNHU · Purdue Global · WGU · Strayer
FUTURE — pending direct deals"]:::future H --> I3["aggregator_marketplace_ping_post
Education Dynamics · Archer · LeadHoop · PX
FUTURE — multi-buyer with consent"]:::future H --> I4["organic_state_school_redirect
UT · OU · UF · UM · Bama · state flagships
ORGANIC ONLY (no paid traffic)"]:::organic H --> I5["content_only
Deep educational dive
ALWAYS AVAILABLE — brand + SEO moat"]:::always I1 --> S["Stage R — Signal Capture
Which monetization_path × lander_mode × archetype_tag × proof_mechanism_id combos converted?
Feeds Winners Vault + exploration vault
Closes the loop to next campaign's Strategy Engine"]:::signal I2 --> S I3 --> S I4 --> S I5 --> S S -.->|"winners_vault_readback v0.4.0"| B
monetization_path up-front. In the proposed shape, most cells
are hybrid_dynamic — the cell emits a tool that gathers the data, and the routing-endpoint decision is deferred to
tool-completion time based on that data. The operator called this out explicitly: “The tool produces the data that
determines the routing.”
monetization_path (6 values) × lander_mode (3 values) — which combinations are valid, which are
strategically preferred, which are nonsensical. Current state vs future state labeled per cell.
| Enum value | Paid-traffic eligible | State | Description |
|---|---|---|---|
affiliate_aggregator_portal |
Yes | CURRENT | Today's $35 CPL external partner (LeadAmplify-style matching portal that accepts a degree sub-param). Primary revenue channel. |
affiliate_direct_online_school |
Yes | FUTURE | SNHU · Purdue Global · WGU · Strayer direct relationships. Cuts aggregator middleman, preserves paid-traffic eligibility, richer framing allowed (“matched with SNHU”). |
aggregator_marketplace_ping_post |
Yes | FUTURE | Education Dynamics · Archer · LeadHoop · PX.com ping/post or host/post marketplaces. Multi-buyer lead distribution from our tools with explicit consent capture. |
organic_state_school_redirect |
No (organic only) | ACTIVE ORGANIC | Texas State · OU · UF · UM · Alabama · state flagships. UTM-tracked outbound to school application portals. Brand-building + potential future direct rev-share. |
content_only |
No | ALWAYS AVAILABLE | Deep educational article or tool with no immediate monetization hook. CPM-reduction on parallel paid campaigns + topical authority. |
hybrid_dynamic |
Per sub-route | OPERATIONAL TARGET | Tool completes → result + dynamic options routed by HHI · location · intent · vet status · school preference. Most cells will live here. |
| Enum value | Entry point | Tool placement | Best for |
|---|---|---|---|
content_site_tool_direct |
Ad → content-site tool page | Tool IS the lander; surrounded by long-form educational content | High-quality-signal campaigns · organic-path cells · state-school redirect · content-heavy audiences |
archetype_tool_embedded |
Ad → archetype lander | Tool embedded inline in the lander | Bridges ad-aggression to tool-proof. Advertorial or authority-notice framing + tool below the fold. |
archetype_prequalifier |
Ad → archetype pre-qualifier | 2-3 quick questions → routes to tool | Vet-eligibility gates · HHI disqualifier · employer-tuition filter · high-qualification-value campaigns |
| ↓ monetization_path \ lander_mode → | content_site_tool_direct |
archetype_tool_embedded |
archetype_prequalifier |
|---|---|---|---|
| affiliate_aggregator_portal | ✓ CURRENTTool on site → $35 CPL partner after completion. Primary today. | ✓ CURRENTArchetype advertorial/authority + tool inline → partner. Also primary today. | ✓ Some cellsQuick qualifier (HHI/age) → tool → partner. Used for filtering. |
| affiliate_direct_online_school | FUTUREPost direct deal: tool on site → SNHU/WGU branded flow. | FUTUREBranded archetype + tool inline → direct school. | FUTUREVA-eligibility or HHI qualifier → tool → matched direct school. |
| aggregator_marketplace_ping_post | FUTUREPost-consent: tool collects data → ping/post to multi-buyer marketplace. | ✓ Strongest fitArchetype lander with embedded tool + explicit TCPA/consent capture → ping/post. | —Pre-qualifier doesn't fit ping/post economics (marketplaces want full intake before buying). |
| organic_state_school_redirect | ✓ Primary pathContent SEO + tool → UTM-tracked outbound to state school portal. Persona B traffic today. | —Archetype framing is overkill for organic; users arrive via SEO not paid. | —Organic doesn't need pre-qualification — user is already segmented by search intent. |
| content_only | ✓ DefaultArticle or tool page with no monetization hook. CPM-reduction + authority. | —Archetype-style aggression doesn't fit brand-signal-only intent. | —No conversion endpoint to qualify for. |
| hybrid_dynamic | ✓ Most flexibleTool on content site → result + dynamic routing per user profile. Default target. | ✓ SecondaryArchetype lander + tool inline → dynamic routing at completion. | ✓ When gating mattersPre-qualifier filters first → tool → dynamic routing. Adds friction but richer data. |
content_site_tool_direct × hybrid_dynamic is the operational target for most cells going forward — it's the
cleanest expression of the persona-v2 tool-as-proof thesis.
(b) aggregator_marketplace_ping_post × archetype_tool_embedded is the only natural fit for ping/post because marketplaces
price on full intake + consent, not on qualified-only leads.
(c) organic_state_school_redirect is content-site-only by construction — no paid traffic means no archetype-lander use case.
(d) content_only only exists in the content-site lane; it's an anti-pattern to wrap brand-signal content in an
archetype lander.
monetization_path: affiliate_online
post-ADR-0013 migration (except Persona B–targeted cells which flipped to direct_school or hybrid). Under the
proposed expansion, the bulk of cells should reclassify as hybrid_dynamic × content_site_tool_direct, with select cells
reclassified per the operator's persona/cell mapping work (BR-2 of ADR 0013 is the precedent). Worker 3.5-C scope amendments would land in a Phase 5 follow-up session.
vertical_tag=edu, intends_paid_traffic=true, persona_segment includes Persona B (parent-of-HS-senior), goal=lead_gen. Operator reserves budget for exploration on parent segment.
Cell selected: S1.F6 (aid-letter-decoder-adjacent). Strategy Engine resolves monetization_path: hybrid_dynamic, lander_mode: content_site_tool_direct, proof_mechanism_id: edu_efc_calculator.
Copy + Creative: Stage 3 emits ad variants framing “see your actual combined aid in 2 minutes” with tool-backed credibility. Creative matches UGC library for parent demographic.
Lander: Ad clicks to content_site_tool_direct — EFC Calculator tool page on degreesources.com, surrounded by long-form aid-decoding content.
Tool completion: User enters HHI $140K, TX location, “kid attending traditional college” signal. Dynamic routing evaluates: HHI > $100K + TX + on-campus preference → NOT a fit for $35 CPL portal (portal doesn't serve this segment).
Monetization routing: Tool result screen shows: (a) calculated aid breakdown + sources, (b) organic_state_school_redirect dynamic option to UT Austin / Texas State application portals (UTM-tracked), (c) optional “also consider an online program” path to the $35 CPL partner if user self-selects that.
Stage R signal: Logs which sub-route converted (state-school click-out vs partner conversion vs content_only exit) — feeds Winners Vault per-cell readback.
vertical_tag=edu, persona_segment=Persona D (veteran), goal=lead_gen, intends_paid_traffic=true.
Cell selected: S6.F8 (full veteran picture: Ch33 + MHA + Yellow Ribbon + VR&E + TEB). Strategy Engine resolves monetization_path: hybrid_dynamic, lander_mode: archetype_prequalifier, proof_mechanism_id: edu_gi_bill_calculator. Pre-qualifier filters VA status and service era before surfacing the calculator.
Copy + Creative: Archetype lander with vet-identity-first framing; 2 pre-qual questions (“Post-9/11 status?” and “Active / discharged?”) route to tool.
Lander + Tool: User answers qualifier → GI Bill Calculator computes MHA + Ch33 coverage + Yellow Ribbon match based on target school tier.
Tool completion: Tool identifies Yellow Ribbon match with $18K annual gap coverage. Dynamic routing evaluates: veteran + graduate + Yellow Ribbon eligible + online preference.
Monetization routing: Two sub-routes offered: (a) affiliate_direct_online_school if SNHU or Purdue Global graduate program matches (FUTURE — falls back to aggregator portal today), OR (b) organic_state_school_redirect to a TX State or Alabama Yellow Ribbon program if user prefers on-campus.
Stage R signal: Logs which sub-route converted. Yellow Ribbon school attribute is captured separately from monetization_path — it's a SCHOOL attribute, not a path.
vertical_tag=edu, persona_segment=Persona C (career changer with employer benefits), goal=lead_gen.
Cell selected: S7.F1 (dual-§127 household / employer tuition). Strategy Engine resolves monetization_path: hybrid_dynamic, lander_mode: content_site_tool_direct, proof_mechanism_id: edu_employer_tuition_checker.
Copy + Creative: “See what your employer covers in 3 minutes” — §127 anchor tied to tool-backed proof.
Lander + Tool: Tool on content site surrounded by employer-tuition explainer content. User enters employer, household status, spouse employer.
Tool completion: Tool shows $10,500 combined cap (dual-§127 household stacking). Dynamic routing evaluates: employer benefit eligible + explicit “yes, I consent to being contacted” checkbox.
Monetization routing: If consent captured + profile fits multiple buyers → aggregator_marketplace_ping_post to Education Dynamics / Archer / PX multi-buyer distribution (FUTURE — falls back to $35 CPL portal today). If user prefers direct-online path → affiliate_direct_online_school route instead.
Stage R signal: Captures consent-state + which buyer(s) accepted the ping + final CPL distribution per buyer.
aggregator_marketplace_ping_post. Before ADR 0018 ships, confirm whether ping/post consent is captured via the same consent-form-as-last-page archetype as direct-buyer routing, or whether ping/post needs its own consent model.docs/psychology-engine/phase-3-operationalization/cell-angle-rules.json v0.2.4 → v0.2.5 (or v0.3.0 if breaking): expand monetization_path enum to 6 values; add new lander_mode required field with 3-value enum; update the hybrid_routing block to support the richer hybrid_dynamic routing semantics.docs/schemas/strategy.schema.json v0.2.1 → v0.3.0 (BREAKING): monetization_path const enum is currently 4 values; bumping to 6 is a breaking schema change. lander_mode added as required angle-level + selected_cell-level field. content_brief_directives monetization_path sub-enum also expands.docs/psychology-engine/phase-4-result-personalization/result_personalization.json v0.6.0 → v0.7.0: mirror the 6-value monetization_path; add lander_mode-scoped variant slots if lander-specific variants are warranted (open question — see 5.2).docs/schemas/winners_vault_readback.schema.json v0.4.0 → v0.5.0: extend stage_r_emission_reason enum if ping/post-specific or direct-online-specific reasons are needed. Add lander_mode_observed + monetization_sub_route_observed fields so Stage R can attribute conversion to the winning combination, not just the cell.docs/schemas/tool_registry.json v0.1.0 → v0.2.0: monetization_paths_supported per tool expands to 6 values. Tools may want a lander_modes_supported field too (e.g., prequalifier doesn't fit every tool).verticals/edu/site/content-brief.json + tool page JSON: per-article + per-tool monetization_path + lander_mode tagging. Migration pass required on existing 30+ entries.verticals/edu/research/direct-school-partners.json (ADR 0013 BR-3 artifact) must distinguish affiliate_direct_online_school partnerships from organic_state_school_redirect relationships — today both live under the same “direct school” label.verticals/edu/research/aggregator-marketplace-partners.json — Education Dynamics, Archer, LeadHoop, PX endpoint schemas + consent-model metadata + per-buyer pricing tiers.rule_12_monetization_path_gate expands to the 6-value set. New rule_15_lander_mode_compatibility (or similar) enforces that lander_mode = content_site_tool_direct implies ContentForge authoring; lander_mode = archetype_* implies a Stage 7 archetype selection.lander_mode awareness to the Phase 6 scope before kickoff — cheaper to bake it in than retrofit. Copy-factory needs to know which variant slots (dlo / lpv / trr) apply per lander_mode. Landing-page needs the 3-lander-mode routing tree.monetization_sub_route + lander_mode_observed capture at regen time rather than regenerating twice.monetization_path based on persona target.
Under ADR 0018, Worker 3.5-C expands to also set lander_mode per cell. Not a huge scope delta — same cell-walk, two fields to set instead of one — but the walker needs the new enum values locked
before it runs. Block 3.5-C on ADR 0018 ruling.
hybrid_dynamic routing logic itself defined per cell?hybrid today (ADR 0013) uses a hybrid_routing block with paid_subset_segment_match[] and
direct_school_subset_segment_match[] — a 2-way fork. hybrid_dynamic is an N-way fork across up to 4 active monetization paths
plus a content-only fallback. Proposal: new dynamic_routing_rules[] array per cell where each entry is
{predicate, target_monetization_path, priority} and the engine evaluates them at tool-completion time.
Who owns authoring these rules? The cell-angle-rules author, or a separate per-tool routing config?
(Recommend: per-tool because the tool knows what data it collects; operator decides cell overrides.)
lander_mode live on the cell, or on the angle, or on both?content_site_tool_direct, while a “quick-qualifier” angle on the same cell uses archetype_prequalifier).
Three options: (a) lander_mode is cell-level, all angles inherit; (b) lander_mode is angle-level, cell enumerates allowed set;
(c) both — cell declares allowed set, angle picks one. Recommend (c) — matches how monetization_path already works on the cell with per-angle override potential.
organic_state_school_redirect?utm_source=degreesources · utm_medium=organic · utm_campaign=<cell_id> · utm_content=<tool_id> · utm_term=<persona_id> for
direct-school outbound. Is that still correct for organic_state_school_redirect? And specifically: zero PII leaves our domain
(pure UTM) or do we capture email on our side before redirect? Recommend zero PII + UTM only for organic path — preserves
“we didn't sell your data” credibility that's structurally different from aggregator marketplace.
aggregator_marketplace_ping_post to make sense?min_monthly_volume_for_path[] config, or is this an operator-manual decision? Recommend config with default so
the engine auto-flips to affiliate_aggregator_portal fallback when projected volume is below the marketplace threshold.
affiliate_aggregator_portal and affiliate_direct_online_school coexist on the same cell, and if so, how does the engine choose?[direct, portal] and the engine uses whichever is active; (c) hybrid_dynamic swallows this naturally as sub-routes.
Recommend (c) — this is exactly what hybrid_dynamic is for. Direct and portal are sub-routes, not separate monetization_path assignments.
yellow_ribbon_participant: boolean + yellow_ribbon_annual_gap_coverage_usd: integer|null to the direct-school-partners.json schema AND to a
new state-school-partners.json schema. Routing logic reads the attribute at tool completion, not the monetization_path.
Does this match operator intent, or should YR be its own sub-route type?
content_only × content_site_tool_direct need a distinct label?content_only is only valid with content_site_tool_direct lander_mode. If the combination is unique, the two fields
carry redundant information on content-only cells. Alternative: content_only implies content_site_tool_direct by default and the
lander_mode field is null/inapplicable. Recommend allow null lander_mode on content_only cells + validator enforces the constraint.
Clean schema; no redundant data.
affiliate_aggregator_portal + aggregator_marketplace_ping_post into one aggregator_* path with a sub-type: both go through aggregators, just different economic models.
Counter: economics ARE materially different ($35 CPL single-buyer vs per-lead ping/post multi-buyer), compliance posture is different
(portal: standard affiliate disclosure; ping/post: explicit TCPA + multi-buyer consent), and operational setup is different.
Recommend keep separate — collapsing them loses the economic-regime distinction the enum exists to capture.
hybrid_dynamic replace the current hybrid value, or coexist?hybrid is a 2-way fork (paid_subset vs direct_school_subset). hybrid_dynamic is N-way.
Options: (a) rename hybrid → hybrid_dynamic and expand its semantics — clean migration, no dual concept;
(b) keep both with hybrid as legacy 2-way fork and hybrid_dynamic as N-way — ugly but lossless.
Recommend (a) — the 2-way fork is a degenerate case of the N-way fork.
Operator walks through OQ-1 through OQ-10, rules each one, then ADR 0018 is authored in a follow-up session against the ruled decisions. That ADR drives the schema bumps in §4.2, the skill amendments in §4.3, and expands Worker 3.5-C scope. Commit this page + flag in the Session Log on the main specs dashboard. No research-layer files are touched until ADR 0018 ships.