247 Labs specified and delivered a monolithic Laravel application on PHP 7, with Vue.js driving the purchasing flow and Stripe handling payments inline rather than bouncing users to a hosted checkout. The case authoring tool was built on Fabric.js, so a content admin can draw hotspots, highlights, arrows and annotations directly onto a diagnostic image in the browser — the same canvas machinery that captures where a learner believes a finding is located.
A three-metric competency engine. Performance is defined by accuracy, sensitivity and specificity, and competency requires clearing an administrator-set threshold on all three simultaneously. A learner who calls everything abnormal scores brilliantly on sensitivity and fails medicine; one who calls everything normal looks fine on specificity and misses fractures. Only the three together describe a clinician you would trust. Thresholds are set per course rather than hard-coded, which is what allows the catalogue to run standards tuned to clinical consequence — 80% on dental bitewings, 85% on chest radiographs and ECG, 90% on the elbow, pelvis, ankle and child-abuse identification courses.
Competency that latches. Once a learner meets the standard, the determination holds even if subsequent performance drifts below it. The achievement is a fact about a moment that was reached, not a live scoreboard that punishes continued practice — a deliberate pedagogical decision that prevents the system from discouraging practice past certification.
Eight user roles reflecting how medical education actually buys. Trainee, faculty, program director, super-director, manager, coordinator, platform admin and case admin. A program director purchases seats in bulk for a cohort; a coordinator handles logistics without seeing grades; a manager runs daily operations without spending money; content authorship is delegated per course to the clinicians who own that subject matter.
Assessment integrity over the open web. The answer key cannot reach the browser before the learner commits. If it does, the assessment is worthless and so is every research finding drawn from it. Mitigations run from bundling and minification through strictly same-origin API scoping to the fundamental rule of never shipping the diagnosis until an answer is locked in.
Engineering for the environments it actually runs in. Non-functional requirements assumed roughly 1 Mbps and set a battery budget of six hours on mobile and two on a notebook under continuous use — because the platform is used in resource-limited settings, and the media in question is high-resolution diagnostic imagery, now including video for the ultrasound courses. Database collation handles French, Spanish and other keyboard entry; account retrieval is case-insensitive; surnames run past thirty characters. In a platform used by clinicians in dozens of countries, name handling is not an edge case.