mattrguerra/meridian-outreach-vaultmainPrivate on GitHub, published here in full

00-Index.md

Language Markdown4.2 KB103 lines

00-Index.md

  1. ---
  2. type: moc
  3. scope: project-root
  4. tags: [outreach, moc, index]
  5. created: 2026-06-16
  6. updated: 2026-08-12
  7. ---
  8. # 00 Index: Quarterly Outreach
  9. Bird's-eye view of the client database. Orientation and process live in [[README]];
  10. how Claude works here is in [[CLAUDE]].
  11. ## At a glance
  12. This repo ships a **generated sample**, not a real client book: `07-Automation/sample/generate_sample.py`
  13. invents it and `run_sample.py` replays two Monday runs (2026-09-14 and 2026-09-21). See [[README]].
  14. State after the 2026-09-21 run:
  15. - **130 client stubs** in `03-Clients/client-stubs/`: the partner base (Palladium and up by
  16. lifetime spend). Palladium 86, Platinum 29, Iridium 8, Rhodium 7.
  17. - **381 Plinth accounts** in the local order history, from which the 130 partner clients are classified.
  18. - **130 chunks** in the XML census (`partner-client-master-list.xml`); **43 clients sit in at
  19. least one outreach pipeline** (45 pipeline blocks, so 2 sit in more than one).
  20. - **54 deals** across the four audited funnels, 28 of them with a verified touch.
  21. - Last routing pass: Winback 50, cat 24 first touch 31, Dormant queue 4, excluded 45.
  22. - Maintained by the **Weekly Partner Client Pipeline**, Mondays 06:00 CT.
  23. Details in [[Weekly-Partner-Pipeline-SOP]]; current working state in [[HEARTBEAT]].
  24. ## Open tasks
  25. Every unchecked task in the vault, wherever it lives. Add a `- [ ]` anywhere and it appears here.
  26. ```dataview
  27. TASK
  28. WHERE !completed
  29. GROUP BY file.link
  30. ```
  31. ## Tier mix
  32. ```dataview
  33. TABLE WITHOUT ID user_group_correct AS "Tier", length(rows) AS "Clients"
  34. FROM "03-Clients/client-stubs"
  35. GROUP BY user_group_correct
  36. SORT length(rows) DESC
  37. ```
  38. ## Placements by tier × pipeline
  39. Cells count **placements**, not people: a client in two funnels is counted in both.
  40. The `Clients` column counts each person once. A pipeline block only counts if it carries a
  41. real `stage`; empty scaffolding is ignored, which is what used to inflate this table.
  42. ```dataviewjs
  43. // Client tier × outreach pipeline. Cells are PLACEMENTS; `Clients` is distinct people.
  44. // A block with no `stage` is scaffolding, not a placement. A batch of such shells was removed
  45. // on 2026-08-12 and this guard stops any future ones inflating the counts.
  46. const order = ["Retail","Palladium Partner","Platinum Partner","Iridium Partner","Rhodium Partner"];
  47. const cols = [["Check-In","quarterly_checkin"],["Winback","winback"],["Partner Tier Upgrade","partner_outreach"]];
  48. const placed = (op, key) => {
  49. const b = op?.[key];
  50. return !!(b && String(b.stage ?? "").trim());
  51. };
  52. const counts = {}, people = {};
  53. const totals = { quarterly_checkin: 0, winback: 0, partner_outreach: 0 };
  54. let distinct = 0;
  55. for (const p of dv.pages('"03-Clients/client-stubs"')) {
  56. const op = p.outreach_pipelines;
  57. if (!op) continue;
  58. const hits = cols.filter(([, key]) => placed(op, key));
  59. if (!hits.length) continue;
  60. const tier = (p.user_group_correct || p.user_group || "(unset)").toString();
  61. if (!counts[tier]) { counts[tier] = { quarterly_checkin: 0, winback: 0, partner_outreach: 0 }; people[tier] = 0; }
  62. people[tier]++; distinct++;
  63. for (const [, key] of hits) { counts[tier][key]++; totals[key]++; }
  64. }
  65. const extra = Object.keys(counts).filter(k => !order.includes(k));
  66. const rows = [...order, ...extra].filter(t => counts[t]).map(t => {
  67. const c = counts[t];
  68. return [t, people[t], c.quarterly_checkin, c.winback, c.partner_outreach,
  69. c.quarterly_checkin + c.winback + c.partner_outreach];
  70. });
  71. const grand = totals.quarterly_checkin + totals.winback + totals.partner_outreach;
  72. rows.push(["**Total**", distinct, totals.quarterly_checkin, totals.winback,
  73. totals.partner_outreach, grand]);
  74. dv.table(["Tier", "Clients", "Check-In", "Winback", "Partner Tier Upgrade", "Placements"], rows);
  75. ```
  76. ## Email pipeline standing
  77. Where every drafted email sits. Stage definitions in [[README]].
  78. ```dataviewjs
  79. const stages = ["01 - Drafted","02 - Audit Result/audit-PASS","02 - Audit Result/audit-FAIL",
  80. "03 - Unsent","04 - Sent","05 - Archive","06 - Parked"];
  81. const pipes = ["First Email","Second Email"];
  82. const rows = stages.map(s => [s, ...pipes.map(p => dv.pages(`"05-Outputs/${p}/${s}"`).length)]);
  83. dv.table(["Stage", "First Email", "Second Email"], rows);
  84. ```