Repository navigation
Description
Related hub (2026-11-03): Case type chips ship in the Case Manager surface family — Explore nav Manage / 管理 (#594) + content epic #632. Do not invent a separate calendar product.
[Feature · V1] Distinguish Private, Centre, and Activity/Gig case types on cases board
Priority: V1 — Must NOT block existing tutor case applications on standard private cases.
Owner: Unknown (assign during triage)
Depends on / related real issues: Related to #552 (Case Marketplace redesign), #508 (Centre 6-month retained-only ladder), #464 & #444 (tutor-pays admin fee lock), #469 (ToS §15), #255 (phone/review gate)
1. Problem
On the cases board and case detail views, all cases currently sit together without visual or filterable distinction between private parent/student requests, partner centre requests, and non-academic educational activities/gigs. Tutors cannot immediately tell what type of work, reveal rules, or tutor-pays admin fee structure applies before claiming a case. Code path: locate during implementation.
2. Product lock
| Ship now | Park |
|---|---|
| Case type taxonomy & badges on case cards and case detail pages: Private, Centre, Activity / Gig | Self-serve centre portal for automated centre case management |
Case type filter on the cases board (All, Private, Centre, Activity / Gig) |
Automated Stripe Connect / Collect Tuition tools (#475) |
| Prominent fee & payer context on the case detail page reflecting the locked tutor-pays model (#464 / #444 / #508 / #469) | — |
3. Exact behaviour (how it works)
- Triggers: Any user (tutor, educator, or visitor) viewing the cases board page or opening an individual case detail page.
- Step-by-step numbered flow:
- User navigates to the cases board.
- At the top of the cases board, user sees a case type filter (
All,Private,Centre,Activity / Gig). Default isAll. - Every case card in the list displays a prominent badge indicating its type:
Private,Centre, orActivity / Gig. - For
Centrecards on the public board (Stage 1), only centre type, rough district, subject/level, rate range, and"Verified Centre Partner"(or opted-in light public name) are shown. - Selecting a type filter updates the board to show only cases matching that type (combinable with existing subject/curriculum/location filters).
- Clicking a case card opens the case detail page, which prominently displays the case type badge and the corresponding locked fee structure rule (where parent/centre pays tuition directly to the tutor, and the self-employed tutor pays MatchMax the admin fee):
- Private: Parent/student request — Parent pays tutor directly; tutor pays MatchMax standard
1.5-lessonadmin fee (or20%short-case fee) ([Track] Fee Model — Tutor-Pays 1.5 / Short-Case 20% / ToS Align #464 / [Legal · Track #464] ToS §15 admin-fee payer = tutor (align CEO #412/#443) #444). - Centre: Partner centre request — Centre pays tutor directly; tutor pays MatchMax on the 6-month retained-only step-down ladder (
1.5→1.0→0.5→$0for 4th+ within 180 days;$0after Day 180) ([Fee · #464 · Urgent] 6-Month Ownership Boundary + Retained-Only + Drop floor #508). - Activity / Gig: Non-tutoring educational work (talks, workshops, sports, music, etc.) — Client pays host/educator directly; host/educator pays MatchMax admin fee.
- Private: Parent/student request — Parent pays tutor directly; tutor pays MatchMax standard
- Data in / data out / side effects:
- Data in: Case type filter parameter on cases list query; case type field on case records.
- Data out: Filtered case list; case type badge and tutor-pays fee rule copy on card and detail view.
- Rules:
- Every case on the board and detail page MUST display exactly one primary case type badge (
Private,Centre, orActivity / Gig). - Existing cases without a type value MUST safely default to
Privateso legacy parent/student cases do not break. - Copy on cards and detail pages MUST NOT state or imply that parents or centres pay MatchMax; it MUST reflect ToS §15 (ToS §15: admin-fee payer = self-employed tutor (CEO lock #412/#443) + fee-2026-10-v2 re-gate #469) that the parent/centre pays tuition directly to the tutor and the tutor pays MatchMax the admin fee.
- Every case on the board and detail page MUST display exactly one primary case type badge (
4. UI / UX (how it looks and where it lives)
- Placement: Cases board filter bar, each case card on the cases board, and the header/summary section of the case detail page (desktop and mobile).
- Wireframe (ASCII):
Cases Board Filter Bar: [ All Cases ] [ Private ] [ Centre ] [ Activity / Gig ] Case Card (Private): +-------------------------------------------------------+ | [Private] HK$300/hr · Kowloon | | DSE Chemistry Private Tuition | | Direct tuition from parent · 1.5-lesson tutor fee | | [ View Case ] | +-------------------------------------------------------+ Case Card (Centre - Stage 1): +-------------------------------------------------------+ | [Centre] Verified Centre Partner HK$280/hr · MK | | DSE English Small Group Class (S5) | | Direct pay from centre · 1.5 -> 1.0 -> 0.5 -> $0 fee | | [ View Case ] | +-------------------------------------------------------+ - Component states:
- Empty (filtered): When a filter (e.g., Centre or Activity / Gig) has 0 open cases, show an empty state with a "Reset filter" button.
- Loading: Existing board loading skeleton.
- Error: Existing board error state.
- Success: Cards rendered with distinct colour/style badges per case type.
- Exact copy (English + 繁中):
- Type 1 Badge: Private / 私人補習
- Type 2 Badge: Centre / 教育中心
- Type 3 Badge: Activity / Gig / 活動 / 講座
- Open question: Confirm the exact English and 繁中 helper text for the fee rules shown on Private, Centre, and Activity / Gig case detail pages.
5. Logic & edge cases
| Case | Expected behaviour |
|---|---|
| Legacy cases in DB without a type | Fallback/default to Private in both badge rendering and filter matching. |
| Low supply in Centre or Activity / Gig | Selecting a filter with zero active cases shows a clean empty state with one-click filter reset. |
| Combined filters | Selecting Centre + a Subject filter returns only cases matching both criteria. |
| Mobile vs desktop | Type filter pills scroll horizontally or wrap cleanly on narrow mobile screens; badge on card does not truncate the case title. |
| Self-booking | Existing self-booking prevention rules remain enforced regardless of case type. |
6. Implementation notes
- Coordinate with [Bug+UX · V1] Case Marketplace redesign — wide 3-col cards + 2-col detail (Gemini / #423) #552 (Case Marketplace redesign) so card layout and badge placement match.
- Locate existing cases board component and case schema during implementation.
- Preserve existing [Fee · #464 · Urgent] 6-Month Ownership Boundary + Retained-Only + Drop floor #508 step-down fee structure logic for centres and [Track] Fee Model — Tutor-Pays 1.5 / Short-Case 20% / ToS Align #464 / [Legal · Track #464] ToS §15 admin-fee payer = tutor (align CEO #412/#443) #444 1.5-lesson / 20% short-case fee logic for private cases.
7. Acceptance criteria
- Cases board displays filter options for Private, Centre, and Activity / Gig.
- Every case card on the cases board shows its type badge (Private, Centre, or Activity / Gig).
- Case detail page displays the case type badge and corresponding tutor-pays fee structure information prominently before the claim action.
- Filtering by each case type returns only matching cases (and legacy untyped cases appear under Private).
- Verified on both desktop and mobile in English and 繁中.
8. Out of scope
- Building the full self-serve centre case posting dashboard.
- Changing the underlying mathematical formula for the 1.5-lesson fee or [Fee · #464 · Urgent] 6-Month Ownership Boundary + Retained-Only + Drop floor #508 centre step-down fee.
9. Test plan
- Seed or locate one Private case, one Centre case, and one Activity / Gig case on staging.
- Open the cases board as a tutor; verify all three appear under All with distinct badges.
- Click each type filter (Private, Centre, Activity / Gig) and verify only the matching case type remains visible.
- Click into the detail page for each of the three cases and verify the type badge and tutor-pays fee note are visible above the claim CTA.
Activity
[-]Updated Issue 2 (with locked tutor-pays & #508 / #464 / #444 / #255 rules baked in)[/-][+][Feature · V1] Distinguish Private, Centre, and Activity/Gig case types on cases board[/+]owlstonbusiness-svg commentedon Nov 2, 2026
Jarvis · SoT refine (2026-11-02 HKT)
Nested under parent #552 (Case Marketplace redesign). Pair with sibling #582 for Centre reveal/gating.
Locked alignment
1.5 → 1.0 → 0.5 → $0within 180d.Needs CEO decision (do not invent)
Badge + board filter AC otherwise ship-ready.
owlstonbusiness-svg commentedon Nov 2, 2026
SoT lock — Activity/Gig admin fee (CEO via Jarvis)
PARK a Gig-specific / Activity-specific admin fee for V1. Do not invent a flat HKD fee.
Interim (only if an Activity/Gig case ships before the Activities epic settles): temporarily reuse Private case fee SoT:
When Activities epic lands, revisit a dedicated fee — until then, no new fee model.
Refs: Cap.57, Private case fee SoT; centre badges parent #552
owlstonbusiness-svg commentedon Nov 2, 2026
PARK (partial) — year-1 academics / Tutor naming (CEO 2026-11-02 Asia/Hong_Kong)
PARK
KEEP (academic / B2B tuition)
Prefer packing the Activity/Gig slice as parked rather than closing useful centre/private board work.
Year-1 SoT: #594.
owlstonbusiness-svg commentedon Nov 3, 2026
2026-11-03 Asia/Hong_Kong — CEO via Jarvis
Active Case profile cards (#632 / #633 / #634) MUST show Private / Centre / Gig type chips from this taxonomy; Centre cards include Cap.57 Zero Admin/Reception Duty badge.