← Q3 journey review packs

Q3 journey review packs · Portfolio strategic assessment (post-council)

Portfolio strategic assessment: the ten journeys as one lifecycle engine (post-council)

Who it's for: Sheran (the arbitrator on every ruling named below), then the Gate-1 review group. Owner teams (Analytics, Eng/Data, CRM, Product, Compliance, CS) receive it together with EVIDENCE-VALIDATION-PLAN.md.

The one takeaway: the council pass turned a portfolio with six inter-pack contradictions into a portfolio with none: every previously contested boundary now has one synthesised proposal carried identically by both packs involved, so what stands between the ten journeys and build is no longer arbitration between authors but one ruling stack for Sheran, one Analytics definitions sprint, and a small set of engineering gates, on a calendar that starts this week with the Journey 8 lock.

How to read: six sections in fixed order. Section 1 states the portfolio thesis and what the council pass changed. Section 2 walks the connected experience from entry to exit and lists the remaining genuine gaps. Section 3 gives the shared capabilities with build order and owners. Section 4 names the portfolio-level risk concentrations. Section 5 states the coherence rules now in force across all ten packs. Section 6 gives the sequencing: what locks when, on the real dates. Terms and figures are defined at first use; figures keep their source labels (confirmed / assumed / TBC with owner).

Status: agent-drafted DRAFT, 20 Jul 2026, compiled from the ten COUNCIL-ASSESSMENT.md files (J1 to J10), the per-journey decisions-delta.json files, DECISIONS-LOG.json (the consolidated Decisions and Approvals Log, v2 post-council, 20 Jul, 125 items), ROSTER.md and the pre-council cross-journey review. Nothing here is signed; every recommendation is agent-proposed unless a Sheran ruling is cited by date.

This document SUPERSEDES CROSS-JOURNEY-REVIEW.md (the 20 Jul pre-council portfolio view). That document described the portfolio before the ten council passes ran; its conflict list is now largely resolved and, critically, it cites decision ids from the superseded baseline numbering (its "DL-001/002/003/004", for example, meant the old Journey 8 baseline items, which are DL-029, DL-030, DL-033 and DL-031 in the consolidated log). Every id in THIS document is a consolidated-log id, verified against the log's source_ids field. Anything from the old document that is still true and not stated elsewhere is carried here (chiefly the shared-dependency inventory, folded into section 3, and the duplicate-contact stacks, folded into sections 2 and 5).

Conventions. Journey numbers are the canonical team-facing hub numbers (ROSTER.md section 1): J1 first-time winner, J2 upgrade winner pre-travel/travel day, J3 funnel abandon, J4 live bidder and loss recovery, J5 never-transacted first win, J6 habit and advocacy, J7 triggered win-back, J8 first slip (DEF-20, the built pilot pack), J9 seasonal reactivation waves, J10 returning-customer home re-entry. "DL-nnn" cites the consolidated Decisions and Approvals Log (v2, post-council); items are cited by id and a short handle only, never restated in full. The six items the councils added are now in the v2 log as DL-120 (the day-14 episode close), DL-121 (the Journey 6 interim entry anchor), DL-122 (the Journey 7 consent-age floor), DL-123 (the opt-in banner owner), DL-124 (the pack-template fix) and DL-125 (the wave-1 readiness gate).


1. The portfolio thesis

