Learning Solutions
A portfolio of selected works demonstrating the transformation of raw content into SCORM-compliant, interactive learning assets.
Click cards for details
Experience
Kidvento (Ullipsu)
Jan 2025 – PresentSCORM Team Lead
Learning Owl
Jan 2023 – Dec 2024Instructional Designer & eLearning Development Lead
Learning Lozix
2019 – 2022eLearning Developer & Content Designer
Lionbridge
2018Localization Integrator (Contract)
Core Competencies
Click any skill to see the project behind it.
AI in my workflow
The tools I lean on — and what each one replaces.
Education
Bachelor of Computer Animation
Dr. Babasaheb Ambedkar Univ, Ahmedabad • May 2015
Case Studies
Three projects in depth — the design call, the engineering, and the management behind each. Full technical write-ups linked below.
Full write-ups
Cutting SCORM packaging from 4 hours to 10 minutes
The post-publish CLI behind the Kidvento pipeline — and the class of silent bugs the auditor surfaced once it was running.
Read case study →Adaptive bitrate video inside a SCORM package — no CDN, no LMS config
Pre-publish FFmpeg pass plus a bandwidth probe injected into the player. Watchable video on school networks where compression alone wasn’t enough.
Read case study →The mid-interaction freeze — a duplicate interactions.N.id story
Why the LMS was right, Storyline was right, and the course still froze. A SCORM API instrumentation walkthrough.
Read case study →
Open Source & Live Demos
Tools and case studies you can read, run, and download.
scorm-kit — an opinionated SCORM / cmi5 / xAPI build pipeline
One CLI, eight subcommands that close the production gaps between a clean publish and a clean LMS launch — vendor-agnostic, with a SCORM 1.2 → cmi5 wrapper for dual-stream tracking.
Subcommands
8
Test suite
27/27
Runtime deps
0
Exit codes
CI-ready
One CLI, eight subcommands. Each one closes a real gap in the production workflow — the gaps that turn a deploy into “the LMS is being weird” tickets two weeks later. Vendor-agnostic: pairs with any SCORM 1.2 / cmi5 authoring tool, Storyline included. Includes a SCORM 1.2 → cmi5 wrapper for the dual-stream pattern most teams now use (SCORM for HR completion, cmi5/xAPI for behavioural data).
cmi5— validator + linter + SCORM 1.2 → cmi5 wrapper (dual-stream)lint— manifest, SCORM API, asset refs, interaction collisionsa11y— WCAG 2.2 AA static audit of every HTML in the packageprivacy— PII / tracker / xAPI plaintext-actor / data-leak auditdiff— structured manifest + per-file unified diff for PR reviewi18n— one package, N languages, learner picks at launchmock— local SCORM 1.2 runtime for development without an LMSrum— injects a real-user-monitoring runtime; JSON beacons
Storycraft — Markdown → SCORM 1.2
Structured Markdown in, a deterministic SCORM 1.2 zip out — same input, byte-identical output. For compliance modules and localised variants where Storyline is overkill.
Build time
~1s
Codebase
~700 LOC
Runtime deps
0
LMS target
SCORM 1.2
A small internal tool extracted from the Kidvento pipeline and open-sourced as a teaching artifact: a structured Markdown storyboard in, a deterministic SCORM 1.2 zip out. Same input, byte-identical output. Useful for compliance modules and localised variants where Storyline is overkill — and as a reference build that exercises every scorm-kit subcommand.
- Linear, branching, and knowledge-check slides from one Markdown file
- WCAG 2.2 AA-aligned — keyboard nav, focus management, ARIA,
prefers-reduced-motion - Runs in any LMS or standalone — same zip, both modes
--locale hi/--locales hi,ta,knfor per-language builds from a single master- Optional xAPI emit; byte-identical deterministic builds for QA diffs
xapi-doctor — diagnose xAPI statements and LRS connectivity
The diagnostic counterpart to scorm-kit — when the LRS rejects a statement with a four-character JSON body, this tells you exactly which field is wrong, in plain English.
Subcommands
3
Lint rules
25
Tests
17/17
Runtime deps
0
The diagnostic counterpart to scorm-kit. When a cmi5 launch produces statements but the LRS rejects them with a four-character JSON body, this is the tool that says exactly which field is wrong. 25 xAPI 1.0.3 rules plus a cmi5 profile (reserved verbs, registration, the moveon category activity). Pings LRSes, validates auth, echoes the X-Experience-API-Version handshake. POSTs and translates non-2xx responses into plain English.
lint— xAPI 1.0.3 statement validation: IFI uniqueness, IRI shape, ISO-8601 timestamps and durations, score range, context constraints--profile cmi5— reserved-verb registration,moveoncategory activity,mbox-without-accountwarningping—/about+ version handshake, CORS visibility, authenticated/statementsprobe,X-Experience-API-Versionechosend— lint then POST; refuses to send invalid statements; explains 400/401/403/404/409/413/415/5xx in plain English
360° Perspectives
Every project gets read three ways. Open any piece of work above to switch between the build, the design, and the strategy behind it.
Strategic Lens
Loading...
Design Lens
Loading...
Technical Lens
Loading...