Skip to content

Spec: Personal Page (+ Role Page)

FieldValue
AreaPeople — Individual Profile & Personal Pages
SourceVerbal walkthrough — 2026-06-09
StatusDraft — acceptance criteria added by Claude, awaiting owner sign-off
OwnerSarah
ReviewerSarah
Contract/contracts/people/personal-page.yaml
Design linkTBD — 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.


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.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.

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.

IDUser Story
US-01As a team member, view my full Insights profile without truncation.
US-02As a team member viewing a colleague, see their complete Insights communication preferences.
US-03As a team member, see my Motivators pulled automatically from Mojo.
US-04As a team member viewing my own profile, access Mojo’s AI-generated insights.
US-05As a team member, click through to the full Insights PDF.
US-06As a team member, see a summary of my Weekly Goals with a link to manage them.
US-07As a team member, access quick links to HomeRun, Weekly Summary, Annual Development Plan, Training Plans.
US-08As an administrator, upload an Insights PDF and have the correct sections populate the form fields.
US-09As a team member viewing a colleague, see their Motivators without their private Mojo AI insights.
US-10As 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 to principles.md). Design/nav: FR-23 designs signed off by Sarah before dev (M).
  • 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.

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.

FRAcceptance criterion (test the FR ID is tagged to)Status
FR-01Given 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-02A “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-03The 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-04Insights summary percentages are visible on the page and match the stored values.buildable now
FR-05Given 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-06The admin back end accepts a full paste of each section with no character limit that truncates stored or displayed content.buildable now
FR-08Motivators 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-10When 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-12The Personal Page shows the owner’s current Weekly Goals summary; counts/labels match the goals service.buildable now
FR-13A control links from the Weekly Goals summary to the full goal-management view for that user.buildable now
FR-15A 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-16All quick links are visible on the page without opening a dropdown/overflow menu.buildable now
FR-18The Core Values section does not render anywhere on the Personal Page.buildable now
FR-19The 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-20The Role Page renders the user’s role description, team, and reporting line, sourced correctly.buildable now
FR-22Gospl 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-23Design 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.

Entities this page touches. Gospl owns only the minimal user record; other systems own the rest and Gospl reads via contract.

EntityOwnerGospl storesNotes
User (core)Gosplname, team, reportingLineId, jobTitle onlyFR-22 / principles.md data-minimisation rule.
Personal/HR dataHomeRunnothingFR-19 — never duplicated into Gospl.
Insights profileInsights provider (via admin import)text sections, colour wheel, percentages, PDF refFR-01/04/05.
Motivators + AI insightsMojo (via API)cache + last-synced ts; AI insights access-gatedFR-08/09/10/11.
Weekly GoalsSpine (actions→outcomes)reference only; summary read from goals serviceThis is the page’s hook into the core graph. Page links to spine entity IDs, does not redefine them.
Role / org positionGospl (org chart)role description, team, reporting lineFR-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.