Problems, and what was built
to solve them

Client names are withheld — several of these are internal systems. The problems, the decisions and the outcomes are exactly as they happened.

Every new document, on the right desk by morning

Accounting · Automation

Every new document, on the right desk by morning

The problem. An accounting practice with hundreds of clients had to sign into a government tax portal for each of them to find out whether anything new had arrived — and documents arrive every day, not once a month. Nobody could tell what was new without looking, so either a morning went on checking or a document sat unseen until a deadline made it urgent.

What was built. A program that signs in for every client on a schedule, collects whatever is new, and files it in a database against that client, period and document type. Then it routes what it found: the employee responsible for a client is notified about their own clients only, and the manager gets a single report every morning covering the whole practice. Every action is logged, so what ran and what it collected is checkable rather than remembered.

Outcome. Checking stopped being somebody’s job. The documents sit in one searchable place instead of a folder tree, each one reaches the person accountable for that client on the day it arrives, and the manager sees the whole practice in one daily report instead of asking around.

Daily automationDocument databasePer-client routingManager reportAudit log
Python in seconde, taught by teachers who are not programmers

Education · Platform & back end

Python in seconde, taught by teachers who are not programmers

The problem. The French curriculum puts Python in classe de seconde, and the teachers asked to deliver it are usually not programmers. Installing Python across school machines is a project in itself, so students end up writing code on paper. And nobody could see what had been changed, by whom or when — a question could be edited after an exam had been submitted and leave no trace.

What was built. A browser platform. Students write and run real Python with nothing to install. Each lesson gives the teacher a guided path — exercises, expected output, automatic checking — so the class does not depend on the teacher being a developer. Behind that, the school gets the monitoring side: every action recorded, and every change to a lesson, an exercise or an exam question kept with its author and its timestamp, including changes made after submissions have arrived.

Outcome. A school can teach the seconde Python curriculum without a specialist teacher and without touching its computers — and after any dispute it can answer the question that actually matters: what was changed, by whom, and when.

Python in the browserGuided lessonsAutomatic checkingChange historyRole permissions
Read the full case study
Research data that behaves like a record, not a folder

Research · Data & analysis

Research data that behaves like a record, not a folder

The problem. A laboratory generates run sheets, instrument logs and sample sheets faster than anyone files them. Years of paper in binders, results scattered across drives, and still no way to answer the question that decides whether a result stands: which samples produced this figure, on which run, with which reagent lot, under which version of the analysis.

What was built. A research board on the same records model as the rest of this work. Every sample logged once and followed through intake QC, sequencing, alignment and analysis, so the drop-off at each step is visible. Runs tracked by instrument and reagent lot, with the scan of the original run sheet kept beside the row. And the analysis on the same screen rather than in a separate tool: log2 fold change by gene and condition as a heatmap, and association across the genome with the significance threshold drawn where it belongs.

Outcome. Provenance becomes a lookup instead of an archaeology project. The cell that does not fit its row is one click from the run sheet behind it, which is the difference between a result you can defend and a result you can only repeat.

Sample trackingQC by instrumentExpression heatmapGWAS viewProvenance
See this board working
A website that could actually raise money

Non-profit · Web design & build

A website that could actually raise money

The problem. A large NGO's site described the organisation's structure rather than its work. Programme pages were out of date, donation was buried, and staff could not publish without outside help.

What was built. A restructure around programmes and impact, a clear donate path from every page, bilingual content, and a content-editing setup the communications team runs themselves.

Outcome. Programme pages now get updated by the people running the programmes, and supporters reach the donation page in one step from anywhere on the site.

Information architectureCMSBilingualAccessibility
Getting years of Excel into shape

Operations · Database

Getting years of Excel into shape

The problem. The record of record was a workbook several people edited at once. Conflicting copies, no history, and a monthly report rebuilt by hand every time.

What was built. A proper relational schema, a migration that carried the history across including the inconsistent early rows, roles so not everyone can change everything, an entry screen with validation, and the monthly report generated automatically.

Outcome. One authoritative copy of the data, a report that arrives on its own, and a backup that has been tested by restoring it.

PostgreSQLData migrationValidationReporting
Before spending, know what you have

Consultancy · Audit & strategy

Before spending, know what you have

The problem. A school wanted a new website and a learning platform, and had three quotes that did not describe the same thing.

What was built. A written audit of the existing site — performance, mobile behaviour, accessibility, content gaps, security — followed by a specification for the rebuild and the platform, priced in phases the school could approve one at a time.

Outcome. The school owns a document it can send to any developer, and knows which phase buys the most for the smallest first commitment.

AuditSpecificationPhased plan
One curriculum, two languages, one build

Education · Multilingual

One curriculum, two languages, one build

The problem. A national-curriculum course had to exist in two languages. Keeping two separate websites in step was already failing — corrections landed in one and not the other.

What was built. A single content model with both languages side by side, a language switch that keeps the reader on the same lesson, and a genuine right-to-left layout: mirrored navigation, correct typography, numerals handled properly.

Outcome. One place to edit a lesson, both languages updated together, and a site that reads naturally in each rather than looking translated.

i18nRTLCMSDesign system

Different industries, the same three problems

Almost every project above started as one of these. If you recognise yours, the path is already mapped.

Pattern 01

A person is the integration

Someone copies data from one system into another, or downloads and files documents by hand. It works until they take leave.

→ Automation, or an API between the two

Pattern 02

Nobody knows which file is current

The truth lives in a spreadsheet with five versions, and reports are rebuilt from scratch each period.

→ A real database, with roles and history

Pattern 03

Every change needs a developer

The site was built from a bought theme. Updating a page means paying someone, so pages do not get updated.

→ A design system and a CMS your team runs

Tell us what’s slowing you down.
WhatsApp +1 514 889 1557

Monday–Friday, 9:00–18:00 (Montreal time)

Full contact details

Your details are used only to reply to this enquiry.

item