Skip to content

Full-lifecycle proof

We conceived, built and still run LutinRouge.

A complex multi-tenant SaaS platform, taken from a blank page to production and kept there ever since: specification, architecture, development, operations and front-line support, all of it ours.

We are not selling you nursery software. We are showing you what our delivery model produces when we own every decision and carry every consequence, including the two AI systems that now build and support it.

← Missions

The product

An ERP for a business that runs on dates.

LutinRouge covers the full operating cycle of a nursery: enrolment, parent contracts, attendance, invoicing, staff management, and multichannel communication with families. Each subscribing setting runs in its own isolated tenant.

The difficulty is not the feature list. It is that every number reconciles to a date. Attendance is recorded against a day, contracts define hours per week, invoices are computed per month, and closures, absences and medical exemptions all move the arithmetic. At the end of the month it has to add up in front of a parent who will notice if it does not.

70+
Nursery settings live
8
Time zones served
20
Sites, largest operator
2,500+
Parent accounts

Phase 1 / 5 · Conceived

The specification is the deliverable.

There was no template to start from. The domain was modelled from nothing: what a contract is, how attendance relates to it, what an invoice may and may not charge for, which documents expire and what happens when they do, and who in a group operator is allowed to see whose data.

Childcare software looks simple from outside. It is a scheduling, billing and compliance system with no tolerance for being wrong, used by people who did not choose a career in software. That is decided in specification, not in code. An ambiguity left in a spec becomes a billing dispute with a parent eleven months later.

So specifications are written to be executable: precise enough that an agent can build against them without inventing behaviour, and structured enough that a human who has to sign off can actually review them. That standard is not an aesthetic preference. It is the precondition for everything in Phase 3. Agents cannot compensate for a vague requirement; they multiply it.

Phase 2 / 5 · Architected

Isolation, dates, and no convenient window.

A Symfony back end and API carry the domain. Flutter builds both mobile applications: the one staff use on the floor and the one parents hold to follow their child's day, message the team and receive invoices. Realtime messaging connects settings and families. The infrastructure is ours to run.

Three architectural constraints shaped the rest. Per-tenant isolation, because a group operator needs shared administration and roll-up reporting that never leaks between its own settings. The largest runs roughly twenty sites from one account structure. Billing that reconciles, because invoices are computed from contracted hours against recorded attendance and a parent notices an error immediately.

And time. The platform runs from mainland France to New Caledonia, French Guiana, Martinique, Algeria, Côte d'Ivoire, Senegal and Madagascar. Eight time zones means “today” is not a fact the server can assume: it has to be resolved per setting, on every query that touches a day. That is an architectural decision made once, early, and paid for in every date-bounded feature since.

The LutinRouge web back office for the week of 24 to 30 August 2026 with Monday selected: eleven, twelve, ten, twelve and eleven children expected across the week against a capacity of twelve, booked occupancy of 73 per cent beside recorded occupancy of 71 per cent, the day’s attendance list with planned and actual times per child, and two sections filled to five and six of six places.

Web · back office

LutinRouge Administration

Managers and owners

Everything that has to be right on paper. The setting is run from here — who is enrolled, what they contracted, what they owe, and whether the numbers reconcile at the end of the month.

Enrolment
Prospect requests, proposals, and the move to a signed contract.
Contracts
Weekly day patterns, amendments, copies, terminations — each with its own validity window.
Attendance
Clock-ins and corrections, deductible and non-deductible absences, occasional days.
Invoicing
Monthly generation from contracted hours, PDFs, payments and balances, SEPA mandates and direct-debit files.
Occupancy & planning
Children’s planning, staff planning, capacity and free places per section.
Documents
What each child and contract must provide, with expiry tracking.
Reporting
FILOUE and the statutory returns, occupancy, effort rates — colour-coded by who receives them.
Structure
Sections and capacities, closure calendar, news, partners.

Screenshot pending

Tablet · staff

LutinRouge Pro

Staff, on the floor

What happens during the day, recorded as it happens. Designed for one hand and ten seconds, often while holding a child — anything slower gets written on paper and typed up later, which is how days go missing.

Attendance
Expected, not expected, present, left — and clocking in or out with the time.
Care
Naps down and woken, nappy changes, meals.
Transmissions
The day’s log entries and photos, per child.
Health
Weight and growth tracking.
Context
Guardians’ contact details, birthdays, and what the day is meant to look like.
The LutinRouge Family app showing one child’s day on Monday 24 August 2026 as a timeline: arrival at 08:33, a weighing, a painting activity with its photograph, a nappy change and lunch, with the two siblings on the account selectable along the top.

Phone · parents

LutinRouge Family

Parents

The same day, seen from the other side. Each nursery decides when parents see what staff record — in real time, at closing, at checkout, or the next morning — so the same entry has to arrive correctly under four different release rules, in order, with the right times on it.

Journal
The day as a timeline — arrival, departure, activities, photos, navigable by date.
Siblings
Switch between several children on one account.
Contracts & invoices
The contract and the invoices.
The setting
Its information, its news, and when it is closed.
Account
The guardian’s own details.

What the spread actually costs

Every territory below runs its own working day. The map is here to show the overlap: read across it and there is no common window in which the platform is idle everywhere at once.

