Skip to content

Spec: MVP — Individual & Team Nominations

Spec: MVP — Individual & Team Nominations

Section titled “Spec: MVP — Individual & Team Nominations”
FieldValue
ModuleGospl Platform (People — Recognition)
SourceWalkthrough — June 2026
StatusAmber — new functionality + enhancements. Acceptance criteria + clarifications added by Claude, awaiting owner sign-off.
OwnerPeople Team (Sarah)
Contract/contracts/people/mvp-nominations.yaml
Design linkTBD — homepage entry point + MVP page (Q2)

Worked the same way as personal-page.md: source body preserved, Claude added §A Acceptance Criteria & Build Status, §B Data Model Stub, and a consolidated §C Clarifications (the spec’s Q1–Q7 plus gaps it doesn’t name). US IDs are the join key across spec ↔ contract ↔ test ↔ wiki.


A dedicated MVP area consolidating individual and team recognition into one accessible experience, replacing the buried/disconnected belief-wall + MVP nominations in the legacy OS. Two award types: Individual MVP (monthly) and Team MVP (monthly, earlier deadline). Driving principles: visibility (prominent from homepage), simplicity (short nomination journey), personalisation (each user sees own history), insight (People Team reporting now; AI trend analysis Phase 2).

IDStory
US-01Employee nominates a colleague for Individual MVP.
US-02Employee nominates a team for Team MVP.
US-03Employee sees who currently holds Individual and Team MVP crowns.
US-04Employee sees all their past MVP nominations in one scrollable view.
US-05Employee sees a countdown to the nomination deadline.
US-06Nomination button disappears once submitted for the month (no double-nominate).
US-07Employee receives confirmation on submit.
US-08People Team sees a live report of who has not yet nominated this month.
US-09People Team exports nomination data by month (Individual and Team separately).
US-10People Team exports nomination data for the full year.
US-11People Team exports all nominations for a specific individual.
US-12People Team gets AI-generated insights on nomination trends. (Phase 2 — out of scope now.)

3. Functional Requirements (source summary)

Section titled “3. Functional Requirements (source summary)”
  • 3.1 MVP page & nav — reachable from homepage via signposted entry (card/nav item). Page shows: current Individual holder (name, photo), current Team holder (team + members), nomination CTA(s) when the user hasn’t yet nominated this month, and the user’s own Individual+Team nominations as a scrollable feed (most recent first, no filtering).
  • 3.2 Individual nomination — simplified form (drop the two scored questions): nominee (required, employee select), reason (required free text), submit, cancel. On submit: inline confirmation; CTA hides for the rest of the window, returns next month. Countdown (“X days to nominate”); closes last working day of month; countdown disappears when the window closes.
  • 3.3 Team nomination — replaces the existing Google Form: team name (required free text), team members (required multi-select of employees, standardised name format), reason (required free text), submit, cancel. (Removed: “are you part of this team?”.) Inline confirmation; CTA hides for the rest of the window. Separate, earlier deadline (~1 week before month end, exact TBD — Q1); separate countdown; the two deadlines clearly distinguished.
  • 3.4 Reporting (People Team only) — 3.4.1 Outstanding Nominators (real-time, who hasn’t nominated this month) Essential; 3.4.2 Monthly export Individual (pick month/year, CSV) Essential; 3.4.3 Monthly export Team Essential; 3.4.4 Annual export (Individual and/or Team, full year) Essential; 3.4.5 Export by individual (per-employee) Nice to Have — only if low effort.
  • 3.5 AI insights (Phase 2) — trend ID, anomaly flagging, recognition gaps, monthly AI insight report. Out of scope for build now; design data to enable it later.

Reduce click depth (fewest steps to nominate); self-explanatory entry points/labels; inline confirmation (no redirect); countdown visible without opening the form; usable on mobile.


buildable now = build against the mock today. blocked: Qx = frontend buildable on the mock; logic/integration waits on the clarification.

