noindex URL. Not linked anywhere public. Ask to lock it behind the authenticated /management area or delete it when done.Target: https://dev.issca.com (authenticated course-delivery platform) Method: Live browser drive (Playwright + headless Chromium 1.59), desktop 1440×900 and mobile 390×844, light + dark themes. 35 screenshots, full DOM/console/network capture on every route. Account: admin@issca.com (Student + Admin surfaces). Date: 27 Jun 2026. Stack detected: Next.js + NextAuth/authjs v5 (__Secure-authjs.session-token).
Evidence note: the inline PDF uses the browser-native PDFium viewer, which does not render in headless Chromium — every "blank PDF box" in a screenshot is a capture artifact, not a platform bug. The PDF file itself was verified over HTTP (200,application/pdf, 31 KB). Findings that depend on PDF rendering are flagged as such.
ISSCA Learning Centre is a clean, well-built, low-defect course platform. The core learning loop — enrol → watch video → take private notes → track progress → earn a verifiable certificate — works end to end and is visually polished. Engineering hygiene is genuinely strong: zero console errors and zero 4xx/5xx network failures on every page tested, proper auth gating with callbackUrl, and a responsive layout with no horizontal scroll at 390px anywhere.
The gaps are completeness and communication, not stability. Two of three lesson types are unfinished ("Reading coming soon", "Assessment coming soon"), so a certification product currently cannot assess or certify competence through the platform. Logout is a dead control. And the stakeholder's #1 ask — a moderated comment/community layer — does not exist at all; the only communication surface is private, single-user Notes.
Health score: 68 / 100. Polished, stable core (+), but a certification platform that can't run a quiz, can't log you out, and can't let two clinicians talk to each other is materially incomplete.
signOut() — one-handler fix; restores logout + redirect. (B1)git_vps_cheatsheet_ru.pdf inside a peptide lesson) and cap note height with a "show more" clamp. (B6 / I7)| ID | Bucket | Severity | Location (URL + element) | Repro | Expected | Actual | Screenshot | Fix |
|---|---|---|---|---|---|---|---|---|
| B1 | Broken | Blocker | /dashboard → account menu → button[role=menuitem]"Sign out" | Open account menu, click Sign out | Session cleared, redirect to /login | No network request, no cookie cleared, no redirect; /dashboard still accessible (verified twice + cookie/network trace) | 67,68 | Wire authjs signOut({redirectTo:'/login'}) to the menu item |
| B2 | Feature gap | High | /learn/.../<final-quiz> lesson body | Open "Final Quiz" lesson | A graded quiz | "Assessment coming soon" placeholder; 0 quiz inputs | 50 | Build quiz engine (MC/short-answer), scoring, passing grade |
| B3 | Feature gap | High | Any "Reading" lesson (e.g. "Summary & Takeaways") | Open a Reading lesson | Lesson text/content | "Reading coming soon" placeholder | 51 | Build rich-text/reading lesson renderer; hide empty lessons until filled |
| B4 | Bad UX | Medium | Lesson Notes list → button[aria-label="Delete note"] | View notes on touch device | Delete reachable | Delete icon is opacity:0 until hover → unreachable without a mouse; no confirm/undo | 42 | Always show a low-emphasis delete; add confirm or undo toast |
| B5 | Feature gap | Medium | Lesson Notes row | Try to edit an existing note | Inline edit | No edit affordance at all (delete + re-add only) | 42 | Add inline edit (pencil → editable textarea → save) |
| B6 | Data/content | Low | Resources card, all peptide lessons | Open Resources | Topic-relevant protocol PDF | Placeholder git_vps_cheatsheet_ru.pdf (a git VPS cheatsheet) in a peptide course | 11 | Replace with real lesson PDFs before launch |
| B7 | Polish | Low | Video embed (youtube-nocookie) | Load a video lesson | Localised to user/English | Player chrome renders in German ("Ansehen auf YouTube") — embed locale not pinned | 11,22 | Pass hl=en (or user locale) to the embed URL |
| B8 | Bad UX | Low–Med | Notes panel in dark theme | Toggle dark, view notes | Note rows + "Add note" adapt | Note-row backgrounds / "Add note" button look low-contrast in dark | 22 | Use bg-card/border tokens that invert; check button contrast in dark |
| B9 | Bad UX | Low | Lesson top bar progress track | Glance at top bar | Clear progress indicator | Progress track is a faint grey hairline; 0% fill looks empty/broken; unlabeled | 11 | Add % label + higher-contrast fill; or move into the outline button |
Note: B2/B3 are well-designed empty states (icon + heading + subtext), so they read as "intentionally unfinished" rather than crashed — good hygiene, but functionally absent.
Scored live against the evidence brief by 10 independent agents (one per competitor), one consistent rubric. "Partial" almost always means foundation present, completion pending (e.g. certificates issue with serial + Verified badge + PDF, but aren't grade-gated or template-customisable) — so ISSCA is meaningfully further along than the raw Missing count implies. Enterprise/LMS-bloat that does not fit a niche paid clinical-cert business (SCORM/xAPI/cmi5, multi-tenant sub-portals, content marketplaces, website/funnel builders, native checkout) is scored N/A by design, not as a deficiency.
Coverage: 2 Present · 18 Partial · 61 Missing · 19 N/A (of 100). Priority of gaps: 13 P0 · 17 P1 · 35 P2 · 17 P3.
| # | Feature | Status | Recommendation |
|---|---|---|---|
| 9 | Lesson-level comments / student-instructor messaging | 🔴 Missing | Build the moderated per-lesson comment/discussion layer with faculty replies — only private student-only Notes exist today, and this is the stakeholder's #1 ask to connect paying clinicians. |
| 10 | Native mobile course-taking app | 🔴 Missing | Ship an installable PWA with offline lesson caching rather than a costly native app, since the responsive web LMS already runs cleanly at 390px with a hamburger drawer for this niche paid audience. |
| 12 | Communities with topic-based Spaces | 🔴 Missing | Build moderated topic-based Spaces (one per certification track, e.g. Peptide, MSC/Exosome, Biohacking) with faculty-moderated threads so paying clinicians can ask cases and get expert replies — this is the stakeholder's #1 'communication is key' gap. |
| 13 | Assignment lesson type — student file upload, instructor approve/reject | 🔴 Missing | Add a case-submission assignment lesson where clinicians upload a de-identified patient protocol/write-up that faculty approve or reject, gating the certificate on a real clinical deliverable rather than passive video completion. |
| 14 | Customizable certificates (multiple templates, custom fields) | 🟡 Partial | Certificates already issue with a Verified badge, serial number and PDF, but add per-track templates with custom fields (CME/credit hours, faculty signatures, accreditation seal) and bind issuance to a passing assessment so the credential carries integrity. |
| 15 | Course card <-> Community card cross-linking | 🔴 Missing | Once Spaces exist, link each course card to its dedicated community Space (and back) so a clinician finishing a lesson is one click from the discussion thread for that track. |
| 16 | Survey / feedback lesson type | 🔴 Missing | Add an end-of-module feedback/survey lesson type to capture clinician NPS and content gaps, feeding faculty the data needed to refine each certification track. |
| 25 | Built-in community (Facebook-group alternative) | 🔴 Missing | Build a moderated community space (faculty-led case discussions, per-cohort channels, clinician Q&A) as the stakeholder's top priority to connect and retain paying clinicians. |
| 43 | Gated membership communities | 🔴 Missing | Community is entirely absent (the stakeholder's P0) — build a gated, enrollment-only moderated community where verified paying clinicians can connect and discuss cases. |
| 44 | Real-time group chat + member-to-member DMs | 🔴 Missing | No chat or DMs exist anywhere — add a moderated cohort group chat for enrolled clinicians first, and gate/defer open member-to-member DMs to avoid unmoderated peer clinical advice and liability. |
| 49 | Topic-based community spaces | 🔴 Missing | No community spaces or Q&A exist — create topic/specialty spaces aligned to the five certification tracks (peptides, MSC/exosomes, biohacking, MUSE, aesthetics) for focused, moderated discussion. |
| 73 | Social learning — user-generated content, sharing, Q&A | 🔴 Missing | Build the stakeholder-P0 moderated layer: per-lesson threaded comments and a course Q&A with faculty replies and likes, replacing the current private-only Notes as the sole communication surface. |
| 91 | Spaces + Space Groups to organize courses/discussions/events | 🔴 Missing | Add a small set of moderated Spaces, one per certification track (Peptide, Regenerative, MUSE, Biohacking), each grouping that track's lessons, case discussions and live sessions; avoid a sprawling space tree for a 5-course catalog. |
| 92 | Courses that fold in events, office hours, live Q&A | 🔴 Missing | Attach recurring faculty office-hours and live case-review Q&A to each certification cohort, surfaced on the course detail page with an RSVP calendar and an archived recording feed. |
| 93 | Live streams + events with RSVP | 🔴 Missing | Offer live-streamed demo/case sessions with RSVP and reminders tied to each cohort, auto-archiving recordings into the relevant course, reusing the existing ISSCA events brand instead of building a separate events product. |
| 94 | Gamification — points for likes/posts/comments, leaderboards, levels, rewards | 🔴 Missing | Skip social points and leaderboards (off-tone for expert paying clinicians); if any progression is shown, use quiet certification milestones and CME-credit tracking rather than competitive gamification. |
| 95 | Rich comments + reactions (GIFs, emoji) on posts | 🔴 Missing | Ship moderated, threaded per-lesson comments with faculty replies and emoji reactions (skip GIFs as off-tone for clinical), since comments are entirely absent and this is the stakeholder's #1 'communication is key' ask. |
| 96 | Member DMs + group chat | 🔴 Missing | Add cohort-scoped moderated group chat (one per certification class) plus optional peer DMs with faculty/moderator visibility, rather than open uncontrolled messaging among clinicians. |
Per stakeholder weighting, these map directly to the P0 community/comments ask. 18 of 18 weighted items are Missing/Partial — confirming the communication layer is the single biggest gap.
Teachable
| # | Feature | Status | Pri | Recommendation |
|---|---|---|---|---|
| 1 | No-code drag-and-drop curriculum builder (sections + lessons) | 🟡 Partial | P2 | A course/curriculum builder exists at /admin/courses but drag-and-drop reorder is unverified; confirm or add handle-based module/lesson reordering so clinical faculty can restructure the 5 courses without engineering. |
| 2 | Drip scheduling — release lessons X days after enrollment or on a fixed date | 🔴 Missing | P2 | Add per-cohort drip release so multi-week certification tracks unlock modules on a schedule, pacing clinicians through prerequisite protocol content instead of dumping all lessons at once. |
| 3 | Auto-graded quizzes (multiple choice, short answer) | 🔴 Missing | P1 | Replace the 'Assessment coming soon' placeholder with real MCQ/short-answer quizzes that auto-grade and enforce a passing score, since a clinical certificate is meaningless without verified competency. |
| 4 | Branded completion certificates | 🟡 Partial | P1 | Certificates already render with serial number and a 'Verified' badge but are not earned via a passing grade — gate issuance behind quiz completion so the credential defensibly attests clinical competency. |
| 5 | Lesson-completion gating / compliance lock before progressing | 🔴 Missing | P1 | Add completion (and quiz-pass) gating so learners must finish prior lessons before advancing, giving the certification an auditable sequence/compliance trail instead of every lesson being freely reachable. |
| 6 | AI helpers: course-outline generator, quiz generator, subtitle translation | 🔴 Missing | P3 | Optional later add: an AI quiz/outline generator to speed faculty authoring, but only after real quiz and reading lesson types actually ship — not a near-term need for a 5-course catalog. |
| 7 | Native checkout with coupons, order bumps, upsells | ⚪ N/A | N/A | Commerce is intentionally handled by a separate system; keep it there and just ensure a clean SSO/enrollment handoff into the LMS rather than rebuilding checkout, coupons, and upsells inside this app. |
| 8 | Per-student progress dashboard | 🟢 Present | P2 | Per-student progress (enrolled/in-progress/certificates + per-course bars) already works; extend the admin /admin/students view with per-lesson completion and quiz scores once assessments exist for compliance reporting. |
| 9 | Lesson-level comments / student-instructor messaging | 🔴 Missing | P0 | Build the moderated per-lesson comment/discussion layer with faculty replies — only private student-only Notes exist today, and this is the stakeholder's #1 ask to connect paying clinicians. |
| 10 | Native mobile course-taking app | 🔴 Missing | P2 | Ship an installable PWA with offline lesson caching rather than a costly native app, since the responsive web LMS already runs cleanly at 390px with a hamburger drawer for this niche paid audience. |
Thinkific
| # | Feature | Status | Pri | Recommendation |
|---|---|---|---|---|
| 11 | Minimalist course player with sidebar nav + live progress | 🟢 Present | P2 | Player already has the always-open lesson tree, active-lesson highlight and live % progress; polish the bare X into a labeled 'Exit to dashboard' control and raise contrast on the progress track and dark-mode note rows. |
| 12 | Communities with topic-based Spaces | 🔴 Missing | P0 | Build moderated topic-based Spaces (one per certification track, e.g. Peptide, MSC/Exosome, Biohacking) with faculty-moderated threads so paying clinicians can ask cases and get expert replies — this is the stakeholder's #1 'communication is key' gap. |
| 13 | Assignment lesson type — student file upload, instructor approve/reject | 🔴 Missing | P1 | Add a case-submission assignment lesson where clinicians upload a de-identified patient protocol/write-up that faculty approve or reject, gating the certificate on a real clinical deliverable rather than passive video completion. |
| 14 | Customizable certificates (multiple templates, custom fields) | 🟡 Partial | P1 | Certificates already issue with a Verified badge, serial number and PDF, but add per-track templates with custom fields (CME/credit hours, faculty signatures, accreditation seal) and bind issuance to a passing assessment so the credential carries integrity. |
| 15 | Course card <-> Community card cross-linking | 🔴 Missing | P0 | Once Spaces exist, link each course card to its dedicated community Space (and back) so a clinician finishing a lesson is one click from the discussion thread for that track. |
| 16 | Survey / feedback lesson type | 🔴 Missing | P2 | Add an end-of-module feedback/survey lesson type to capture clinician NPS and content gaps, feeding faculty the data needed to refine each certification track. |
| 17 | Bulk student enrollment + student groups | 🔴 Missing | P2 | Add cohort-based bulk enrollment and grouping so conference/event attendees can be onboarded as a single cohort and tracked together, aligning the LMS with ISSCA's live-event model. |
| 18 | Branded mobile app | 🔴 Missing | P3 | The responsive web app already handles mobile cleanly (no horizontal scroll, hamburger drawer), so ship an installable PWA with offline PDF protocols rather than funding a costly native app for a 5-course catalog. |
| 19 | Multi-author / instructor roles & permissions | 🟡 Partial | P2 | Only a binary Student/Admin role exists today; add a scoped Instructor role so individual faculty can edit and moderate their assigned courses and Spaces without receiving full admin access. |
| 20 | Bundles & memberships | 🔴 Missing | P3 | Commerce is handled in a separate system, so keep bundle/pricing logic there but have the LMS read a membership/entitlement flag to gate multi-course access (e.g. a full diploma track unlocking all 5 courses). |
Kajabi
| # | Feature | Status | Pri | Recommendation |
|---|---|---|---|---|
| 21 | When X -> then Y marketing automations | 🔴 Missing | P3 | Skip a general if-this-then-that automation builder; wire one transactional trigger (on course completion, issue the certificate and email the clinician) rather than a Kajabi-style engine a 5-course catalog doesn't warrant. |
| 22 | Email sequences + broadcasts with open/sales analytics | 🔴 Missing | P2 | Add a simple cohort broadcast to email enrolled clinicians about new modules, event/CME dates, and recertification deadlines; defer sales-funnel open/click analytics since checkout lives in a separate system. |
| 23 | Assessment-driven auto-tagging / student segmentation | 🔴 Missing | P3 | Low priority until quizzes exist; once assessments ship, auto-tag students by track and score for targeted recert reminders, but don't build a full CRM segmentation engine for a 5-course catalog. |
| 24 | Passing-grade compliance gating | 🟡 Partial | P1 | Certificates exist but aren't grade-gated; tie certificate issuance to a passing quiz score and add lesson completion gating so credentials reflect demonstrated competency, which is essential integrity for a clinical certification. |
| 25 | Built-in community (Facebook-group alternative) | 🔴 Missing | P0 | Build a moderated community space (faculty-led case discussions, per-cohort channels, clinician Q&A) as the stakeholder's top priority to connect and retain paying clinicians. |
| 26 | Sales funnels / pipeline builder | ⚪ N/A | N/A | Keep sales funnels and pipeline in the existing external commerce/marketing stack; duplicating a funnel builder inside the LMS is bloat for this niche business. |
| 27 | Coaching product with scheduling | 🔴 Missing | P2 | Offer optional paid faculty office-hours/mentorship booking for certified clinicians as a high-touch premium add-on, not a full coaching-product suite. |
| 28 | Landing-page / website builder | ⚪ N/A | N/A | ISSCA already builds landing pages in its main marketing site; a page builder inside the LMS is redundant and out of scope. |
| 29 | Digital products + memberships | 🟡 Partial | P2 | Paid course content products exist but there is no membership construct or native commerce; add an annual all-access or recertification membership tier (native or via the external commerce system) to drive recurring clinician revenue. |
| 30 | Milestone-completion notifications to team/student | 🔴 Missing | P2 | Send the student a completion/certificate-issued email and notify admin on enrollment and course completion as lightweight lifecycle signals, without building a full notification automation engine. |
LearnWorlds
| # | Feature | Status | Pri | Recommendation |
|---|---|---|---|---|
| 31 | Interactive video editor — in-video quizzes, hotspots, buttons, overlays | 🔴 Missing | P2 | Skip the full interactive-video editor; add simple in-video checkpoint questions on key peptide/MUSE protocols to lift retention without heavy authoring overhead. |
| 32 | SCORM / HTML5 upload, incl. graded SCORM -> gradebook | ⚪ N/A | N/A | Skip SCORM — it is multi-vendor enterprise plumbing irrelevant to ISSCA's self-produced, YouTube-hosted video lessons. |
| 33 | In-video knowledge checks before progressing | 🔴 Missing | P1 | Add lightweight in-video knowledge checks that must be answered before advancing on core clinical modules, reinforcing the certification's competency claim. |
| 34 | Adaptive/branching video pathways (by answer or role) | 🔴 Missing | P3 | Branching/adaptive pathways are overkill at 5 courses; defer until the catalog and role-specific clinician tracks grow materially. |
| 35 | AI subtitles + searchable transcripts | 🔴 Missing | P2 | Add searchable transcripts and captions to every video lesson so clinicians can scan/reference protocol details and to meet basic accessibility expectations. |
| 36 | Interactive eBook creator | 🔴 Missing | P2 | First implement the missing rich-text Reading lesson type (currently a 'Reading coming soon' placeholder) before investing in any full interactive eBook creator. |
| 37 | Certificates tied to a gradebook | 🟡 Partial | P1 | Certificates exist but issue on video completion only — gate issuance behind a passing final-assessment score so the credential reflects demonstrated clinical competency. |
| 38 | Broad assessment library (many question/activity types) | 🔴 Missing | P1 | Replace the broken 'Final Quiz' placeholder with a focused assessment engine (MCQ + case-based items and a pass threshold); breadth of exotic question types is secondary for certification. |
| 39 | White-label mobile app builder | ⚪ N/A | N/A | A white-label app builder is multi-brand bloat; the responsive web already works cleanly at 390px, so at most ship a single installable PWA if mobile demand emerges. |
| 40 | SSO + full membership-site builder | ⚪ N/A | N/A | Keep the simple NextAuth email/password flow but fix the broken Sign out first; SSO and a membership-site builder are unnecessary for one niche certification brand. |
Podia
| # | Feature | Status | Pri | Recommendation |
|---|---|---|---|---|
| 41 | Sell digital downloads (eBooks, templates, files) | 🟡 Partial | P2 | Downloadable PDF protocol/resource delivery already exists in-lesson, but commerce is external and nothing is sold standalone — package the protocol PDFs and faculty eBooks as purchasable downloads wired through the existing checkout so non-enrolled clinicians can buy individual protocols. |
| 42 | Webinars as a paid product (Zoom) | 🔴 Missing | P2 | All video is pre-recorded YouTube embeds with no live capability — add scheduled live expert Q&A/case-review webinars via Zoom as a paid cohort perk, with recordings posted back into the relevant certification track. |
| 43 | Gated membership communities | 🔴 Missing | P0 | Community is entirely absent (the stakeholder's P0) — build a gated, enrollment-only moderated community where verified paying clinicians can connect and discuss cases. |
| 44 | Real-time group chat + member-to-member DMs | 🔴 Missing | P0 | No chat or DMs exist anywhere — add a moderated cohort group chat for enrolled clinicians first, and gate/defer open member-to-member DMs to avoid unmoderated peer clinical advice and liability. |
| 45 | Coaching sessions/bookings | 🔴 Missing | P2 | No booking surface exists — offer bookable 1:1 mentorship sessions with faculty (calendar + paid slot) as a premium upsell on each certification track. |
| 46 | Email newsletters + automated welcome flows with sales data | 🔴 Missing | P2 | The brief confirms no automations/email — wire enrollment and progress events into automated welcome and lesson-nudge email flows to lift completion and certificate-earn rates. |
| 47 | Affiliate program | 🔴 Missing | P3 | No referral mechanism exists — add a lightweight alumni referral/affiliate link so certified clinicians can refer peers, tracked against the external checkout. |
| 48 | Single-dashboard website builder | ⚪ N/A | N/A | ISSCA already runs a bespoke Next.js marketing site (issca.com); an in-app website builder is redundant platform bloat and should not be built into this LMS. |
| 49 | Topic-based community spaces | 🔴 Missing | P0 | No community spaces or Q&A exist — create topic/specialty spaces aligned to the five certification tracks (peptides, MSC/exosomes, biohacking, MUSE, aesthetics) for focused, moderated discussion. |
| 50 | Free + paid membership tiers | 🔴 Missing | P2 | There is no tier system and all courses are paid — introduce a free tier exposing sample/preview lessons as a lead magnet that converts clinicians into the paid certification tracks. |
LearnDash
| # | Feature | Status | Pri | Recommendation |
|---|---|---|---|---|
| 51 | Focus Mode — distraction-free lesson/quiz view | 🟡 Partial | P2 | The lesson player is a dedicated route with its own chrome but the tree is always open and the bare X / low-contrast progress add noise; add a one-tap Focus toggle that collapses the lesson tree and top chrome (and pins the video), persisting per session. |
| 52 | Advanced quiz engine (8 question types incl. essay, fill-in-blank, sorting, matrix) | 🔴 Missing | P1 | Quizzes are an unimplemented 'Assessment coming soon' placeholder; build a real engine starting with scored multiple-choice plus short-answer for the existing Final Quiz lessons, since a clinical certification needs a defensible knowledge check (full 8-type parity is overkill). |
| 53 | Quiz controls: time limits, randomization, answer explanations | 🔴 Missing | P1 | No quiz exists so no controls exist; when the engine ships, prioritize per-question answer explanations and answer-order randomization to make the certification credible, and skip strict time limits that penalize busy practicing clinicians. |
| 54 | Quiz leaderboards (public ranking) | ⚪ N/A | N/A | Skip public leaderboards entirely — ranking paying clinicians by quiz score is off-brand for a premium clinical credential; if social proof is wanted, surface only private cohort completion stats. |
| 55 | Groups + Group Leader role for cohort tracking | 🔴 Missing | P3 | Roles today are only Student/Admin; defer full Group-Leader tooling and add a lightweight cohort view only if ISSCA begins selling block enrollments to clinics, letting a coordinator track their clinicians' certification progress. |
| 56 | Course/lesson prerequisites (require pass before next) | 🔴 Missing | P1 | Lessons are freely reachable with no gating; gate the final certificate behind sequential lesson completion plus a passing final-quiz score so the credential actually attests to demonstrated competence. |
| 57 | Time-based / scheduled content drip | 🔴 Missing | P2 | No drip/scheduled release exists; add optional drip scoped to cohort intakes tied to ISSCA's live events while keeping on-demand access as the default for self-paced clinicians. |
| 58 | Points, badges & certificates | 🟡 Partial | P1 | Certificates already exist (Verified badge, serial, PDF) but issuance is not tied to any passing grade; bind certificate issuance to a passing assessment and verified completion, and skip points/badges as off-brand for a clinical audience. |
| 59 | Assignment upload + approval workflow | 🔴 Missing | P2 | No submission/approval surface exists; add a case-study/protocol upload with faculty approval so clinicians can submit real-world applications for review, strengthening the rigor and value of the certification. |
| 60 | Deep platform extensibility (themes/integrations) | ⚪ N/A | N/A | A plugin/theme extensibility framework is unnecessary for this single-tenant custom Next.js build; invest that engineering in the missing moderated community and assessment layers instead. |
TalentLMS
| # | Feature | Status | Pri | Recommendation |
|---|---|---|---|---|
| 61 | Gamification engine — points, badges, levels, leaderboards, rewards | 🔴 Missing | P3 | Skip points/leaderboards (they clash with a professional clinician audience); at most award a subtle per-certification completion badge that reinforces credential prestige rather than competition. |
| 62 | Instructor-led training (ILT), in-person + video-conference, blended | 🔴 Missing | P2 | Add lightweight live-cohort/webinar scheduling inside the LMS that ties online lessons to ISSCA's existing in-person certification conferences, creating a true blended clinical-certification track. |
| 63 | Sequenced learning paths | 🟡 Partial | P2 | Build on the existing per-course Complete-&-continue sequencing by adding prerequisite gating and bundling the 5 courses into ordered certification tracks so clinicians progress through a defined curriculum. |
| 64 | Branching / decision-based scenarios | 🔴 Missing | P3 | Defer until Reading and Quiz lessons actually exist, then consider case-based clinical decision branches (e.g., peptide dosing scenarios) since they fit medical training far better than generic gamified branching. |
| 65 | SCORM 1.2 / xAPI / cmi5 tracking | ⚪ N/A | N/A | Skip entirely; the native Next.js content model already tracks per-lesson progress for self-authored video/PDF courses, and SCORM/xAPI would add only integration overhead with no audience benefit. |
| 66 | Branches — multi-tenant sub-portals with own branding/language | ⚪ N/A | N/A | Not applicable for a single-brand, single clinician audience; invest the equivalent effort in the multi-language UI gap (English-only today) rather than sub-portal tenancy. |
| 67 | Automations & mass actions | 🔴 Missing | P2 | Add transactional/email automations for enrollment, lesson completion, and certificate-renewal reminders, which also closes the currently absent email layer and keeps paying clinicians re-engaged. |
| 68 | Reusable content library / internal marketplace | ⚪ N/A | N/A | Unwarranted at a 5-course scale and the internal-marketplace concept is pure bloat here; revisit only a shared media/asset library if the catalog grows several-fold. |
| 69 | Skills + certifications with expiry/renewal | 🟡 Partial | P1 | Certificates already issue with verified badge/serial/date, but add CME-style expiry plus a renewal workflow and tie issuance to a passing assessment so the clinical credential carries real integrity. |
| 70 | Custom reports + native mobile apps | 🟡 Partial | P2 | Admin already shows enrollment counts, so extend it with CSV export and per-student progress reports; for mobile, ship a responsive PWA rather than costly native iOS/Android apps given the niche audience size. |
Docebo
| # | Feature | Status | Pri | Recommendation |
|---|---|---|---|---|
| 71 | AI-personalized learning paths + enrollment/content suggestions | 🔴 Missing | P3 | Skip AI path-engines for a 5-course catalog; add a simple rules-based 'recommended next certification' card on the dashboard driven by completed courses and level (Foundational -> Advanced). |
| 72 | Skills intelligence / skills management | ⚪ N/A | N/A | A skills-graph/competency-taxonomy engine is enterprise bloat for five clinical certifications; track competence instead via the per-course certificate, not a skills system. |
| 73 | Social learning — user-generated content, sharing, Q&A | 🔴 Missing | P0 | Build the stakeholder-P0 moderated layer: per-lesson threaded comments and a course Q&A with faculty replies and likes, replacing the current private-only Notes as the sole communication surface. |
| 74 | Observation checklists (manager documents on-the-job competence) | 🔴 Missing | P2 | Add a lightweight faculty sign-off checklist for the hands-on workshop tracks (e.g. Cancún) so an instructor can attest in-person clinical competence before the certificate issues, strengthening cert credibility. |
| 75 | Certification & retraining app (validity periods, auto-renewal) | 🟡 Partial | P1 | Certificates exist with serial + verified badge but never expire; add validity periods and CME-style recertification/renewal reminders so credentials stay current and defensible for paying clinicians. |
| 76 | Gamification (leaderboards, rewards) | 🔴 Missing | P3 | Leaderboards/points are inappropriate for a professional clinician audience; at most add a quiet per-course completion streak or progress badge, no public ranking. |
| 77 | Generative-AI authoring / AI agents | 🔴 Missing | P3 | Low priority for a 5-course catalog; if anything, give admins an AI assist inside the existing curriculum builder to draft lesson outlines and quiz questions, reviewed by faculty before publish. |
| 78 | Extended enterprise / multi-domain | ⚪ N/A | N/A | Multi-tenant sub-portals are out of scope for a single-brand niche certification business; one branded Learning Centre is the right model. |
| 79 | Learning-analytics dashboards | 🟡 Partial | P2 | Admin Overview plus per-course Enrolled counts exist but there is no engagement depth; add completion rates, drop-off-by-lesson, and (once quizzes ship) pass rates so the business can see where paying students stall. |
| 80 | Content-marketplace integrations | ⚪ N/A | N/A | A third-party content marketplace dilutes a proprietary clinical curriculum and is bloat here; keep all content first-party and faculty-authored. |
Moodle
| # | Feature | Status | Pri | Recommendation |
|---|---|---|---|---|
| 81 | Rich activity modules: Forum, Quiz, Workshop, Lesson, Wiki, Glossary, Database | 🟡 Partial | P0 | The Lesson player exists but only Video works; ship a moderated Forum/discussion activity (the stakeholder P0) plus a real Quiz activity, and skip Wiki/Glossary/Database/Workshop as bloat for a 5-course clinical catalog. |
| 82 | H5P interactive content + central Content Bank | 🔴 Missing | P3 | Don't build a central Content Bank; if any interactivity is wanted, add lightweight in-video checkpoint questions on injection-technique demos after the basic Reading and Quiz lesson types are actually implemented. |
| 83 | Workshop activity with peer assessment/grading | ⚪ N/A | N/A | Peer grading doesn't fit a paid expert-led certification where clinicians expect instructor authority; route any peer interaction through the moderated community layer instead. |
| 84 | Competency frameworks + learning plans | 🔴 Missing | P3 | Skip formal competency frameworks; the linear per-course curriculum plus the issued certificate already signals mastery for this niche audience, so invest engineering elsewhere. |
| 85 | Open Badges (issue + backpack) | 🟡 Partial | P2 | Certificates with serial numbers and a Verified badge already exist; upgrade issuance to portable Open Badges / verifiable credentials clinicians can attach to LinkedIn, and tie issuance to a passing final quiz. |
| 86 | Advanced gradebook (weighted categories, scales, rubrics) | 🔴 Missing | P2 | Build a simple per-course pass/fail score from the (still-unbuilt) final quiz to gate certificate issuance; weighted categories, scales, and rubrics are overkill for a single graded assessment per course. |
| 87 | Conditional activities / access restrictions (completion + date + grade) | 🔴 Missing | P1 | Any lesson is freely reachable today; gate certificate issuance behind full lesson completion plus a passing final-quiz grade to protect certification integrity, optionally adding date-based drip for cohort launches. |
| 88 | SCORM + LTI external tools | ⚪ N/A | N/A | Not needed for a bespoke Next.js LMS with first-party video/PDF lessons; avoid SCORM/LTI packaging overhead entirely. |
| 89 | Cohorts + granular roles/permissions | 🟡 Partial | P2 | Only a contextual Student/Admin pair exists; add a dedicated Instructor/Moderator role to staff the P0 community and grade quizzes, but skip cohorts and multi-tenant permission matrices. |
| 90 | Open-source plugin ecosystem / self-host | ⚪ N/A | N/A | Not applicable to a custom Next.js/NextAuth product; the bespoke stack is the right call for this niche, so keep building features in-house rather than adopting a plugin platform. |
Circle
| # | Feature | Status | Pri | Recommendation |
|---|---|---|---|---|
| 91 | Spaces + Space Groups to organize courses/discussions/events | 🔴 Missing | P0 | Add a small set of moderated Spaces, one per certification track (Peptide, Regenerative, MUSE, Biohacking), each grouping that track's lessons, case discussions and live sessions; avoid a sprawling space tree for a 5-course catalog. |
| 92 | Courses that fold in events, office hours, live Q&A | 🔴 Missing | P0 | Attach recurring faculty office-hours and live case-review Q&A to each certification cohort, surfaced on the course detail page with an RSVP calendar and an archived recording feed. |
| 93 | Live streams + events with RSVP | 🔴 Missing | P1 | Offer live-streamed demo/case sessions with RSVP and reminders tied to each cohort, auto-archiving recordings into the relevant course, reusing the existing ISSCA events brand instead of building a separate events product. |
| 94 | Gamification — points for likes/posts/comments, leaderboards, levels, rewards | 🔴 Missing | P3 | Skip social points and leaderboards (off-tone for expert paying clinicians); if any progression is shown, use quiet certification milestones and CME-credit tracking rather than competitive gamification. |
| 95 | Rich comments + reactions (GIFs, emoji) on posts | 🔴 Missing | P0 | Ship moderated, threaded per-lesson comments with faculty replies and emoji reactions (skip GIFs as off-tone for clinical), since comments are entirely absent and this is the stakeholder's #1 'communication is key' ask. |
| 96 | Member DMs + group chat | 🔴 Missing | P0 | Add cohort-scoped moderated group chat (one per certification class) plus optional peer DMs with faculty/moderator visibility, rather than open uncontrolled messaging among clinicians. |
| 97 | Branded checkout — trials, installments/BNPL | ⚪ N/A | P3 | Keep purchasing in the dedicated external commerce system but enable installments/BNPL there for high-ticket certifications, handing off via SSO so paid status auto-unlocks the LMS. |
| 98 | AI agents for onboarding/support trained on your content | 🔴 Missing | P2 | Add a retrieval assistant grounded ONLY in the certified course content and downloadable protocol PDFs, returning citations and an explicit 'not individual medical advice' disclaimer for clinician questions. |
| 99 | Automated member nudges / engagement workflows | 🔴 Missing | P2 | Trigger progress-based nudges (stalled-at-X%, certificate-deadline reminders, new live-session alerts) via email/in-app using the existing per-course progress data to lift certification completion rates. |
| 100 | Mobile + white-label branded app | 🔴 Missing | P2 | Make the already-solid responsive site an installable PWA for mobile and offline lesson/PDF access instead of building a full native or white-label app, which is unnecessary for a single-brand cert business. |
Stakeholder's #1 priority ("communication is key"). All 18 weighted benchmark items (9, 10, 12–16, 25, 43–44, 49, 73, 91–96) are Missing/Partial today. This is the spec to close them.
The lesson player already has a center column (video → Resources/PDF) and a right-hand Notes panel (textarea + list, max-h≈44vh). Add discussion without a redesign:
Notes (private) · Discussion (public) — each with a count badge. Notes stays exactly as-is; Discussion renders the thread in the same column. Add a "Expand" affordance that widens Discussion into a full-width section below Resources for long threads.Notes · Discussion tab strip there. This also fixes the "notes buried under the PDF" problem by giving the panel a clear, compact header.Comment id, lessonId, courseId, authorId, parentId(nullable→thread),
body(text, escaped), isInstructorReply(bool), status(visible|hidden|flagged|deleted),
editedAt, createdAt, updatedAt
Reaction id, commentId, userId, type(like|insightful|...) // unique(commentId,userId,type)
Mention id, commentId, mentionedUserId // drives notifications
Flag id, commentId, reporterId, reason, resolvedBy, createdAt
Reuse the existing User/role and Lesson/Course relations. Server actions for create/edit/delete/react/flag; revalidate the lesson path. Escape on render (Notes already does this correctly — reuse it).
v1 (ship first): threaded comments per lesson · instructor/moderator reply (visually badged) · like reaction · sort (Newest / Top) · edit + soft-delete own comment · moderator hide/restore + delete any · empty state · count badge. Open to any enrolled user (the paying audience), gated by the same auth that gates the lesson. v2: @mentions + notifications · multiple reaction types · report/flag queue in /admin · pin a comment · per-course "Discussion" digest email · resolved/answered marking for Q&A.
| Build in the Next.js app | Embed Circle / Discourse / SaaS comments | |
|---|---|---|
| Identity | ✅ reuse authjs session + enrolment (no second login) | ❌ separate accounts / SSO plumbing; splits the audience |
| Moderation & data | ✅ full control; clinical/patient-adjacent talk stays in your DB | ⚠️ data leaves your control; moderation in a 2nd tool |
| Lesson context | ✅ native per-lesson threads, same UI | ⚠️ generic embed, weaker per-lesson binding |
| Time-to-ship | ⚠️ ~1.5–2.5 wk for v1 | ✅ days, but ongoing seat cost + fragmentation |
For a niche, paid, clinical audience where moderation, data ownership, and a single seamless identity matter, native wins. The app already has the identity, the per-lesson context, the DB, and the escaping pattern — the marginal cost over Notes is small. Use a hosted option (Circle) only if a broader community hub (events, spaces, DMs — items 91–96) becomes a strategic product in its own right; then run it alongside, not instead of, native lesson comments.
Directly: 9 (lesson comments/messaging), 25 (built-in community), 43–44 (gated community + member chat — partial via threads/DMs in v2), 49 (topic spaces — per-course), 73 (social learning / Q&A), 91–96 (Circle-class community — v1 covers comments+reactions+moderation; events/streams/DMs are v2/strategic).
Each item names the element, states the problem in one line, gives the fix.
11,30,21)30,31)11,32)42,41)% and raise fill contrast. (B8/B9 — 22,11)/dashboard, Admin on /admin). No change needed; documented to prevent a false report.| # | Stakeholder issue | Verdict | Evidence | Concrete fix |
|---|---|---|---|---|
| 1 | Top-right ✕ should be a hamburger/general menu | Confirmed | Bare a[aria-label="Exit to dashboard"], 40×40, no label/tooltip; only chrome control besides theme. 11,21,30 | Hamburger → menu (Outline/Exit/Profile/Sign out); reuse dashboard drawer |
| 2 | "Course content" expander not discoverable | Confirmed (mobile) | Mobile <summary>"Course content · 0%" looks like a grey breadcrumb w/ small chevron; desktop sidebar is always-open (fine). 30,31 | Promote to a labelled button + list icon + lesson count; make sticky |
| 3 | PDF viewer has horizontal scroll / needs full width | Partially confirmed / re-scoped | No page-level h-scroll at any width. Real cause: native PDFium iframe owns its own internal scroll/zoom on narrow widths; also reserves 72vh empty band. 04 metrics,32 | PDF.js fit-to-width; lock pane scroll; lazy-open |
| 4 | Notes ↔ PDF scroll coupling | Not reproduced as described / re-scoped | Notes list is already its own overflow-y-auto (max-h ~44vh), separate column from the PDF on desktop. Real risk is nested scroll on mobile (page + PDF iframe + notes list). 04 metrics,05 | Single page scroll; sticky Notes; fixed-height fit PDF so there's one scroll region |
| 5 | Add a Comments/Community section (P0) | Confirmed absent | Only private per-lesson Notes; no comments/threads/replies/reactions/mentions/DMs/forum anywhere. 11,50,51 | Build threaded moderated comments — full spec in §3a |
P0 — communication & integrity (do first)
signOut wiring). — S (B1)P1 — finish the product
P2 — polish & growth
All screenshots in qa-audit/shots/; raw DOM/console/network captures in qa-audit/data/. Key files by finding:
| Finding | Screenshots |
|---|---|
| Login + states | 01-login-page, 02-login-filled, 65-invalid-login, 66-empty-fields, 64-protected-redirect |
| Dashboard / catalog / certificates | 03-post-login, 55-browse, 54-certificates, 56-account-menu |
| Lesson player (desktop) | 11-lesson-first, 22-lesson-dark, 21-exit-hover |
| Lesson types | 50-quiz (Assessment coming soon), 51-summary (Reading coming soon), 52-calc, 53-guides |
| Notes CRUD | 40-note-added, 41-note-long, 42-note-hover, 43-notes-after-cleanup |
| Mobile / responsive | 30-mobile-lesson-top, 31-mobile-drawer-open, 32-mobile-pdf-region, 33-mobile-dashboard, 34-mobile-nav-open, 35-mobile-course |
| Progress write | 62-after-complete (0%→2%) |
| Logout (broken) | 63-after-logout, 67-logout-result, 68-logout-verify |
| Admin (read-only) | 60-admin-home, 61-admin-courses |
| Data | 04-layout-metrics.json, 04-pdf-info.json, 05-notes-findings.json, 11-logout-verify.json, 08-explore.json, *-console-errors.json/*-net-fails.json (all empty = clean) |
Click any image to open full size. Captured live, desktop 1440 + mobile 390, light + dark.


































