Decisions Log

kennjordan
← All sections

Decisions Log

Key choices made in building the platform, with rationale. Newest first.

2026-04-23 late

Modal video player on pathway page instead of redirecting to /watch/

Personalised pathway cards open each lecture in an inline modal with a Vimeo iframe, rather than sending the user to the full course viewer. Rationale: the pathway is ephemeral per interview session and not a persistent enrolment, so the full viewer with progress tracking would be overkill. Modal is fast, focused, keeps the user in the pathway context.

2026-04-23 late

Claude API key lives in PageMotor admin, not FPM env

Initially stored the Anthropic key as an FPM pool environment variable. Switched to reading from PageMotor's built-in Architect_AI_Claude_ai option (editable via /admin/ai/). Single source of truth, Hasmukh can rotate without SSH access, no FPM reload needed.

2026-04-23 late

All MLUCT videos whitelisted for cpd.medilearn.africa embed

Batch-authorised the entire 300-video UCT library for embedding on the CPD domain in one API run. Takes ~60 seconds. Previous whitelisting was only for s2l.online; the new domain needed its own entry on each video. Videos retain their password protection for direct vimeo.com access.

2026-04-23 late

External JS file instead of inline script blocks

PageMotor's content pipeline HTML-encodes ampersands inside CMS page content, which breaks inline JavaScript (&& becomes &&). Moved all interactive scripts (interview chat, pathway modal) into separate .js files served as static assets. Belt-and-braces fix for a gnarly silent failure mode.

2026-04-23 evening

Full rebrand over cloned S2L chrome

Both sites inherited S2L's theme when we cloned from s2l.online. Rather than modifying theme files, each site got a small *-brand plugin that renders site chrome via [shell-start]/[shell-end] shortcodes and hides the S2L chrome via body:has() CSS selectors. Keeps theme untouched, makes branding per-site, and the pattern is reusable for any future spin-off.

2026-04-23 evening

AI interview powered by Claude Sonnet 4.5 via Anthropic API

Chose Sonnet 4.5 over cheaper Haiku because the interview needs conversational warmth and good follow-up judgement. Cost ~£0.02 per interview which is a rounding error. Max-tokens capped at 500 per response to keep interviews punchy. System prompt lives inside the plugin class so it can be iterated without schema changes.

2026-04-23

Prototype over plan

Chose to build a working prototype ahead of finalising brand, content pathways, or business model. Rationale: “a good prototype is better than a great plan” — easier for Hasmukh and UCT to react to something concrete than to a slide deck. All naming and positioning choices are explicitly marked as reversible.

2026-04-23

Use cpd.medilearn.africa for the platform and documentation.mobilearn.africa for the docs

Subdomains on existing owned TLDs: no domain purchase cost, fast to set up, both reversible. The naming aligns with the audience: medilearn for medical CPD (the product), mobilearn for MobiLearn project assets (the docs).

2026-04-23

Target FCP candidates, not neurologists specifically

Original brief: neurology conference tool. Content audit revealed the entire FCP curriculum is well-covered (211h, 28 specialties) but no siloed neurology library. Pivoting to an FCP platform with specialty pathways (including neurology) maximises the value of existing content while keeping the neurology conference use case as a valid entry point.

2026-04-23

Anthropic API over Max subscription for the interview

Claude Max covers personal Claude Code usage, not production apps serving end users. The platform needs its own Anthropic API account. Cost estimate: ~£0.02–0.05 per full interview (Sonnet 4.5, 5–8 exchanges). 100 attendees ≈ £5.

2026-04-23

Reuse ep-courses plugin infrastructure from s2l.online

The ep-courses plugin built for s2l already handles Vimeo integration, course/lesson models, viewer UI, activity tracking, and landing pages. Copying that wholesale into the new CPD install removes weeks of work. The CPD-specific home page is a thin new plugin (ep-cpd-home) that composes existing parts.