When hovering a constellation node, skill pill, or timeline item,
non-related UI elements across all components dim to 0.25 opacity,
creating a focused visual relationship view. The constellation axis
and year labels also dim via CSS class. Respects reduced-motion.
- Research description: removed embellished "investigating cocrystal
formation for improved drug delivery properties", replaced with CV
phrasing "on drug delivery and cocrystals"
- All education credentials, grades, dates, and institutions verified
- Extracurriculars verified against secondary reference
- Python: startYear corrected 2019→2017 (self-taught during Tesco night
shifts per secondary ref); yearsOfExperience 6→8
- SQL: startYear corrected 2018→2022 (learned after gaining NHS database
access per secondary ref); removed unverified pre-2022 history entries
- Power BI: fixed prescribing history year inconsistency (2019→2020);
removed "PharMetrics real-time expenditure dashboard" reference
- All skill categories and names verified against CV Core Competencies
- PharMetrics: corrected from "Interactive Platform" to "Switching Dashboard"
to align with references (PharMetrics is the switching algorithm project);
updated methodology to match secondary ref's dashboard description
- All other investigations (switching algorithm, Blueteq, CD monitoring,
Sankey tool) verified against CV and secondary reference — no changes needed
- Budget KPI: removed unverified "monthly" reporting frequency,
aligned with CV's "bimonthly" CMO presentations
- Population KPI: removed "monitor medicines safety" to match CV;
"aggregate reporting" → "practice-level data" per CV wording
- Also fixed timeline.ts Interim Head detail to match CV wording
- All KPI values (£220M, £14.6M, £2.6M, 1.2M) verified against CV
- Address corrected from 'Norwich, NR1' to 'Norwich, UK' to match CV
- Created References/unverified-content.md to track audit findings
- Flagged retained-but-unverifiable personal data (DOB, GPhC number, LinkedIn slug)
- All other fields verified against CV_v4.md
Move the self-contained LastConsultationSubsection component (191 lines)
into its own file as LastConsultationCard. It uses only context and one
prop, with no dependency on DashboardLayout state. DashboardLayout drops
from 493 to 293 lines.
Single source of truth for expand/collapse card interaction pattern:
container styling, keyboard handling, chevron rotation, AnimatePresence
animation, and expanded content wrapper. Each consumer retains unique
header and body content via render props.
Create src/lib/theme-colors.ts with DOT_COLORS, KPI_COLORS,
PROJECT_STATUS_COLORS, and DEFAULT_ORG_COLOR constants. Add
motionSafeTransition() utility to src/lib/utils.ts.
Removes 6 duplicate color map definitions across Card, DetailPanel,
PatientSummaryTile, KPIDetail, ProjectsTile, and ProjectDetail.
Replaces 9 hardcoded '#0D6E6E' fallbacks and 7 inline motion ternaries.
Fixes project status color inconsistency between ProjectsTile and
ProjectDetail (Ongoing was teal in tile, amber in detail).
Move the ~110-line LLM system prompt to src/data/llm-prompt.ts, removing
the LLMCopy type, getLLMCopy() accessor, and llm field from ProfileContent.
llm.ts now imports the prompt directly. profile-content.ts drops from 246
to 133 lines, retaining only UI copy and search metadata.
Timeline entities now contain their narrative data (description, details,
outcomes, codedEntries) directly instead of fetching via
getTimelineNarrativeEntry(). Removes ~155 lines from profile-content.ts,
the accessor function, and three dead types.