Tropic of CancerEquatorTropic of Capricorn60°W30°W30°E60°E90°E120°E150°ENouméaUTC+11AntananarivoUTC+3MarseilleUTC+2AlgiersUTC+1DakarUTC+0AbidjanUTC+0CayenneUTC-3Fort-de-FranceUTC-4our baseNew CaledoniaUTC+11MadagascarUTC+3FranceUTC+2AlgeriaUTC+1SenegalUTC+0Côte d'IvoireUTC+0French GuianaUTC-3MartiniqueUTC-4000306091215182124UTCopen at once7
Opening windows converted to UTC. A 07:00–19:00 local day is assumed for the drawing — real settings vary — but the span of offsets is what matters: at least one setting is open in 24 of every 24 UTC hours, 7 of them at once at the busiest, and never fewer than 1. There is no natural maintenance window. Offsets are shown for August; only Europe/Paris observes daylight saving, which is why the platform stores 8 zone identifiers rather than 7 offsets.

Phase 3 / 5 · Built

AI writes the change. A human merges it.

Development runs through ATLAS, the delivery system we built for our own engineering: specialised agents driven through a fixed pipeline with mandatory human gates. A human merges. Always. ATLAS never merges, never pushes to a protected branch, never force-pushes, enforced as hard denials in a permission layer rather than as instructions in a prompt.

That matters more here than on most products. Every change reaches families' contracts, invoices and children's records, so the standard is not "does it work" but "can it be defended", and LutinRouge is one tenant among several the same pipeline serves.

Integration belongs to this phase rather than a later scramble: Stripe for billing, Twilio for the messaging channels families actually use, and a document pipeline that knows what expires and when.

How ATLAS works, in full →

Phase 4 / 5 · Operated

There is no hour when every nursery is closed.

We run it: infrastructure, deployments, incidents. Consultancies recommend architectures they will never have to operate. When a deployment goes wrong at seven in the morning, nurseries cannot open and parents cannot see their child's day, and it is our phone that rings.

The eight-zone spread above is also an operational fact: across those settings there is no hour when the platform is idle, so there is no natural maintenance window to hide a risky change in. Deployment has to be uneventful by design, which is a constraint on how Phase 3 works rather than a matter of choosing a quiet time.

In production

Read the screen.

Captured from the platform as it runs — a demo tenant, because the real ones hold children's records.

Contracts — what was agreed

A child’s contracts tab in LutinRouge, listing two consecutive regular contracts: a part-time pattern covering Monday, Tuesday and Thursday from 18-07-2026 to 31-08-2026, then a fortnightly contract from 01-09-2026 to 31-08-2027 whose first week covers Monday to Friday and whose second covers Monday, Wednesday and Friday.

Dashboard — what it computes

The LutinRouge operator dashboard for the week of 24 to 30 August 2026, showing expected children per weekday against a capacity of twelve, the reconciliation formula printed beneath the heading, and booked occupancy of 73 per cent beside recorded occupancy of 71 per cent.
  1. What was agreedPlanning hebdo

    Each contract carries the weekdays it covers and the dates it runs between. The second contract alternates fortnightly, so the pattern itself depends on which week you are in.

  2. What the platform computesprésence théorique − absences déclarées

    The reconciliation, printed on the screen by the product: patterns resolved against the calendar, minus declared absences, closures and exemptions.

  3. The two figures that must agreePrévu / Réel

    Booked occupancy against capacity, and recorded occupancy against capacity. The manager plans on one and invoices on the other.

Phase 5 / 5 · Automated

It answers the easy questions and makes the hard ones faster.

A platform serving thousands of parent accounts receives questions all day, and they arrive on whatever channel the sender already uses: email, WhatsApp, SMS, voice notes, photographs of documents. Nobody installs a support portal to ask what time the crèche opens.

Weiwei is an n8n-orchestrated agent sitting across every inbound channel, working at two tiers with two different jobs. At tier 1 it answers — functionality, navigation, opening calendars, how-to — multimodal by necessity rather than ambition. At tier 2 it stops answering and assists: with direct access to platform data, it assembles the relevant contract, attendance and invoice context and proposes an answer, so the human replies faster and gets it right first time.

INBOUND, ON WHATEVER CHANNELEmailWhatsAppSMSVoice notesScreenshots & photosWeiwein8n · two tiers27%Tier 1 — answered outright85% accurate · 17 of 2065%Tier 2 — human supportWeiwei assembles the context8%Feature / templateRouted, not answered75 REPRESENTATIVE REQUESTS, TO SCALE20496
Measured over 80 requests read in full, 75 representative once test filings and duplicates are set aside. Tier-1 accuracy 85% — 17 of 20, and 17 of 17 on how-to and advisory questions. First contact the same day; one to two days to resolve.

The three misses were all the same failure, which is more useful than three unrelated ones: ordinary behaviour written up as a confirmed bug. So the weakness is not in answering, it is in classifying, and the fix is a guardrail rather than a better model: describe the symptom, do not assert a bug or a priority, let triage decide.

The hard part was never the language model. The two tiers need opposite dispositions from one system: conservative to the point of unhelpfulness at tier 1, where a confident wrong answer about a medical document does real damage, and expansive at tier 2, precisely because a human validates before anything reaches a family.

And the point was never deflection. One in four requests never reaching a person means the team has time to talk to clients about the things only a person can do, the first work to disappear when a queue grows.

Read the Weiwei write-up →

Why it matters to you

The same standard, a different regulator.

Five phases, one team, one product, and no phase handed to someone else. That is the claim this page exists to support, and the reason it can be checked is that the product is live and the numbers above are measured, not projected.

The disciplines it forces — correctness under time-zone spread, billing that reconciles, per-tenant isolation, uneventful deployment, and AI-assisted delivery that produces reviewable work rather than plausible work — are the same disciplines an airworthiness data platform or an export-control workflow demands. This is where they are proven at production scale, with real consequences, before they reach a certified environment.