Spec: MVP — Individual & Team Nominations
Spec: MVP — Individual & Team Nominations
Section titled “Spec: MVP — Individual & Team Nominations”| Field | Value |
|---|---|
| Module | Gospl Platform (People — Recognition) |
| Source | Walkthrough — June 2026 |
| Status | Amber — new functionality + enhancements. Acceptance criteria + clarifications added by Claude, awaiting owner sign-off. |
| Owner | People Team (Sarah) |
| Contract | /contracts/people/mvp-nominations.yaml |
| Design link | TBD — 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.
1. Overview
Section titled “1. Overview”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).
2. User Stories
Section titled “2. User Stories”| ID | Story |
|---|---|
| US-01 | Employee nominates a colleague for Individual MVP. |
| US-02 | Employee nominates a team for Team MVP. |
| US-03 | Employee sees who currently holds Individual and Team MVP crowns. |
| US-04 | Employee sees all their past MVP nominations in one scrollable view. |
| US-05 | Employee sees a countdown to the nomination deadline. |
| US-06 | Nomination button disappears once submitted for the month (no double-nominate). |
| US-07 | Employee receives confirmation on submit. |
| US-08 | People Team sees a live report of who has not yet nominated this month. |
| US-09 | People Team exports nomination data by month (Individual and Team separately). |
| US-10 | People Team exports nomination data for the full year. |
| US-11 | People Team exports all nominations for a specific individual. |
| US-12 | People 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.
4. UX Considerations
Section titled “4. UX Considerations”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.
§A. Acceptance Criteria & Build Status
Section titled “§A. Acceptance Criteria & Build Status”buildable now = build against the mock today. blocked: Qx = frontend buildable on the
mock; logic/integration waits on the clarification.
| Ref | Acceptance criterion (test tagged to this ID) | Status |
|---|---|---|
| US-01 / 3.2.1 | A 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.1 | An 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.1 | The 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.1 | The page lists the viewer’s own Individual + Team nominations, newest first, scrollable, no filter control. | buildable now |
| US-05 / 3.2.3 / 3.3.3 | Two 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.2 | After 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-07 | On successful submit, an inline confirmation state is shown in-page (no redirect, no email dependency). | buildable now |
| US-08 / 3.4.1 | A 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-3 | A 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.4 | A 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.5 | AI insights. | Phase 2 — out of scope now |
§B. Data Model Stub
Section titled “§B. Data Model Stub”| Entity | Owner | Fields (indicative) | Notes |
|---|---|---|---|
| Nomination | Gospl | id, tenantId, type(individual|team), period(YYYY-MM), nominatorUserId, reason, createdAt | One per (nominator, type, period) — see G3. nominatorUserId visibility governed by Q6. |
| ↳ Individual nomination | Gospl | + nomineeUserId | Nominee from the employee directory (Q5). |
| ↳ Team nomination | Gospl | + teamName(free text), memberUserIds[] | Members multi-select from directory (Q5); name format standardised. |
| MVP Award (winner) | Gospl | tenantId, type, period, winnerUserId | winningTeam | Not covered by the spec — how the winner is chosen/recorded is undefined (G2). |
| Employee directory | Gospl People area | read-only here | Source for nominee/member pickers (Q5). Likely the same User entity as Personal Page §B. |
| Deadline config | Gospl | tenantId, type, rule | Individual = 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.
§C. Clarifications Needed
Section titled “§C. Clarifications Needed”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
Userentity 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.
Out of Scope (this build)
Section titled “Out of Scope (this build)”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).