Context
The audit's terminology sweep found the slot/session/call/meeting/appointment vocabulary leaking across layers. Buyers see "N calls per week" while shopping (app/explore/experts/[consultantId]/components/ExpertPricing.tsx:168) and "sessions" while attending; one sentence mixes meeting and session (EventTimingsCalendar.tsx:159); "slot" leaks to consultees at checkout (app/checkout/plans/consultation/[planId]/page.tsx:294, 508); validator errors use session, calls, and classes for the same concept. Roughly 30 strings carry most of the visibility. Internally, SlotLimits.maxSlots actually holds a SESSION count for subscriptions — a naming trap flagged during #998 review.
Proposed approach
Adopt the two-level canon from the audit: developers keep the schema vocabulary (slot = 30-minute atom, appointment = DB wrapper, plan, request, meeting = live call); end users only ever see "session", "time", the event-type names, "booking", and "spot" for waitlists. Ship a mechanical PR that rewrites the ~30 high-visibility strings (the allocationMessages.ts catalog centralizes many already) and renames SlotLimits.maxSlots to a session-count name. The callsPerWeek/meetingsPerWeek → sessionsPerWeek schema unification is a separate decision that must be made before the schema freeze.
Audit area 3; found alongside #998.
Context
The audit's terminology sweep found the slot/session/call/meeting/appointment vocabulary leaking across layers. Buyers see "N calls per week" while shopping (
app/explore/experts/[consultantId]/components/ExpertPricing.tsx:168) and "sessions" while attending; one sentence mixes meeting and session (EventTimingsCalendar.tsx:159); "slot" leaks to consultees at checkout (app/checkout/plans/consultation/[planId]/page.tsx:294, 508); validator errors use session, calls, and classes for the same concept. Roughly 30 strings carry most of the visibility. Internally,SlotLimits.maxSlotsactually holds a SESSION count for subscriptions — a naming trap flagged during #998 review.Proposed approach
Adopt the two-level canon from the audit: developers keep the schema vocabulary (slot = 30-minute atom, appointment = DB wrapper, plan, request, meeting = live call); end users only ever see "session", "time", the event-type names, "booking", and "spot" for waitlists. Ship a mechanical PR that rewrites the ~30 high-visibility strings (the
allocationMessages.tscatalog centralizes many already) and renamesSlotLimits.maxSlotsto a session-count name. ThecallsPerWeek/meetingsPerWeek→sessionsPerWeekschema unification is a separate decision that must be made before the schema freeze.Audit area 3; found alongside #998.