Spec: Personal Page (+ Role Page)
Spec: Personal Page (+ Role Page)
Section titled “Spec: Personal Page (+ Role Page)”| Field | Value |
|---|---|
| Area | People — Individual Profile & Personal Pages |
| Source | Verbal walkthrough — 2026-06-09 |
| Status | Draft — acceptance criteria added by Claude, awaiting owner sign-off |
| Owner | Sarah |
| Reviewer | Sarah |
| Contract | /contracts/people/personal-page.yaml |
| Design link | TBD — Figma/screenshot ref (FR-23 gate) |
This is the worked example of the contract-first pipeline (see
docs/operating-model.md). Sarah’s original spec body is preserved; Claude has added §A Acceptance Criteria & Build Status and §B Data Model Stub. The US/FR IDs are the join key across spec ↔ contract ↔ test ↔ wiki.
1. Overview
Section titled “1. Overview”Redesign of the Personal Page within Gospl — a profile view any employee can access for themselves or a colleague via the People Directory. Carries usability, data-entry, and information-architecture problems from the legacy OS. Also covers the Role Page — a companion view confirming team, reporting line, and current role description.
2. Problem Statement
Section titled “2. Problem Statement”- 2.1 Content truncated/unreadable. Insights text fields (Key Strengths, Blind Spots, Communication Do’s/Don’ts) capped at a fixed display length; users see half-sentences with no way to the full text.
- 2.2 Data entry slow and manual. An admin (Lucy) hand-copies sections from the Insights PDF into back-end form fields. No bulk import, no PDF parsing. Mojo Motivators data is also entered manually, lagging the source.
- 2.3 Low-value / legacy content. Core Values has no process or design intent behind it. Personal Information is a legacy carry-over duplicating HomeRun (HRIS) data, creating GDPR/infosec risk.
3. Goals & Non-Goals
Section titled “3. Goals & Non-Goals”Goals: full visibility of Insights content; reduce admin burden (ideally parse the Insights PDF); auto/semi-auto pull of Motivators from Mojo; surface Mojo AI insights with access controls; remove Core Values + Personal Information; make Weekly Goals prominent and actionable; quick-links to high-frequency tools; keep Role Page functional.
Non-Goals: full layout redesign beyond what’s in progress with design; new profile sections/data types not in the walkthrough; building a new Core Values feature (deferred); moving/replacing HomeRun as the system of record for personal/HR data.
4. User Stories
Section titled “4. User Stories”| ID | User Story |
|---|---|
| US-01 | As a team member, view my full Insights profile without truncation. |
| US-02 | As a team member viewing a colleague, see their complete Insights communication preferences. |
| US-03 | As a team member, see my Motivators pulled automatically from Mojo. |
| US-04 | As a team member viewing my own profile, access Mojo’s AI-generated insights. |
| US-05 | As a team member, click through to the full Insights PDF. |
| US-06 | As a team member, see a summary of my Weekly Goals with a link to manage them. |
| US-07 | As a team member, access quick links to HomeRun, Weekly Summary, Annual Development Plan, Training Plans. |
| US-08 | As an administrator, upload an Insights PDF and have the correct sections populate the form fields. |
| US-09 | As a team member viewing a colleague, see their Motivators without their private Mojo AI insights. |
| US-10 | As a team member, view my role description, team, and reporting line on my Role Page. |
5. Functional Requirements (priority preserved from source)
Section titled “5. Functional Requirements (priority preserved from source)”Insights display: FR-01 full text no truncation (M); FR-02 “View Full Profile” link to PDF (M); FR-03 colour wheel + preferences remain, review contrast (M); FR-04 summary percentages visible (M). Admin data entry: FR-05 upload Insights PDF, auto-populate sections (M); FR-06 fallback accept full paste with no truncating char limits (M); FR-07 review admin interface efficiency (S). Mojo: FR-08 pull Motivators via API not manual (M); FR-09 own-profile AI insights surfaced (S); FR-10 colleague view shows summary only, not AI insights (M); FR-11 elevated perms may see others’ AI insights, model TBD (S). Weekly Goals: FR-12 summary on Personal Page (M); FR-13 link to full goal-management view (M); FR-14 greater visual prominence (S). Quick Links: FR-15 section linking HomeRun, Weekly Summary, ADP, Training Plans (M); FR-16 visible without a dropdown (M); FR-17 configurable set (Nice). Content removal: FR-18 remove Core Values (M); FR-19 remove Personal Information
- sub-tabs, not duplicated in Gospl per GDPR (M → promoted to
principles.md). Role Page: FR-20 recreate showing role description, team, reporting line (M); FR-21 improve over ‘clunky’ current design (S); FR-22 Gospl stores only name, team, reporting line, job title (M → promoted toprinciples.md). Design/nav: FR-23 designs signed off by Sarah before dev (M).
6. Open Questions (build-relevant)
Section titled “6. Open Questions (build-relevant)”- OQ-01 Mojo API available/production-ready? → blocks FR-08/09/11.
- OQ-02 Mojo AI insight visibility per user type → permission model. → blocks FR-11.
- OQ-03 Can the Insights PDF be parsed (structured vs image)? → blocks FR-05.
- OQ-06 Does Personal Information need a migration/deletion plan before removal?
- OQ-07 Final quick-links list for initial release.
7. Out of Scope
Section titled “7. Out of Scope”Core Values feature (deferred); Personal Information section (removed, ownership stays with HomeRun); performance/training/goal-setting pages (separate spec); any change to the Insights provider relationship or PDF format.
§A. Acceptance Criteria & Build Status (added by Claude — awaiting sign-off)
Section titled “§A. Acceptance Criteria & Build Status (added by Claude — awaiting sign-off)”Each Must-Have FR gets a verifiable done-condition and a build status. Status is
buildable now, or blocked: OQ-xx. Blocked FRs can have the frontend built against
the mock contract; only the live integration waits.
| FR | Acceptance criterion (test the FR ID is tagged to) | Status |
|---|---|---|
| FR-01 | Given an Insights field of 2,000+ chars, the profile renders the full text with no clamp, no ellipsis, no fixed-height scroll-trap; full content is reachable by reading/scrolling the page. | buildable now |
| FR-02 | A “View Full Profile” control is present and resolves to the user’s complete Insights PDF; opens/downloads successfully for an authorised viewer. | buildable now |
| FR-03 | The Insights colour wheel and colour preferences render on the page; computed text-on-background contrast meets WCAG AA (≥4.5:1 for body text). | buildable now |
| FR-04 | Insights summary percentages are visible on the page and match the stored values. | buildable now |
| FR-05 | Given a supplied Insights PDF, the admin import populates Key Strengths, Blind Spots, Communication Do’s/Don’ts, and summary into the correct fields with no manual field-mapping; admin confirms before save. | blocked: OQ-03 |
| FR-06 | The admin back end accepts a full paste of each section with no character limit that truncates stored or displayed content. | buildable now |
| FR-08 | Motivators data displayed on the profile is fetched from Mojo via API (not manual entry); a stale-data indicator shows last-synced time. | blocked: OQ-01 |
| FR-10 | When viewer ≠ profile owner and viewer lacks elevated perms, the response contains the Motivators summary and omits the AI insights field entirely (not just hidden client-side). | buildable now (enforced in contract) |
| FR-12 | The Personal Page shows the owner’s current Weekly Goals summary; counts/labels match the goals service. | buildable now |
| FR-13 | A control links from the Weekly Goals summary to the full goal-management view for that user. | buildable now |
| FR-15 | A Quick Links section links to HomeRun, Weekly Summary, Annual Development Plan, Training Plans; each link resolves to the correct destination. | buildable now (OQ-07 finalises list) |
| FR-16 | All quick links are visible on the page without opening a dropdown/overflow menu. | buildable now |
| FR-18 | The Core Values section does not render anywhere on the Personal Page. | buildable now |
| FR-19 | The Personal Information section and all sub-tabs are absent from Gospl; no endpoint returns personal/HR data beyond §B’s allowed fields. | buildable now (see principles.md) |
| FR-20 | The Role Page renders the user’s role description, team, and reporting line, sourced correctly. | buildable now |
| FR-22 | Gospl persists only name, team, reporting line, job title for a user; a schema/contract check fails if any other personal field is stored. | buildable now (see principles.md) |
| FR-23 | Design sign-off from Sarah is recorded (design link populated above) before page-level dev starts. | gate, not code |
Should-Have / Nice-to-Have (FR-07, FR-09, FR-11, FR-14, FR-17, FR-21) carry criteria once their Must-Have base is in and OQ-01/OQ-02 resolve the permission model.
§B. Data Model Stub
Section titled “§B. Data Model Stub”Entities this page touches. Gospl owns only the minimal user record; other systems own the rest and Gospl reads via contract.
| Entity | Owner | Gospl stores | Notes |
|---|---|---|---|
| User (core) | Gospl | name, team, reportingLineId, jobTitle only | FR-22 / principles.md data-minimisation rule. |
| Personal/HR data | HomeRun | nothing | FR-19 — never duplicated into Gospl. |
| Insights profile | Insights provider (via admin import) | text sections, colour wheel, percentages, PDF ref | FR-01/04/05. |
| Motivators + AI insights | Mojo (via API) | cache + last-synced ts; AI insights access-gated | FR-08/09/10/11. |
| Weekly Goals | Spine (actions→outcomes) | reference only; summary read from goals service | This is the page’s hook into the core graph. Page links to spine entity IDs, does not redefine them. |
| Role / org position | Gospl (org chart) | role description, team, reporting line | FR-20/21. |
Tenancy/permission (contract requirements, owner-of-DB TBD): every entity is tenant-scoped; the profile read is viewer-aware — the server decides which fields a given viewer (self / colleague / manager / admin / elevated) receives, and AI insights are omitted server-side for unauthorised viewers (FR-10). Whether this is enforced by our RLS or the external team’s implementation depends on the backend-ownership decision; either way it is specified here and verified by contract test.