Industry

Education

Education software has a load profile unlike almost anything else: near-idle for weeks, then every student in the institution submitting within the same twenty minutes because the deadline is the same for all of them.

The load is synchronised, and that changes everything

Commercial traffic arrives spread across a day. Academic traffic is deliberately synchronised — enrolment opens, a deadline closes, results publish. Capacity planned against averages will be wrong by more than an order of magnitude at exactly the moment failure is most visible and least forgivable.

The practical consequences are unglamorous: submission has to be durable and idempotent so a student retrying on a failing connection does not lose work or duplicate it, and the queue behind it must accept the spike even when processing lags. A submission lost at a deadline is an academic dispute, not a support ticket.

Where we work

Learning platforms

Course delivery, assessment and progress tracking, including the offline and low-bandwidth cases.

Student information systems

Enrolment, records and timetabling, integrated with the finance and identity systems already in place.

Assessment and integrity

Submission, grading workflows and plagiarism handling, with an appeals trail that holds up.

Institutional integration

LTI, SIS and identity federation, so a new tool does not mean another set of credentials.

Learning analytics

Progress and at-risk indicators built with explicit care about what a prediction is allowed to trigger.

Accessibility remediation

Bringing existing platforms up to standard, prioritised by which students are currently excluded.

Constraints that shape the work

The load arrives all at once

Nine on Monday, and every deadline evening. Average capacity is meaningless here; the system is sized for a synchronised spike or it fails in public.

Accessibility is a legal floor

Public institutions have statutory obligations. WCAG conformance is a requirement of the build, with evidence, not a remediation project scheduled for later.

Rostering is nobody's favourite

SIS integrations, mid-term enrolment changes and identity across systems generate most of the support load in any learning platform.

Minors change the rules

Data minimisation, retention and parental consent are structural constraints on the schema, and they differ by jurisdiction.

Student data deserves more caution than it usually gets

Education data is disproportionately about minors, and the sector has a pattern of collecting engagement telemetry far beyond what any pedagogical purpose requires. The safest position is to collect less, and to be able to explain the purpose of every field you do collect.

Where analytics identify students as at risk, the design question is not only accuracy but consequence. A model that quietly influences how a student is treated, without a human decision and a route to challenge it, is a governance problem regardless of how good the model is.

  • Data minimisation as a design rule — a purpose for every field collected
  • WCAG 2.2 AA verified with assistive technology; content authoring included
  • Durable, idempotent submission so a deadline retry cannot lose work
  • Predictions surfaced to humans with reasons, never acting autonomously
  • Retention and deletion aligned to institutional policy and law
Limits

When not to hire us

We do not build proctoring or surveillance features — camera monitoring, keystroke analysis, or behavioural flagging of students. The evidence for their effectiveness is weak and the harm to students is not.

We also decline platform builds scoped without teaching staff. Learning tools designed around administrative reporting rather than around a lesson get quietly abandoned by the people meant to use them.

FAQ

Common questions

Yes — LTI for tool integration, plus whatever the platform exposes for rosters and grades. The friction is usually in grade passback and identity mapping rather than in launching the tool, so we would test those two paths early rather than at the end.

Scoping call

Bring us the part that is stuck.

Send the constraint you are working around and we will come back with an approach, a rough shape of the work, and what it would take to hand it over.