Start a conversation
Case studies

Three projects, told properly.

Production deployments rather than pilots, with the problem stated as the client stated it and the outcome stated as it actually landed. Twenty-two shorter case notes are on the work page.

live
Education · platform

A college that could not see who was drifting until it was too late

ClientLondon Brookes College
ScopeClassAura platform · production deployment

The problem

Retention decisions were being made from three separate spreadsheets, once a term. By the time a learner was identified as at risk, they had usually already stopped attending, and nobody could reconstruct why a particular student had been flagged.

What we did

  • Read engagement signals directly from the systems the college already used, through Microsoft Graph, rather than asking staff to enter anything new.
  • Built a ranked cohort view with the contributing signals shown next to each learner, so a flag arrives with its reasoning attached.
  • Added a student-facing portal showing the same picture, so a learner can question a flag instead of receiving it as a verdict.
  • Isolated every institution's data at row level across thirteen core tables, with role-based access and full audit logging.

The outcome

  • Live in production as a paying subscription customer.
  • Weekly cohort review replaces once-a-term spreadsheet reconciliation.
  • Every flag carries the signals that produced it, so a tutor can act or dismiss on sight.
React 18TypeScriptFastAPIPostgreSQLMicrosoft GraphAzure
Education · infrastructure

Renaming every account in a college without losing a single record

ClientLondon college · IT estate
ScopeMicrosoft 365 and Moodle domain migration

The problem

The college had obtained an .ac.uk domain and needed every member of staff moved off the old .co.uk address. Email, Teams, SharePoint and the virtual learning environment all keyed off that domain, and teaching could not stop for the change.

What we did

  • Inventoried the estate first: tenant configuration, mail routing, Teams and SharePoint dependencies, and every Moodle account tied to the old domain.
  • Planned the change as a batch operation with data continuity as the first constraint rather than an afterthought.
  • Sequenced the cutover so historic mail, files and course content carried across to the renamed accounts.
  • Ran the change alongside live teaching instead of requiring a shutdown window.

The outcome

  • No historic data lost across mail, Teams, SharePoint or the VLE.
  • Existing content carried over intact to every renamed account.
  • Teaching continued throughout the migration.
Microsoft 365Entra IDExchange OnlineSharePointMoodlePowerShell
Agriculture · IoT and ML

Closing the loop from a soil reading to a running pump

ClientSmart Agriculture Monitoring System
ScopeSensor rig, on-device model and mobile control

The problem

Irrigation decisions were being made by walking the field and guessing. Getting sensor data back to a decision-maker was the easy part; getting a decision made and acted on without anyone present was not.

What we did

  • Built an ESP8266 rig capturing soil moisture, temperature, humidity and water level, streaming to Firebase in real time.
  • Put the model on the handset so an irrigation decision does not depend on a network round trip.
  • Added remote pump control over IoT-enabled devices, closing the loop from reading to action.
  • Designed for intermittent connectivity throughout, because the field is not an office.

The outcome

  • A complete sensing, deciding and acting loop with nobody in the field.
  • On-device inference keeps the system working when connectivity does not.
  • The same architecture now underpins our livestock and controlled-environment work.
PythonCJavaFirebaseESP8266TensorFlow Lite

Ask us about the parts that went wrong.

Every one of these had a fortnight where the plan was wrong. We are happy to talk through those on a call, because it tells you more than the summary does.