Coaching scopes the coach-satisfaction survey
Why
2026-05-22-coaching-mart-section-silver-classification classified coach_satisfaction_of_platform as one of Coaching's silver-gap mart metrics: it reads null:upstream_unavailable because no coach-survey surface exists in any Sguild-owned store. The just-completed customer post-lesson survey program (2026-05-22-coaching-nps-program-v1-spec) deliberately scoped the coach-as-respondent side out as a later phase. This memo is that later phase: it scopes the coach-facing satisfaction survey that produces the surface coach_satisfaction_of_platform activates on.
coach_satisfaction_of_platform is a leading indicator of coach roster churn, and roster churn feeds capacity forecasts: idle hours, time-to-rebook, the ramp pipeline. Coaching has the metric defined and the customer-program template fresh, so picking this up now is low-friction.
What this is, and how it differs from the customer program
The customer program, CSAT and NPS to families, was genuinely cross-domain and carried real complexity: Delivery owned the lesson.attended trigger and the capture surface, the customer-identity firewall constrained what crossed into Coaching, and minor participants forced guardian routing. The coach-satisfaction survey carries none of that.
- The respondent is the coach, an adult. Coaching owns the Coach (
coa_) record per ADR-0008. There is no minor-routing case and no customer-identity firewall: the metric is coach-grain and the respondent is its subject. - The surface is Coaching-local. A coach-survey table belongs in the Coaching store, next to the Coach record. Coaching owns it outright.
- The trigger is a periodic pulse, not an event. There is no lesson-shaped trigger; the survey goes to active coaches on a schedule, which Coaching can run as a scheduled job over its own Coach records.
So this initiative is mostly Coaching-internal. The one piece of shared infrastructure it reuses is the send path, and that already exists.
Proposed V1 design
Instrument. A coach eNPS: one question, "How likely are you to recommend Sguild as a place to coach?", on a 0 to 10 scale, the standard employee-NPS framing for the coach rating their experience on the platform. Consistent with the customer program's principles, V1 also captures a structured single-select reason code and no free text, so every field is quantitative. Proposed vertical-agnostic reason categories: "Pay and compensation", "Scheduling and workload", "Support and tools from Sguild", "Students and families", "Facility or equipment", "Growth and development", "Other".
Cadence. A monthly pulse to every active coach (Coach status active). Monthly is light for a single-question survey and keeps the churn signal responsive; the metric is a leading indicator, so a quarterly cadence would lag. One eNPS question plus an optional reason tap is a low-fatigue ask at monthly frequency.
Surface. A Coaching-local coach-survey table, one row per response: coach, period, the raw 0 to 10 score, a normalized rate, and the reason code. No firewall projection is needed, since the data never leaves Coaching's trust boundary in identified form; the mart reads an aggregate.
Send. The same infrastructure the customer program settled. Recipient resolution through Platform's Guardian-aware comms-routing endpoint, which Coaching's own comms-routing rule already mandates for coach contact (coordination/domains/coaching.md); coaches are adults, so it resolves to the coach's own Person. The send goes through the External Actions Queue (ADR-0011) as its own action_kind, with a one-tap link to a Coaching-hosted form, chosen for the same reason as the customer program: a text-back reply would land on the inbound-comms pipeline.
Trigger. A Coaching-owned monthly scheduled job over active Coach records. No cross-domain event; Coaching owns its coaches and runs the pulse itself.
Metric. coach_satisfaction_of_platform is kind: rate, grain coach × week and org_market × week, emitted weekly. A monthly survey produces sparse weekly data, so the metric should be computed over a trailing window, a trailing 90 days being roughly three monthly responses per coach, the same pattern coach_quality_score adopted, with a minimum-N guard. This likely needs the same one-field period_attribution adjustment Platform made for coach_quality_score, from survey-week to a trailing-window descriptor; flagged to Platform below.
Open questions
- Cadence: monthly as proposed, or quarterly. Monthly favors signal responsiveness; quarterly favors minimal coach contact. Coaching's lean is monthly.
- eNPS scoring: whether
coach_satisfaction_of_platformis computed as a true eNPS, promoter percentage minus detractor percentage, or a mean normalized rate. The registry requireskind: rate; either reduces to one. Coaching will settle the formula in the V1 spec, as it did forcoach_quality_score. - Trailing-window length: 90 days proposed, to be confirmed with Platform alongside the minimum-N when the metric compute is scoped.
- Whether a coach who is
onboarding, not yetactive, should receive the pulse. Coaching's lean is active coaches only for V1.
Asks
To Platform. Confirm the coach-satisfaction send can reuse the comms-routing endpoint and the External Actions Queue with no Platform build, as the customer program established; Coaching expects yes, since the coach case is the simpler one. And note for when coach_satisfaction_of_platform's compute is wired that the trailing-window value will likely need the one-field period_attribution edit, as coach_quality_score did.
From Coaching. Coaching owns this initiative end to end: the coach-survey surface, the monthly trigger, the survey copy and reason categories, and the metric formula. This memo is the scoping open; a V1 spec follows once the open questions settle, on the pattern of 2026-05-22-coaching-nps-program-v1-spec. No dated commitment here, consistent with the no-rocks discipline.
References
- Coaching mart silver-gap classification, which lists
coach_satisfaction_of_platform:2026-05-22-coaching-mart-section-silver-classification - Customer survey program V1 spec, the pattern this follows:
2026-05-22-coaching-nps-program-v1-spec - Them OS disposition that split
coach_nps:2026-05-19-platform-mart-them-os-dispositions-landed - Thread root:
2026-05-19-platform-mart-100-percent-deployment-per-domain-asks - Coaching domain doc, Coach ownership and the comms-routing rule:
coordination/domains/coaching.md - Registry entry for
coach_satisfaction_of_platform:platform/lib/mart/registry.ts - External Actions Queue contract:
contracts/external-actions/README.md; ADR-0011