Back to all posts

    Building Privacy-First Education Tools in 2026

    NumeraCode Team 5 min read430 words
    Share:

    The EdTech privacy problem Most education platforms treat student data as a byproduct of learning — and then as a product. Every wrong answer, every hesitation, every session length gets logged, aggregated, and fed into analytics pipelines. For adult learners preparing for high-stakes certifications, that's a meaningful privacy exposure they rarely think to ask about.

    At Numeracode, we built Numera — our Ontario Mathematics Proficiency Test (MPT) practice platform — on a different premise: your practice data belongs to you, and the easiest way to protect it is to never collect it in the first place.

    The offline-first architecture When we designed Numera, the foundational architectural decision was straightforward: everything runs on the client. There is no server tracking your progress, no analytics pipeline recording your mistakes, and no database storing your personal information.

    This wasn't just a privacy feature — it was a design philosophy that shaped every subsequent decision. Building offline-first gave us four properties at once:

    Students can practice anywhere, even without internet access No data ever leaves the device — by construction, not by policy The app loads instantly after the first visit There are zero server costs to maintain "By construction, not by policy" is the key phrase. Privacy guarantees written in a terms-of-service can change. Privacy guarantees baked into the architecture can't.

    Service workers and caching strategy The offline capability relies on a service worker that pre-caches all question banks, the scoring engine, and the UI shell on first load. After that initial visit, the entire app runs without issuing a single network request. The caching strategy is deliberately conservative — reliability matters more than freshness when someone is mid-practice session on a flaky connection:

    // Cache-first: serve from cache, fall back to network on miss const CACHE_STRATEGY = 'cache-first'; const CRITICAL_ASSETS = ['/questions', '/engine', '/shell'];

    // On install, pre-cache everything a student needs self.addEventListener('install', event => { event.waitUntil( caches.open(CACHE_NAME).then(cache => cache.addAll(CRITICAL_ASSETS)) ); }); Because Numera is a Progressive Web App (PWA), students can also install it directly to their home screen — no app store, no account required. The install prompt is the entire onboarding flow.

    What's next We're expanding Numera's question bank to cover more Ontario curriculum areas and adding spaced-repetition scheduling — a feature that's genuinely difficult to do well without a server, and one we're tackling entirely client-side using a lightweight algorithm stored in localStorage.

    If you're preparing for the Ontario MPT and want to try an app that will never know your name, we'd love your feedback. You can reach us at [email protected]. Experience the tests at app.numeracode.com

    Share:

    Comments (0)

    Leave a comment

    Comments are moderated. Approved comments will appear after review.

    The views in comments are those of the author and do not necessarily reflect the views of Numera. We reserve the right to remove inappropriate content.