RefAcceptance criterion (test tagged to this ID)Status
US-01 / 3.2.1A logged-in employee can submit an Individual nomination with a selected nominee + non-empty reason; empty required fields block submit with inline validation.buildable now
US-02 / 3.3.1An employee can submit a Team nomination with team name + ≥1 selected member + non-empty reason; the “part of team?” question is absent.buildable now
US-03 / 3.1The MVP page shows the current Individual holder (name, photo if present) and current Team holder (team name + members) for the current period.blocked: G2 (no mechanism defined for setting the winner)
US-04 / 3.1The page lists the viewer’s own Individual + Team nominations, newest first, scrollable, no filter control.buildable now
US-05 / 3.2.3 / 3.3.3Two distinct countdowns render — Individual (to last working day) and Team (to the earlier deadline) — each labelled so the user can tell them apart; each disappears when its window closes.blocked: Q1, G1 (Team date; working-day calendar)
US-06 / 3.2.2 / 3.3.2After a user submits for an award type this month, that award’s CTA is hidden for the rest of its window and reappears at the start of the next month. Enforced server-side: a second submit for the same user/award/month is rejected.buildable now (rule: see G3)
US-07On successful submit, an inline confirmation state is shown in-page (no redirect, no email dependency).buildable now
US-08 / 3.4.1A People Team user sees a real-time list of employees with no nomination submitted for the current month; non–People-Team users get 403.blocked: Q4, Q5 (access role; employee source)
US-09 / 3.4.2-3A People Team user exports Individual or Team nominations for a chosen month/year as CSV; columns defined; respects anonymity rule (Q6).blocked: Q6
US-10 / 3.4.4A People Team user exports all nominations (Individual and/or Team) for a chosen year as CSV.blocked: Q6
US-11 / 3.4.5(Nice-to-have) A People Team user exports all nominations received by a chosen employee.deferred unless low-effort
US-12 / 3.5AI insights.Phase 2 — out of scope now
EntityOwnerFields (indicative)Notes
NominationGosplid, tenantId, type(individual|team), period(YYYY-MM), nominatorUserId, reason, createdAtOne per (nominator, type, period) — see G3. nominatorUserId visibility governed by Q6.
↳ Individual nominationGospl+ nomineeUserIdNominee from the employee directory (Q5).
↳ Team nominationGospl+ teamName(free text), memberUserIds[]Members multi-select from directory (Q5); name format standardised.
MVP Award (winner)GospltenantId, type, period, winnerUserId | winningTeamNot covered by the spec — how the winner is chosen/recorded is undefined (G2).
Employee directoryGospl People arearead-only hereSource for nominee/member pickers (Q5). Likely the same User entity as Personal Page §B.
Deadline configGospltenantId, type, ruleIndividual = last working day; Team = TBD (Q1). Needs a working-day calendar (G1).

Tenancy/permission: all nominations and reports are tenant-scoped. Reporting endpoints restricted to the People Team role (Q4) — maps to an elevated/admin role pending the permission model (principles.md PR-06). AI insights data: store nominations structured + timestamped now so Phase 2 trend/anomaly analysis is possible later — no vector store needed for this feature.

Blocking (gate specific build work):

  • Q1 — Team MVP exact close date (~1 week before month end). Gates the Team countdown (US-05) and the submission window. → Sarah.
  • G1 — “Last working day” definition. Working-day calendar: exclude weekends + which holidays (UK bank holidays? company closure days)? Per-tenant? The Individual countdown is wrong without this. → Sarah / config decision.
  • G2 — Who sets the MVP winner? The spec shows the current holder (US-03/3.1) but no requirement for selecting/recording the winner. Is it a People Team action in Gospl, or set elsewhere? Without it, US-03 has no data source. → Sarah. (Recommend a small People-Team “set winner per period” action; otherwise the crown is never populated.)
  • G3 — Nomination cardinality. One Individual + one Team nomination per user per month (independent), confirmed? US-06 implies per-award; state it explicitly so the server rule and the CTA-hide logic are unambiguous. → Sarah.
  • Q4 — People Team access: role-based or named list? Gates reporting authorisation (US-08–11) and ties to PR-06. → Sarah.
  • Q5 — Employee directory source for the nominee dropdown + team-member multi-select: the Gospl user directory? Same User entity as Personal Page? How maintained? Gates the pickers + standardised names. → confirm source.
  • Q6 — Anonymity / visibility of nomination content. Anonymous to other employees? to the nominee? Visible to People Team? This drives the data model, the page feed, and CSV export columns. Highest-leverage open question. → Sarah.

Non-blocking (proceed on a stated assumption, confirm in parallel):

  • Q2 — Homepage entry point design (card/nav). Assumed a prominent homepage element exists; build CTA + MVP page now, wire the entry point when design lands. → design team.
  • Q3 — Own vs shared nominations view. Assumed own only (matches walkthrough). Confirm if a social/shared view is wanted (would expand scope + interact with Q6).
  • Q7 — Phase 1 vs Phase 2 scope. Assumed all §3.4 reporting is Phase 1, AI (§3.5) is Phase 2. Confirm. → Sarah.

AI insights layer (§3.5 / US-12) — Phase 2. Selection/announcement workflow beyond recording the winner (G2) unless confirmed. Email/push notifications (confirmation is inline per US-07).