The ten journeys are windows over one customer timeline, not ten programmes. Each journey owns a state of the same customer (never-transacted, in the funnel, in a live auction, just won, pre-travel, post-trip, slipping, lapsed, dormant, returning) and the engine is what connects them: shared scores decide who is in which window (the D2 churn-score family, that is the churn-risk score and reactivation-propensity bands; BRZ-83, the RFM power-user flag and persona model synced to Braze; the propensity bands J7 sends on), one arbitration stack decides who may speak when (the journey_state ownership trait, the contact backbone dials, the layer model in which L0 transactional always outranks, the episode grammar Journey 8 minted), and hand-off contracts move the customer between owners with named payloads (J4's first_loss / close_reason / route exhaust flags into J5; J3's 7-day episode hand-back to J5; J6's slip hand-off into J8; the day-60 journey_state hand-off into J7). A journey is good when its window is honest; the portfolio is good when no two windows claim the same customer-moment. That second property is what the council pass established.

What the council pass changed: six contradictions dissolved to zero. Before the pass, five customer windows were contested by more than one journey and roughly a dozen headline figures circulated in two versions. After it:

  1. The M39_E post-trip slot (was the sharpest disagreement). M39_E is the active +1d post-upgrade survey email (£165,839.80 attributed, confirmed as attributed not incremental). J1 and J6 recommended opposite dispositions; J6 has now realigned to the consolidated synthesis (J1's IN ADDITION shape: M39_E stays at purchase +1d as pure feedback, J6's T+24h slot email becomes its own trip-anchored asset, same-day collisions shift the slot email to T+48h, with a survey-completes guardrail). The contradiction no longer exists in any artefact; what remains is one Sheran confirm covering both packs (DL-002).
  2. The J1/J6 boundary at the second transaction. J1's stale premise ("Journey 6 is unauthored") is corrected in the pack; both packs now carry the same two-part boundary (J1 owns forward asks for its 30 canvas days via the grw01_canvas_active state key; J6 owns trip-anchored reflection and review from trip 1). One ruling closes it: DL-089, ruled together with deleting the interim no-send exit (DL-039, closed by the J1 council as superseded).
  3. The J7/J9 anniversary claim. J7 has adopted the DL-006 synthesis: the REC-30 anniversary slot executes under J9's wave governance (with per-cycle anniversary/seasonal mutual exclusion) until the D2 score family lands, then comes home to J7, which keeps the trigger's definition and end-state. The packs no longer contradict; DL-006 stays open only for the ruling itself.
  4. The REC-06 decommission home. J7 has ceded the vehicle per the DL-007 synthesis and withdrawn its midweek-warm re-home (the 14 Jul STOP-both ruling governs). One proposal stands: J9 carries the REC-06 decommission-and-replace re-scope; Sheran rules the final home (DL-007), noting the pre-council review's alternative of a standalone decommission programme (section 3, build order 7).
  5. The M22_P/M24_P recovery boundary (three verdicts on the estate's highest-attributed canvas, £4.99M + £457k attributed, confirmed as attributed not incremental). J3 and J4 now present one shared decision surface: confirm the 6 Jul pre-close ruling that the baseline reopened in error (DL-003), ratify the recovery owner of record (J3 owns pre-bid abandon, J4's ACT-07 D+7 journey owns post-close loss, the live bid is the boundary; DL-004, three packs concur), and rule J3's no-bid fold (DL-060) in the same pass, after Lisa's entry-criteria audit.
  6. The J5/J1 dual claims at the win moment. J1 has mirrored J5's two contracts: the 31.8k/yr transacted-never-bid onramp (confirmed) dual-listed under one shared canvas and the win_moment_canvas_active dedupe key (DL-079), and one celebration per win event with Beginner's Luck as a copy branch, never a second modal (DL-081). Both packs now carry the same contract text.

Provenance and figure conflicts also closed. The travel-day yield order and F3 clamp are verified RULED in tobe-composition (Sheran, 5 to 7 Jul); J2 now builds on the ruled order and asks only for a one-line confirm-and-close (DL-047). The 159,053 losing-bidders/yr label is closed as confirmed per the Analytics sizing tracker (DL-078, closing roster decision f). J10's objective label is closed as a working assumption (O3 primary, DL-119, veto-able at scoping). The stale ~44% Unclassified persona share is retired everywhere in favour of 1.7% unclassified (Ivi persona model, 3 Jul, confirmed); J10 was the last carrier and has adopted the supersession. The 23% new-to-first-transaction conflict is resolved as a working assumption (23% = target; interim baseline = the 16.8% DN 30-day new-user purchase rate, confirmed as stated), with the canonical pair still to publish via DL-009.

What this leaves. No journey now contradicts another journey. The remaining work is of three kinds: (a) the ruling stack, single synthesised proposals awaiting Sheran (section 6 sequences them); (b) the definitions sprint, the two-version figures only Analytics can collapse (EVIDENCE-VALIDATION-PLAN.md is the commissioning document); and (c) the engineering gates (the close-event contract DL-001, the content-card instrumentation fix DL-013, the journey_state batch exclusions DL-012, the PECR classification cluster anchored on DL-034). PECR is the Privacy and Electronic Communications Regulations, the consent law governing which sends may do marketing work.


2. The connected experience, entry to exit

Read this as one customer's possible path; each transition names its owner. RECOMMENDATION language marks the places a ruling is still needed; everything else is adopted in the packs.

Cold and dormant (entry). J9's wave engine owns all scheduled outbound to the dormant pools: one seasonal calendar, a two-audience grid (A: never-transacted, where J5 owns the audience definition and offer content and J9 executes; B: churned-transacted), per-wave no-contact holdouts, triggered-outranks-scheduled suppression. J7 owns score-triggered win-back (entry only via the day-60 journey_state hand-off, one clock, never a second day-count), gated on the D2 family. The anniversary beat runs under wave governance until D2 lands (DL-006 synthesis). REC-21, the welcome-back moment that is the landing surface of every win-back send, goes to J7: three packs (J7, J9, J10) independently converge, awaiting the easy ratification (DL-014).

Considering (never-transacted). J5 owns the first-win journey: the opportunity ladder from in-session deciders to the 31.8k onramp (confirmed), the substantiation rule on every claim, exit on first transaction. J3 owns funnel abandon pre-bid: three evidenced jobs (dead-end search, value doubt, commitment fear), a 7-day recovery episode, then automatic hand-back to J5 (DL-065, adopted in both packs, ratification riding the recovery pass). One funnel nudge per session, deepest step reached wins (DL-066, closed).

In the auction. J4 owns the customer from bid_placed to close (state S2, layer L1): live status, the Live Activity as contact removal not addition (status pushes downgrade to critical-only where it is active, DL-071 closed), the 8-branch close-reason outcome box that never says "you lost" on an auction that never ran. The close-event contract (DL-001: does instant_win emit auction_won; does every termination path emit auction_closed with readable close reason) is the hard gate under the whole fork.

Loss. J4 owns loss recovery: stripped-neutral L0 at close, silence for organic returners, one D+7 touch for non-returners only, capped at 3 per auction, episode close at day 14 (DL-120, new) with named exhaust flags (first_loss, close_reason, route) handed to J5 for the bad-luck-not-rejection reframe (DL-073). The evidence constraint is respected portfolio-wide: the only causal reads in this territory are negative (minus 11.8% blanket recovery; minus 3.73% M21_E, both confirmed).

Win. One celebration per win event (DL-081), one owner surface under the shared win_moment_canvas_active key, the capture ladder with its single shared decline counter (ladder-wide extension proposed, DL-085). J1 enters here: four legacy walks consolidated into one journey with four entry views (the J4c restructure), the D+1 habit touch on the confirmed hazard curve (81.2% of instant-win quick returns land by D+1), the honest reach ladder for the not-armed majority (56% of instant-win first winners are not push-opted at the win, confirmed).

Pre-travel and travel day. J2 owns every marketing slot while a won trip is pre-travel (state S1, layered rule 6 L1; the T+0 win beat is exempt as the entry hand-off; J1 rebook touches floor at travel-completion + 1 day): DL-052, mirrored in both packs. The proven-incremental GRW-16 day-before family (+16.9%/+16.3% confirmed, the estate's only proven-incremental send) is protected by a non-inferiority A/B. Disruption yields everything to L0/OPS-DR with zero commercial content, per the 20 Jul Darwin rulings.

Post-trip. The single arbitrated T+24h slot (advocacy > review > savings tracker, DL-092) replaces the pre-council 48h pile-up; M39_E keeps +1d per the DL-002 synthesis. J6 owns trip-anchored jobs from trip 1 and the habit ladder from the 2nd transaction; the advocacy AND-gate (positive trip AND 2nd/3rd transaction, DL-090) holds throughout. GRW-09, the re-booking nudge, is J6-owned with J10 rendering the in-app leg under a rendering contract (DL-015).

Slip and lapse. J6 hands off to J8 at the slip boundary (fixed 60d interim until the personal-cadence trait and D2 land; DL-094 closed); J8 saves at first slip on the ruled window model; at day 60 the journey_state hand-off makes J7 the one lapse owner. No other journey may run a lapse clock.

Return. REC-21 (J7) plus the J10 home framework: one lifecycle-state model, one slot map, one governance rule (state decides which journey's treatment renders; slots never stack). Every journey's deep links land here, which is why the J10 scoping session is on the critical path of all ten (section 6).

The remaining genuine gaps: six. These are places where no built or authored thing exists yet, as distinct from ratifications with an agreed answer (REC-21's home, ACT-15's missing card DL-080, ACT-10's engine disposition DL-063, and the outside-the-10 confirm DL-027 all have agreed answers waiting on a ruling and are not counted).

  1. The disruption service comm (OPS-DR) has an owner code but no authored content. Disruption is the joint-worst sentiment in the dataset (64.2% negative, 12,359 tickets, confirmed); every journey yields to a card that never fires. RECOMMENDATION (carried from the pre-council review, still unactioned): author it on the service track this quarter, with the Darwin-ruling play (acceptance options plus a Delay Repay pointer, nothing for sale).
  2. The power-user programme has no home. Architecture J9 ("your best customer: don't pester me", 20.7k confirmed) is absent from the canonical 10; the standing proposal is a cross-journey suppression rule-set rather than an eleventh journey (DL-023, P3). J6 has meanwhile adopted the split posture for its own audience (suppressed from nudges, eligible for review/advocacy, DL-095).
  3. The not-armed majority still has no habit-window channel. The content-card placement (approved 7 Jul at NEXT via dynamic tiles, unbuilt) and its instrumentation fix are paired launch-blocking for J1 (DL-036 + DL-013); until built, the majority cohort's habit window is silence.
  4. No-channel dormant customers have organic-only recovery, and it is not built. Roughly 4 in 10 of J7's pool cannot be messaged at all (confirmed); their only path is REC-21 plus the home surface, both unbuilt. This gap compounds gaps 3 and the J10 timeline.
  5. Survey and referral infrastructure is broken where three journeys depend on it. M40E/M42E universal links fail silently (confirmed), survey completes are not instrumented, and no referral attribution backend exists: GRW-29 cannot ship, GRW-28's k-factor is unmeasurable, and J6's advocacy leg rests on a P0 bug fix.
  6. The opt-in banner moment has no owner (new, from the J8 council delta). The J8 pack assigns its no-channel arc's opt-in banner (11,327 actives, 14.6% of the active band, confirmed) to "the channel-infrastructure journey", which is not one of the canonical 10 and has no authored moment or matrix row. It needs an owner and a row before J8 build QA.

3. Shared capabilities: build order and owners

The pre-council build order (seven capabilities) survives the council pass; what changed is that the assessments settled the open ownership and gating questions inside it. Order logic unchanged: arbitration first, then the critical path of journeys at READY/BUILD, then later-quarter engines. The calendar exception also stands: build order 3 ships first in time because wave 1 is the only hard external date.

1. The suppression / one-owner arbitration stack. journey_state (the journey-written ownership trait), the batch-audience exclusion segments (DL-012, the launch precondition for every triggered journey), the backbone dials sign-off (DL-008, now explicitly needed before wave 1 because cap class C rides it), and the episode grammar. Owners: CRM (Lisa) + Data; Sheran signs the dials. Settled by the pass: nothing; this was never contested, only unbuilt. Consumers: all ten plus the Summer Campaign.

2. The win-moment owner surface. The ACT-24/GRW-01 partition, one-celebration-per-win (DL-081), the shared dedupe key and dual-listing (DL-079), the capture ladder with the ladder-wide shared decline counter (DL-085). Gated on the close-event contract, which the pass EXTENDED from the original Q5 question to the full termination-path audit (DL-001, now covering J4's close-reason fork as well). Owners: Eng/PMM (audit), Product + Lisa (surface), Sheran (contracts). Settled: both packs now carry identical contract text.

3. The wave engine (J9). One calendar, the two-audience grid, per-wave holdouts. Settled: the shared-moment split is agreed across J5/J7/J9 (audience+content vs execution vs score-triggered), the anniversary runs under wave governance interim (DL-006 synthesis), and the pass added the wave-1 readiness gate (DL-125: BRZ-83+BRZ-84, the batch read, the power calculation, and claim-and-incentive-ruled creative all true, or the wave slips). Owners: CRM executes; Analytics sizes; Sheran rules the wave-1 package.

4. The lifecycle-state home framework (J10, re-scoped). One state model, one slot map, one governance rule; Braze Content Card as the Q3 mechanic (DL-115, staged), native tiles as the Product target state. Settled: the re-scope is council-approved as the scoping-session input (DL-114), the framework closes the landing-destination question for every pack (DL-029 extends to a default-destination contract), and the instrumentation fix (DL-013) is launch-blocking. Owners: Sheran + Product (scope); Eng (instrumentation fix); Analytics (measurement frame DL-117).

5. The personal-data trait family. The cadence traits (personal_median_inter_txn_gap and baseline, one shared J6+J8 build, DL-093), usual_route + live from-£ (ruled 20 Jul; staleness fallback closed, DL-106), anniversary_of_last_purchase, and the substantiated-savings and positive_trip family (positive_trip definition sign-off DL-091 is launch-blocking for J6). RECOMMENDATION (unchanged): brief Analytics as ONE trait-family build with per-journey priority tags. Owners: Analytics (Ivi) defines; Eng pipes.

6. The Route-Watch capture engine (ACT-10). Settled: closed as the shared capture-and-alert engine behind ACT-25/26, not a fourth dead-end moment (DL-063). Consumers: J3, J6 (GRW-09's CTA), J10, J7/J9 landing routes. Owners: Product/Eng trigger package; follows the funnel-event work.

7. The legacy decommission programme. The sequenced retirement of the estate the journeys replace (M44/M45 STOP ruled 14 Jul, LAPSING50D, M21_E, T20_P, X67-class, M33_P, M36_P consolidation DL-053, the referral one-offs), per-canvas holdouts where revenue is attached, and the ordering constraint that retirements land BEFORE the replacing journey ships (J4's C1 constraint, now also carried on the loss-close estate items DL-075/DL-076). Settled: two proposed homes collapsed to one proposal (J9's REC-06 vehicle, J7 ceded); Sheran rules the final home (DL-007), with the standalone-runbook alternative noted. Owners: CRM (Lisa) + Eng, running continuously alongside builds 1 to 6.

Carried shared dependencies (from the superseded review, ids corrected, still true). The D2 churn-score family (J8 numbers via DL-031, J7 launch gate, J6 hand-off, J9 anniversary revisit; Analytics, not landed). BRZ-83 (DL-011, ~w/c 20 Jul; the interim RW fallback is design-only, never live suppression). BRZ-84 and the lapse-threshold family (DL-010). Live Activity infrastructure settled once for J2+J4+J8 (DL-030 consent/webhook, DL-033 token holder, DL-057 re-scope rides the shared build). The PECR cluster (DL-034 sets the precedent; DL-045 and J4's stripped L0 inherit it). The Darwin real-time feed (product-led, alignment session DL-016; nothing in any launch scope may assume it). The two new Eng feeds auction_close_time + is_currently_winning (one brief, three moments), the trip_completed event (interim proxy: scheduled departure + 1 day, DL-040 closed; J6's schedule-derived arrival anchor DL-121 rides the same build), and the app_open + lifecycle-state event carrying REC-21 and J10's entry.


4. Portfolio-level risks (concentrations)

  1. The D2 model family is a four-journey single point of failure. J7 cannot ship, J8's trigger thresholds, J6's slip hand-off and J9's anniversary re-home all wait on one Analytics model delivery whose brief was due end-Q2 and has not landed (confirmed per the packs). Mitigations already in the packs: J8's D1 threshold subset is separately deliverable (DL-031, due EOP 21 Jul), J6/J8 run a fixed 60d fallback, J9 runs the anniversary interim. The risk is unowned slippage: RECOMMENDATION: date the D2 delivery at the J8 walkthrough and treat "deliver or date it" as a standing agenda line (the J7 assessment's exact ask).
  2. Analytics (Ivi) is the owner of nearly everything that unblocks. The definitions sprint (nine two-version figure sets), every journey's sizing, the D1/D2 deliveries and the wave-1 power calculation all route through one person, and the J8 round logged that Analytics submitted no feedback (logged risk, J8 assessment). The validation plan groups and sequences the asks so they can be triaged as one commission rather than ten ad-hoc requests; the risk stands until capacity is confirmed.
  3. The Braze hire gates build throughput. J7's build, the decommission execution and general canvas throughput all assume it; no date exists in the repo. Every journey's "build hard gates" list is downstream of it.
  4. Legacy-estate replacement discipline. Until the STOP rulings and batch exclusions (DL-012) land, every new go-live stacks on the estate it replaces; the ordering constraint (retirements land first) is now carried in three packs but is a process rule, not yet a runbook with an owner (DL-007 decides the home). The M44/M45 stop itself still needs Sheran's confirm plus the Braze audience verification (J8 working assumption, flagged).
  5. One Eng fix gates five journeys' reads. Content-card impressions and clicks register zero in the warehouse today (confirmed, estate-wide). J1's not-armed arc, J3's no-channel row, J5's card tests, J7's REC-21 read and J10's entire measurement frame are unreadable until DL-013 lands and Analytics verifies warehouse landing. No baseline exists even for the condemned generic card.
  6. The PECR precedent chain concentrates regulatory exposure on one ruling. DL-034 (the T31 consent-forked CTA class) sets the precedent that DL-045, J4's stripped L0 class and J5's capture-copy class inherit; ruled wrong, it propagates wrong four ways. The J7 consent-age floor (DL-122) adds a fifth read on the same desk. Claims exposure is a sibling concentration: no named compliance owner exists for win-rate, price-comparison and consent-incentive claims (DL-082, open).
  7. Process risk: labels and ids decay in consolidation passes. The J8 template findings generalise: figure confidence labels drop when figures are restated (the 20%/0.5% case), status vocabulary blurs "card approved" into "pack locked", and stale decision ids send builders to the wrong records (the defect this document fixes for the portfolio view). The coherence rules below adopt the fixes as standing rules; the pack-template parameterisation (J8 delta item) is the build_pack.py fix that stops the walkthrough-truncation defect recurring in future format passes.

5. Coherence rules now in force

These are the cross-journey rules every pack now encodes identically. Provenance is stated per rule; none is signed unless a Sheran ruling is cited.


6. Sequencing: what locks when

Anchored to the real dates in the packs and the log. Dates labelled (recommended) are council-proposed and not yet ruled dates in the log.

This week (w/c 20 Jul): the J8 lock and the two framing sessions.

Late July: wave 1 and the J8 ship.

The paired J1/J2 ratification and the arbitration sitting. J1 is READY and the programme's #1-ranked journey; J2 is conditional-ready. RECOMMENDATION: one Gate-1 sitting immediately after the J8 lock (target w/c 27 Jul, assumed, no ruled date exists) takes, in order: the paired restructure itself (DL-005, ratifying one without the other leaves the legacy win walks half-dismembered); the win-surface contracts (DL-079, DL-081, DL-085); the post-trip ruling covering both packs (DL-002 confirm + DL-089 with DL-039's deletion); the pre-travel slot (DL-052) and J2's confirm-and-close set (DL-047, DL-058 at Gate-1 acceptance); and the recovery one-pass (DL-003 + DL-004 + DL-060, with DL-065 riding), after Lisa's M22_P entry-criteria audit. This one sitting closes every formerly contested boundary in the portfolio.

Build gates (after ratification, before any go-live). The close-event audit (DL-001, Eng/PMM); the PECR cluster ruled DL-034-first (Lisa + compliance); the content-card instrumentation fix verified in the warehouse (DL-013) paired with the not-armed placement (DL-036); the batch exclusions (DL-012) before every triggered launch; and the ordering constraint that estate retirements (DL-075/DL-076, the M44/M45 stop confirm) land before the journeys that replace them ship.

Gated in parallel, no dates yet. J7 (authored-in-parallel; ship gated on the D2 family and the Braze hire either way); the J5 approvals set (DL-080 ACT-15 card, DL-082 claims owner, DL-083/DL-084 staging gates); J6's Gate-1 agenda (DL-088 through DL-096, entry anchored on DL-121 until trip_completed exists); the scoping-session follow-ons (DL-118 home-station question). The validation plan carries every needed-by date that feeds these.


Companion documents: EVIDENCE-VALIDATION-PLAN.md (the commissioning document for every REQUIRES VALIDATION item above), the ten J<n>/COUNCIL-ASSESSMENT.md files, DECISIONS-LOG.json (v2, post-council). Airtable base appN7dd7fgbyJ8EYg remains the system of record; record ids are cited in the packs, not restated here.