Enter your credentials to view this document.
Top of this document is the latest state — current scope, mockups, decisions in force, open questions, next steps. Below the divider is a chronological diary of how we arrived here. Read top-to-bottom for the present; scroll past the divider for the trail of calls, documents, and pivots that produced it.
Eight modules. Six adapted from the broader scope, two new. UX-led delivery with a focused integration effort on the engineering side (N1).
| # | Module | Form for 15 June |
|---|---|---|
| 07 | Assessment Surface | Native shell wrapping SkillsTX via magic-link (Option A, verified feasible). Symphony-branded intro, progress, return-to-app. SkillsTX’s own screens for the rating step. |
| 10 | Report Screen | Native render of GET /v1/account/{key}/job/{jobType} mapped onto the ESPER Skills Assessment & Development Pathway structure: at-a-glance card, role-readiness 0–100 score, Required/Desirable skill gap bars with RAG flags, 13 SFIA-9 generic-attribute observations, 3–6 month pathway, 12-month milestones. |
| 09 | Manager Review Queue | Native list driven by GET /v1/account/{key}/relationships/employee. Acknowledge or comment per direct report. |
| 25 | Identity & SSO | Pilot-level. DGE SSO if available; magic-link invitations as fallback. |
| 26 | RBAC — Three Roles | Employee · Manager · Executive. Exec view anonymised by aggregation. |
| 28 | i18n + RTL (UI only) | ~100 UI strings translated to Arabic with RTL layout. SFIA content comes from SkillsTX natively. |
| N1 | SkillsTX Integration Adapter (BFF) | Containerised Node.js + Hono BFF holding the SkillsTX client_secret. ~5–7 endpoint wraps. Portable across hosting environments. |
| N2 | Executive Overview Screen | Workforce view: completion %, top-N gaps, segmentation. Nightly batch via 150 × job-match calls. ~30–50% chrome reusable from the Lovable repo. |
Pulled verbatim from Product Vision & Build Blueprint.pdf (Non-Functional Requirements section) and the Digital Workforce Capability Assessment RFP v2-1.pdf. No specific framework, runtime or database is named in either document — the constraints are about where things run and what data goes where, not what they’re built with.
Implication for our stack choice: the BFF (N1) must be portable enough to deploy inside the DG environment — i.e. a containerised Node.js service Kyndryl can run on their Kubernetes, not a Cloudflare Worker. Cloudflare Pages is fine for the frontend during build phase, but the production artefact needs to be infra-agnostic. Open question for Brendan: anything missing from this list that you’ve heard from DGE or Kyndryl directly?
Seven stages from job-description triage through to closing the skills gap. Each stage maps to one or more of the eight modules in section 02.
Each of the 150 DGE professionals starts with whatever job description they have today — pulled from HR, often inconsistent in format and depth.
Rewritten in Brendan’s structured format — the shape SkillsTX needs to cleanly map a role onto the SFIA framework.
For every refreshed role, the relevant set of SFIA skills is identified — what “good” looks like for that job.
Each professional answers the SkillsTX self-assessment for their mapped skill set, delivered through the Symphony mobile-first assessment surface.
Individual view: where they are, where the role needs them to be, and the headline gaps — rendered as a clean in-app screen on top of SkillsTX data.
Per-direct-report queue for line managers to acknowledge and comment, plus an anonymised executive aggregate (completion %, top-N gaps, segmentation).
Both participants and managers get a guided next step on each material gap — learning, mentoring, or role move — tied to the IDP that comes out of the assessment.
Seven screens walking the full pilot flow — employee onboarding through to executive view. Symphony brand palette (dark green · antique gold · teal). Scroll horizontally.
Swipe through
The currently-in-force decisions. Anything not on this list is open or deferred. New decisions land here and become history once superseded.
| Decision | Date | By |
|---|---|---|
| SkillsTX is the assessment base. No parallel engine, no rebuild. | 22 May | Brendan + Michi |
| MVP scope = 8 modules (07 · 09 · 10 · 25 · 26 · 28 · N1 · N2). | 22 May | Michi proposed, Brendan agreed |
| Hosting + security = DGE’s responsibility per RFP. Not in our scope. | 22 May | RFP (Brendan confirmed) |
| 15 June = pilot launch, not full production licence. Formal SLA / pen-test / WCAG audit land within Q3. | 22 May | Both |
| Bilingual EN/AR from day one. Retrofitting RTL after build is too expensive. | 19 May | Brendan |
| 50% weighting on behavioural competencies in the rubric (where weighting applies). | 19 May | Brendan |
| AI surfaces 12–16 deferred. Use SkillsTX’s built-in scoring, mapping, and recommendation logic in v1. | 22 May | Brendan |
| Learning provider integrations deferred (Coursera / Pluralsight / Udemy = links only in v1, no API integration). | 22 May | Brendan |
Questions that block decisions or scope. Each has an owner and a target for when we should have the answer.
Linear tickets currently open or recently closed. The full Linear board is the source of truth.
Concrete actions with owners. As work completes it moves into the diary.
Questions in priority order for Monday’s call. P0 needs an answer on the call; P1–P3 can follow by email. Written 24 May 2026.
personal.skillstx.com (12 May): observed /api/contents/{lang}/… returning 13,504 Arabic SFIA items + RTL; /api/jobs/rolebasedsurveyjobs (40 named jobTypes); /api/companies/brandinglogo (tenant branding confirmed)./api/companies, /api/lors — a partner tier exists.GET /v1/account/{key}/link) end-to-end verified./survey/question/{id} renders blank page, no error./api/contents/{lang}/…, /api/lors, and survey-submission paths on the DGE tenant. Option A (magic-link hybrid) is the fallback path.
Decides Option A vs B — everything else follows
GET /v1/account/{key}/job/{jobType} has no documented response body. Concrete ask: for each skill in the match, can the response provide skill code · target level · assessed level · per-attribute observation · evidence text? Those are the fields the ESPER Report template needs to populate (received 26 May).
Blocking Report Screen (module 10)
POST /v1/account, GET /v1/accounts, and GET /v1/account/{key}/job/{jobType} for the 150-person pilot. Bulk-create alternative beyond SFTP for larger downstream rollouts?
Every call, every document received, every pivot — most recent on top. Read top-to-bottom to walk back from today to programme kick-off. Gold dots are events; red dots are pivots that changed the shape of the work.
Word template with merge fields defining the per-candidate deliverable. Generator inputs are minimal — candidate_name, role_title, jd_reference, assessment_date, assessor_name, pathway_runway (3 or 6 months), evidence_summary — everything else is inferred from those + the linked JD.
The template spells out the methodology in Appendix C: Role Readiness is a 0–100 weighted average (Required × 1.0, Desirable × 0.5, Generic Attributes reported separately and not scored). Per-skill gap = target − assessed, capped at 0; RAG bands are Green (gap 0), Amber (gap 1), Red (gap 2+). Desirable skills defer during the runway window and re-enter at the 12-month checkpoint. Pathway items tag against four modalities: on-the-job, structured online, mentorship, cert/shadowing.
Call brief prepared for Monday’s SkillsTX call with Paul Collins. Questions ordered across four priority tiers: P0 (scope-defining — must answer on the call), P1 (build-blocking — email fine), P2 (product clarity), P3 (scale). Central question is the Option A vs B decision: partner-tier API access (full native) vs magic-link hybrid. Added to this document as section 08.
Repurposed from one-shot MVP brief into a living journal. Top section = current state (status, scope, mockups, decisions, open questions, tickets, next steps). Bottom section = chronological diary of every call, document and pivot. Goal: anyone landing on the URL at any future point can read top-to-bottom and understand both where the project stands and how it got there.
Walked the 42-module decomposition end-to-end. Within 25 minutes the descope to the 8-module MVP was aligned. Summary in plain language: MVP Abu Dhabi, RFP-driven, security, Arabic, assessment, full, and SkillsTX-anchored.
Key new information surfaced:
Codified the SkillsTX findings into a Pre-Flight Check section. Added 7 horizontally-scrollable mobile mockups in the Lovable design system showing the full pilot flow (Welcome → Personal landing → Assessment → Results → IDP → Manager view → Executive overview, dark). Added a sticky left TOC with IntersectionObserver-based active-section tracking. Deployed to Cloudflare Pages at symphony-mvp.pages.dev. Discovered the company is ESPER (not Espen, which was a typo propagated through Michi’s local files) — auth gate updated with the official ESPER mark from esper.global.
Confirmed the building blocks for the 15 June pilot: SkillsTX as the assessment engine, the Lovable prototype as the design starting point, no other prior Symphony codebase to inherit from.
Decomposed the Blueprint into 42 distinct modules across 8 categories: Data Foundation, User-Facing Surfaces, AI Surfaces, Backend Engines, Learning Integrations, Platform Foundation, Compliance, Content Production. Cluster picture: 9 product clusters, ~25 engineers + ~10 specialists for a credible 15 June production launch. Built the analytical case that the maximalist Blueprint is undeliverable in 25 days.
Proposed a minimalist 8-module MVP as the only buildable scope: 07 Assessment, 09 Manager Queue, 10 Report, 25 SSO, 26 RBAC, 28 i18n, plus two new modules (N1 Integration Adapter, N2 Executive Overview).
30-page ESPER internal working document. Frames Symphony as a workforce capability platform with the 15 June DGE production go-live as the anchor date. Engineering specifics include API contracts, 99.9% SLA, n≥5 suppression, pen-test schedule, RACI matrix.
Found an existing Lovable.dev-generated React app on GitHub with 52 Symphony visualisation components, design-system tokens, and an executive dashboard chrome. Not a DGE deliverable, but the design palette (Symphony Green + Gold + Teal) and chart components are reusable as a starting point.
Updated 14-phase schedule. Project starts May 18, handover Jul 6. Introduces a new “Symphony Design” column with per-phase design notes from Brendan — includes bilingual EN/AR mentions in 6 places, references to “Symphony-branded JD template”, and explicit acknowledgment that “SkillsTX visualisation is poor — Brendan to create the org-wide view.”
Zoom working session. DGE framing: SFIA + SkillsTX, 150 pilot with a downstream growth path. Major UX correction: drop the onboarding questions, pre-populate from HR data. Behavioural skills should be 50% weighted. Two distinct views needed: individual (empowerment) and executive (heatmap, decisions). Missing pieces in our prototype identified: pre-populated profile, downloadable IDP, executive heat-map, L&D push intelligence.
Walked the SkillsTX product live, pulled the public swagger spec, and observed an undocumented internal API. Four critical findings:
/api/contents/{lang} returns 13,504 fully-translated SFIA items in Arabic with inline RTL./v1/account/{key}/link is a working escape hatch — drops a user straight into the SkillsTX self-assessment UI authenticated as themselves./api/jobs/rolebasedsurveyjobs returns 40 named jobTypes.Two architectures identified: Option A (hybrid native shell + embedded SkillsTX rating screens) or Option B (full native via a partner-tier API conversation with Paul).
323 KB PDF covering ESPER’s methodology, SFIA accreditation, team and approach. This is the document that anchors what was committed to DGE — the gravity field every later scope decision is pulled against.
13-page DGE RFP. Scope: 150 employees, SFIA-aligned assessment in six phases (Framework → Execution → Analysis → Reporting → Presentation → Learning Pathways). Submission language: English or English+Arabic. Bilingual *delivery* is not a hard RFP requirement — that came later as a product call.
2-minute WhatsApp voice message announcing the programme. Initial framing: ESPER will run the assessment for 150 DGE professionals using SkillsTX as the backbone. Michi is asked to build the UX layer on top of the SkillsTX API. First mention of the Saudi AI taxonomy as a future play.