Skip to content

[Feature · V1] Thin Partner Channel: Denise ship checklist — 60s centre onboard, Enquire-only courses, Cap.57 locks #577

Open

Description

@owlstonbusiness-svg

Header


Denise-ready Ship checklist (P0 — ordered)

CEO 2026-11-03: Soft-launch Thin Partner Channel for free centre onboard. Course cards = Enquire / lead-gen only. Cap.57 + Cap.279 locks stay. Full shop stays parked.

Definition of done — outreach pitch

Founder can email / visit centres and honestly offer:

Free Partner Centre → public channel (/en/business/[slug]) · Notes/materials · affiliated tutors · centre student cases / tutor obtain · Cap.57 independent-educator posture. Course cards = Enquire (lead-gen). No on-platform class tuition cart.

Ship is done when that sentence is true in product + copy (EN + 繁中), with empty states that do not imply a full tuition shop.


Slice 0 — Wire existing bases (smoke, no new product)

Reuse only. Confirm live paths before new UI.

AC: Smoke checklist green in staging; blockers filed as comments on this issue (do not invent parallel tickets).


Slice 1 — 60-second activation + Cap.57 / Cap.279 / B2B checkboxes (P0)

Goal: Centre publishes a Partner Channel in ~60–90s with compliance locks.

Required fields (align live #412):

  • Public name EN / 繁中 + @slug
  • legal_entity_name (staff/verify; may differ from public name)
  • rep_name + rep_role
  • org_type: tutorial_centre | day_school | ngo
  • ≥1 district/address + contact email or WhatsApp
  • br_number
  • Mandatory unticked checkbox (publish blocked until checked):
    • EN: confirm (1) educators engaged as independent operators with zero admin/reception duties (Cap. 57), (2) courses comply with Cap. 279, (3) agree MatchMax B2B Partner Introduction Fee on enrolled student referrals
    • 繁中 equivalent on same checkbox

Optional: logo · EDB / school reg no. (trust pill only after staff verify) · curricula/subjects tags · website

MUST: Publish blocked until required fields + policy checkbox complete.
MUST NOT: Imply MatchMax employs centre tutors or is Cap.279 registrar.

AC:

  • Thin sheet collects all required fields above
  • Unchecked policy → Continue disabled + inline error
  • Success → channel published → redirect /en/business/[slug] Edit Mode
  • EDB number stored but hidden publicly until staff verified
  • Copy EN + 繁中 for labels, errors, checkbox

Slice 2 — Public channel polish (P0)

Goal: Partner storefront that looks pitch-ready without shop checkout.

Surface: /en/business/[slug] (and 繁中 locale twin).

  • Header: logo, public name, @slug, districts, optional Verified Partner badge, optional verified EDB pill
  • Sticky / primary CTA: Enquire with Centre / 向中心查詢
  • Stats row (counts): Affiliated Tutors · Active Courses · Study Notes
  • Tabs: Courses & Classes / 課程及常規班 · Our Tutors / 導師團隊 · Study Materials / 精讀筆記 · Posts / 中心動態
  • Footnote Cap.57/279 (see Exact copy)

AC:

  • Desktop 3-col / mobile 1-col layouts
  • Verified Partner badge only when org partnership approved
  • No Hire / Recruit / Vacancy / Apply-to-centre language anywhere on channel
  • EN + 繁中 tab labels + footnote

Slice 3 — Our Tutors affiliations tab (P0)

Goal: Show mutually approved #548 affiliates only; Cap.57 subtitle; correct lead ownership.

  • Permanent Cap.57 subtitle:
    • EN: Verified independent educators and faculty affiliated with {Centre Name}.
    • 繁中: 與 {Centre Name} 合作之認證獨立導師及教學團隊。
  • Tutor appears only when both tutor + Centre Admin approved affiliation
  • Routing:
    • Request Lesson from Our Tutors tab → Centre Workspace (case.centre_id set, tagged tutor)
    • Same tutor standalone /en/tutors/... → individual tutor (case.centre_id null)

AC:


Slice 4 — Notes / Study Materials tab (P0)

Goal: Centre materials surface on channel; money path = existing goods rails only.

AC:


Slice 5 — Course Showcase — Enquire-only cards (P0)

Goal: Lead-gen course cards; zero Stripe for physical classes.

Add Course modal fields:

  • Title EN / 繁中
  • Curriculum + subject + target grade
  • Format: Small Group (Max N) | Intensive Bootcamp | 1-on-1 Centre Tuition | Admissions Consultation
  • Location/mode · schedule_summary ≤100 chars · price_display · optional Trial badge
  • Optional assigned_tutor_id (approved affiliate only)
  • ≤3 highlights ≤300 chars
  • Optional instruction_languages[]: English | Cantonese | Mandarin

CTA: Enquire / Reserve Seat → / 查詢/預留學位 →
→ Enquiry modal pre-filled course_id + centre_id · Who is this for? (Myself / My Child per #459)
→ Creates Centre Case Lead in Centre Workspace Inbox (notify Centre Admin + Concierge)
→ No Stripe

MUST NOT: Collect course tuition on-platform · seat inventory engine · multi-seat cart

AC:

  • Centre admin can add / edit / unpublish cards
  • Enquire submits structured lead to Centre Inbox with course title attached
  • No payment step on course CTA
  • Empty: No courses listed yet / 尚未列出課程 + [ + Add Course / Class ] for owner
  • Card grid desktop 3-col / mobile 1-col + reachable sticky enquire on mobile

Slice 6 — Staff workspace handoff (P0)

Goal: Day-1 ops without password sharing — wire Thin Channel leads into shipped #550.

AC:


Slice 7 — Empty states + bilingual polish pass (P0)

Goal: Pitch-safe empties; no cloneable “shop” implication.

Surface Empty EN Empty 繁中
Courses No courses listed yet 尚未列出課程
Our Tutors No affiliated tutors yet 尚未有合作導師
Materials No study materials yet 尚未有精讀筆記
Posts No posts yet 尚未有動態

AC:

  • Every tab has empty + loading skeleton + inline error where applicable
  • Owner Edit Mode shows add CTAs; public visitor sees soft empty (no broken admin buttons)
  • Channel footnote Cap.57/279 present on public view
  • Spot-check EN + 繁中 for activation, tabs, CTAs, Cap.57 subtitle, enquire modal

Product lock (ship vs parked)

Ship now (Thin Partner Channel) KEEP PARKED
60s activation + Cap.57/279/B2B checkbox #458 institutional cart / seat inventory / class tuition checkout
Public centre channel + tabs #413 vacancy / job / apply-to-centre SaaS
Course Showcase Enquire only #475 tutoring tuition escrow / Stripe Connect payouts
Our Tutors (approved affiliates) Full #530 Academy Ops ERP (calendar/packs/attendance) — later Managed
Notes tab via #543 goods rails Implying employment under Cap.57
Workspace handoff via #550 Complex multi-branch RBAC

Exact behaviour (detail — implement against slices)

A. Activation (Slice 1)

See Slice 1. Trigger: Partner as a Centre / Admin provisions Centre Workspace / Join Option 4 from #576.

B. Course Showcase (Slice 5)

Lead-gen only. Payment & enrolment happen directly with the centre under B2B introduction-fee agreement. Digital notes remain #543.

C. Our Tutors (Slice 3)

Mutually approved affiliations only; centre-tab vs standalone routing locked.


UI / UX wireframe (public channel)

+-----------------------------------------------------------------------+
| [Cover]  [Logo] Top Leader Education  [✓ Verified Partner Centre]   |
| @topleader · 📍 TST, Causeway Bay · [EDB Reg #… if verified]         |
|                               [ 💬 Enquire with Centre ]               |
+-----------------------------------------------------------------------+
| 📊 N Tutors | 🎓 N Courses | 📚 N Notes                                |
| Tabs: [Courses & Classes] [Our Tutors] [Study Materials] [Posts]       |
| Course card → [ Enquire / Reserve Seat → ]  ← NO Stripe                |
+-----------------------------------------------------------------------+

Exact copy (EN + 繁中)

  • Tabs: Courses & Classes / 課程及常規班 · Our Tutors / 導師團隊 · Study Materials / 精讀筆記 · Posts / 中心動態
  • Course CTA: Enquire / Reserve Seat → / 查詢/預留學位 →
  • Cap.57 subtitle: Verified independent educators and faculty affiliated with {Centre Name}. / 與 {Centre Name} 合作之認證獨立導師及教學團隊。
  • Footnote: Partner Centre listings are operated independently by the respective institution. Affiliated tutors operate as independent educators. / 合作教育中心之課程由該機構獨立營辦;所列導師均以獨立教育工作者身份合作。

Logic & edge cases

Case Expected
Centre sells PDF notes / mocks #543 Materials tab (Stripe 2% + 72h)
Centre lists in-person class Enquire lead-gen only (no Stripe)
Affiliate revoked Drop from Our Tutors; clear assigned_tutor_id on cards
Enquire from Our Tutors Centre Workspace + tutor tag
Book same tutor from /tutors Individual tutor case
EDB entered, not staff-verified Stored; pill hidden
Centre under Cap.279 small-class limits Allowed with checkbox warrant; still no on-platform class tuition

Implementation notes


Acceptance criteria (roll-up)


Out of scope (explicit)


Test plan (Denise)

  1. Activation: Complete thin sheet with policy checkbox → channel live Edit Mode
  2. Course enquire: Add IBDP Chem HL card → Parent Enquire for child → lead in Centre Inbox, no Stripe
  3. Affiliation: Approve tutor → Our Tutors Cap.57 subtitle → Request Lesson → Centre Inbox
  4. Standalone: Same tutor /tutors request → individual, not centre
  5. Materials: Publish note as Centre → Materials tab → materials checkout path only
  6. Staff: Invite admin → Workspace Mode sees course lead
  7. EDB: Enter reg no. → hidden until staff verify
  8. Mobile + 繁中: Grid + sticky enquire + locale strings

Thin Partner Channel secures B2B supply for outreach without unparking the institutional shop. Reuses #412 join, #548 channel, #550 workspace, #543 materials, #256–#258 case intent via #412.

Activity

  1. owlstonbusiness-svg commented on Nov 2, 2026

    @owlstonbusiness-svg
    CollaboratorAuthor

    Jarvis · SoT refine (2026-11-02 HKT)

    Canonical Thin Centre Channel ticket (parent #548). Exact twin #578 closed as duplicate — implement once here.

    Locked alignment

    • Cap.57 independent educators + Cap.279 / Reg.62: lead-gen course cards only — no on-platform physical-course tuition collection (keeps #458 parked).
    • Digital notes on centre channels still use #543 / #573 (Option A 2% + 72h hold).
    • Our Tutors = mutually approved #548 affiliations; centre-tab Request → Centre Workspace; standalone /tutors → individual 1.5-lesson case.
    • Open questions in body are resolved: schedule_summary 100, highlights 300, multi-location free-text V1, EDB pill = existing admin verify.

    Cross-links

    • Join Option 4 routes here from #576.
    • Centre case board/reveal stays in #583 / #582 under #552 — do not re-spec case fees here.

    No fee/escrow contradictions found.

  2. owlstonbusiness-svg commented on Nov 2, 2026

    @owlstonbusiness-svg
    CollaboratorAuthor

    Jarvis · Centre onboarding form audit (2026-11-02 HKT)

    CEO question: Does the centre form capture everything a centre must answer and everything MatchMax needs to streamline B2B matching / lead-gen?

    Verdict: NEEDS IMPROVE (thin sheet + 3 compliance fields from #412) — 60-second Thin Centre Channel stays the right product; Cap.279 lead-gen-only + Cap.57 independent-educator locks stay. Do not unpark #458 checkout. But the activation sheet as written drops a few fields that live /business/join (#412) already requires for EA-safe B2B ops.

    Field inventory

    Surface Collects Status
    60s Centre activation Name EN/繁中 · @slug · logo · districts/addresses · contact WA/email · BR · optional EDB · curricula/subjects tags · Cap.57+279+B2B fee checkbox ⚠️ Missing authorised rep + legal entity + org type (below)
    Course Showcase card Title EN/繁中 · curriculum/subject/grade · format · location/mode · schedule (≤100) · price display · trial · optional affiliated tutor · ≤3 highlights (≤300) ✅ Enough for parent enquire
    Enquire modal course_id/centre_id · Who is this for? (Myself / Child per #459) ✅ Lead-gen only — no Stripe
    Our Tutors Mutually approved #548 affiliations · Cap.57 subtitle · centre-tab vs standalone routing ✅

    Gaps ranked

    1. Authorised representative name + role (HIGH) — already required on live #412 /business/join (rep_name, rep_role). Ops / compliance need a named human for Cap.57 triage and B2B fee chase. Must be on the thin sheet.
    2. Legal entity name (HIGH) — public listing name ≠ BR legal name. Keep both: public/listing name (channel header) + legal_entity_name (staff-only / verify). Align with [Compliance / B2B] Extend centre partnership (#251/#256–258): 3-step EA-safe triage, BR org fields, COMPLIANCE_HOLD, How-it-works Partners tab #412.
    3. Org type (MEDIUM) — tutorial_centre | day_school | ngo (same enum as [Compliance / B2B] Extend centre partnership (#251/#256–258): 3-step EA-safe triage, BR org fields, COMPLIANCE_HOLD, How-it-works Partners tab #412). Drives Cap.279 expectations and desk macros; one Select, not a long form.
    4. Course instruction language (LOW) — optional multi on course card (English / Cantonese / Mandarin) so parent enquire + centre case board ([Feature · V1] Distinguish Private, Centre, and Activity/Gig case types on cases board #583) can filter. Not a publish blocker for the centre channel itself.
    5. Billing / invoice contact (LOW / Stage-later) — default to authorised rep + WA/email for V1. Separate finance contact only if centres ask.
    6. Structured multi-campus — already locked free-text V1. Do not expand.

    Adopted activation-sheet deltas (eng AC)

    Parent / centre-case side

    Parent answers for a centre course = Enquire modal (who-for) + later centre case board fields in #582 / #583 — not a second Join form. Private parent matching intake remains the shipped #466 / #423 case wizard (good enough).

    No new epic. Tutor-side companion → #576.

  3. changed the title [-][Feature · V1] Thin Centre Channel: 60-Second Centre Onboarding, Course Showcase Cards, Our Tutors Tab & Cap.57/279 Policy Locks[/-] [+][Feature · V1] Thin Partner Channel: Denise ship checklist — 60s centre onboard, Enquire-only courses, Cap.57 locks[/+] on Nov 2, 2026
  4. owlstonbusiness-svg commented on Nov 2, 2026

    @owlstonbusiness-svg
    CollaboratorAuthor

    CEO-approved · Denise ship checklist landed (2026-11-03 HKT)

    Body rewritten for implement-from-issue. No new sibling ticket (GitHub Issue Integrator). Twin #578 stays closed duplicate.

    Ordered P0 slices

    1. Smoke wire shipped bases — #412 join · #548 channel · #550 workspace · #543 materials · centre cases via [Compliance / B2B] Extend centre partnership (#251/#256–258): 3-step EA-safe triage, BR org fields, COMPLIANCE_HOLD, How-it-works Partners tab #412/# Issue C1 — Centre student case #256–# Issue C3 — Centre block on the guide #258
    2. 60s activation + Cap.57 / Cap.279 / B2B checkbox (+ [Compliance / B2B] Extend centre partnership (#251/#256–258): 3-step EA-safe triage, BR org fields, COMPLIANCE_HOLD, How-it-works Partners tab #412 fields: legal entity, rep, org_type)
    3. Public channel polish (/en/business/[slug])
    4. Our Tutors affiliations tab + Cap.57 subtitle + centre-tab vs /tutors routing
    5. Notes / Materials tab (goods rails only — 2% + 72h)
    6. Course Showcase Enquire-only cards (lead → Centre Inbox; no Stripe)
    7. Staff workspace handoff into [Feature · V1] B2B Centre Workspace: Multi-Staff Access, Role-Based Leads Routing & Context Switcher #550 inbox
    8. Empty states + EN/繁中 polish

    Definition of done (outreach)

    Founder can pitch: Free Partner Centre → channel · Notes · affiliated tutors · centre cases / tutor obtain · Cap.57 locks · course cards = Enquire only — not a tuition shop.

    Explicit out of scope (do not unpark)

    #413 vacancy SaaS · #458 institutional cart · #475 tuition escrow/payouts · full #530 Academy Ops ERP (later Managed).

    Denise: implement slices 0→7 in order; ACs live in issue body.

  5. owlstonbusiness-svg commented on Nov 2, 2026

    @owlstonbusiness-svg
    CollaboratorAuthor

    Phase 0 → Phase 1 roadmap link (do not expand this issue’s P0 checklist)

    #577 remains Enquire-only Thin Partner Channel (no Stripe tuition cart; Cap.57/279 locks unchanged).

    After soft-launch supply is live, Phase 1 single-player wedge is filed under Academy Ops — not as a rewrite of this issue:

    MUST NOT treat #612 as unparking full #530 ERP. Stripe seat cart / #413 vacancy / #475 tuition rails stay parked.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    urgentGood for newcomers

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions