Skip to content

[Feature · V1] Distinguish Private, Centre, and Activity/Gig case types on cases board #583

Open

Description

@owlstonbusiness-svg

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:
    1. User navigates to the cases board.
    2. At the top of the cases board, user sees a case type filter (All, Private, Centre, Activity / Gig). Default is All.
    3. Every case card in the list displays a prominent badge indicating its type: Private, Centre, or Activity / Gig.
    4. For Centre cards 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.
    5. Selecting a type filter updates the board to show only cases matching that type (combinable with existing subject/curriculum/location filters).
    6. 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):
  • 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, or Activity / Gig).
    • Existing cases without a type value MUST safely default to Private so 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.

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

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

9. Test plan

  1. Seed or locate one Private case, one Centre case, and one Activity / Gig case on staging.
  2. Open the cases board as a tutor; verify all three appear under All with distinct badges.
  3. Click each type filter (Private, Centre, Activity / Gig) and verify only the matching case type remains visible.
  4. 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

  1. changed the title [-]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[/+] on Nov 1, 2026
  2. owlstonbusiness-svg commented on Nov 2, 2026

    @owlstonbusiness-svg
    CollaboratorAuthor

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

    Nested under parent #552 (Case Marketplace redesign). Pair with sibling #582 for Centre reveal/gating.

    Locked alignment

    Needs CEO decision (do not invent)

    • Activity / Gig admin fee amount is underspecified ("host/educator pays MatchMax admin fee"). Confirm whether V1 reuses Private 1.5 / 20% short-case, a flat HKD, or parks Gig fee copy until #415 / Activities epic settles.

    Badge + board filter AC otherwise ship-ready.

  3. owlstonbusiness-svg commented on Nov 2, 2026

    @owlstonbusiness-svg
    CollaboratorAuthor

    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:

    • Tutor/host pays 1.5-lesson (or 20% short-case)
    • Same Cap.57 tutor-pays rails

    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

  4. owlstonbusiness-svg commented on Nov 2, 2026

    @owlstonbusiness-svg
    CollaboratorAuthor

    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.

  5. owlstonbusiness-svg commented on Nov 3, 2026

    @owlstonbusiness-svg
    CollaboratorAuthor

    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.

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