Engineering
This is not a dashboard bolted onto an export.
What we deliver is software: versioned, tested, shipped through a CI pipeline, monitored in production and documented so it can be taken over without us. This page is written for whoever wants to check - a CIO, a technical supplier, a buyer with a checklist.
The principle
Most data projects in a small business stop at a dashboard wired to an export. It holds for three months: until a file changes a column, until the person who maintained it leaves, or until someone asks for a figure nobody planned for. That is not a system, it is a snapshot.
What we put in place is a system: connectors that know how to resume after a failure, a warehouse that keeps history, a data model that names your business objects, a quality layer that rejects doubtful data, and an AI layer that computes nothing itself. Every piece is code, in a repository that belongs to you.
The difference shows after six months. A dashboard wired to an export gets rebuilt. A foundation gets extended: the next need costs days, not weeks.
The architecture, layer by layer
Six layers. For each one: what it does for your business, what is inside it, and the guarantee it carries.
Sources
- Business APIs
- Files
- Webhooks
- Inboxes
Idempotent ETL
Scheduled, replayable, logged
Historised PostgreSQL
Data model, materialised views, versioned migrations
Two answer paths
Deterministic path
Validated business calculation, semantic cache. Handles most requests.
Model layer
RAG on pgvector, structured outputs, guardrails. Called when it earns its place.
Ingestion
- What it does
- Fetch the data where it lives, without anyone exporting a file.
- What is inside
- Python, Go, asynchronous processing, Pub/Sub, Cloud Tasks, RabbitMQ, scheduling and replay
- The guarantee
- Every run is idempotent: replaying it creates no duplicates. A source unavailable overnight is caught up on the next cycle, and every run leaves a timestamped trace.
Warehouse and modelling
- What it does
- Keep the history and name your business objects once and for all: customer, order, assignment, contract, hour worked.
- What is inside
- PostgreSQL, BigQuery where volume warrants it, materialised views, reviewed indexes and query plans, versioned migrations
- The guarantee
- The state six weeks ago still exists. Migrations are versioned and replayable: no schema change is made by hand in production.
Quality
- What it does
- Reject doubtful data rather than display it with confidence.
- What is inside
- Freshness, volume, uniqueness and referential consistency checks, run on every cycle
- The guarantee
- A failing check blocks publication and raises an alert, instead of letting a wrong figure travel all the way to your screen. Anything that stays uncertain is flagged rather than guessed.
Semantics and AI
- What it does
- Understand a question asked in plain language and tie it to a defined, validated business calculation.
- What is inside
- RAG, pgvector, embeddings, hybrid search, reranking, function calling, structured outputs, guardrails and fallback
- The guarantee
- The model does no arithmetic on your data. It picks a query defined in advance, runs it, and the answer shows what ran and how long it took. Outside its scope, it stops and says so.
Delivery
- What it does
- Make all of it usable: screens, reports, alerts, and access from your own tools.
- What is inside
- React and Next.js, React Native, REST and gRPC APIs, exports, alerts, MCP servers
- The guarantee
- Every figure on screen is tied to its source and to its last sync time. What you see, you can trace back to the originating row.
Operations
- What it does
- Keep all of it running without it becoming your problem.
- What is inside
- GCP Cloud Run, Docker, Kubernetes, CI/CD, observability, logging, cost tracked per request, semantic cache
- The guarantee
- Nothing reaches production without going through the pipeline. Incidents are caught by monitoring before your teams report them.
Security
What we apply by default, and what is not a paid option.
Least privilege
Every connector uses a dedicated service account, read-only where reading is enough, limited to the tables it needs. No connector runs with an administrator account, and none runs under the personal account of one of your employees.
Secrets
Credentials and keys never live in the code or in a versioned configuration file. They are held in a secret manager, injected at start-up, and revocable without a redeployment.
Encryption
Encryption in transit on every exchange, encryption at rest on the warehouse and on the backups. A backup is protected as seriously as the database it came from.
Isolation
One client, one perimeter. One company's data does not travel through another's infrastructure, and isolation is enforced at the database level, not only in the application.
Access logging
Who read what, and when. Data access and executed queries are logged: that is what lets you answer an audit, and what tells you what happened on the day something looks wrong.
Authentication
Named accounts, never a shared one. Hooked into your directory or identity provider where you have one, with a second factor.
GDPR and compliance
You remain the controller, we are the processor. Here is what that means in practice.
Processing agreement
A DPA under Article 28 GDPR frames the engagement: purposes, duration, sub-processors, security measures, what happens to the data when the contract ends. It is signed before the first access to your data, not after.
Hosting
Hosted in the European Union. Any component that would sit outside it is identified and discussed with you before it is used, not discovered along the way.
Minimisation
We only retrieve the data needed for the uses defined during the audit. Sensitive fields that serve none of those uses are dropped at ingestion rather than stored just in case.
Retention
Each category of data has a retention period, written with you and enforced by an automatic purge. Keeping history is not an excuse to keep everything forever.
Data subject rights
An erasure or rectification request propagates all the way to the warehouse and to the search indexes, not just to the originating tool. That is exactly where most architectures fail, and it can be verified.
EU AI Act
The systems we deliver fall under the transparency obligations of Article 50: the person knows they are talking to a machine, and they can see what that machine ran. We build neither scoring of people nor fully automated individual decisions.
Records and documentation
The processing is documented so it can go into your record of processing activities: nature, purpose, categories of data, recipients, retention. You are handed what you need to complete it rather than having to reconstruct it.
Reliability and operations
What separates a demo that works from a system you can lean on.
Continuous integration
Automated tests and deployment through a pipeline. Nobody copies a file onto a server, and every version in production maps to an identifiable state of the repository.
Separate environments
A working environment and a production one. A migration is run elsewhere before it touches your data, never straight onto it.
Monitoring
Ingestion cycles, response times and errors are watched continuously. A sync that fails two nights running raises an alert: it does not go unnoticed until the day a figure looks odd.
Backups
Regular, encrypted backups, with a written restore procedure that has been exercised. A backup never restored is not a backup, it is an intention.
Service level
Coverage is written into the operating contract: hours, acknowledgement time, reporting channel, and what is not covered. A vague commitment protects nobody.
Cost under control
Infrastructure cost and inference cost are tracked per request. Deterministic routing handles most requests without ever calling a model: that is what let us divide the inference cost of our own products by fifty.
What you own
A supplier who keeps the keys is not a supplier, it is a dependency.
- The code, in a repository that is yours. We work in it, we do not hold it.
- Access to your infrastructure and your databases, opened in your name.
- The documented data model: what every table, every field and every business calculation means.
- The operating procedures: how to deploy, how to restore, how to add a source.
- Real reversibility: another supplier must be able to take over. That is the test, and it is why documentation is part of the deliverable rather than an option.
What we do not do
Saying it at the first meeting costs less than discovering it at the third.
We are not ISO 27001 or SOC 2 certified
We apply the practices described on this page, but no auditor has certified them. If your procurement policy requires a certification, say so straight away: we will not pretend to hold one.
We do not host health data
Hosting health data in the regulatory sense requires a French HDS certification we do not hold. If your project involves it, it needs a different architecture and a certified host.
We do not score people
No candidate score, no automatic ranking of employees, no individual decision taken by a machine. It is a choice, and it is also what GDPR and the EU AI Act regulate most strictly.
We do not replace your internal IT
We build and we operate what we built. We do not take on your hardware estate, your workstations, your network or your telephony.
We do not conjure up data that does not exist
If the information is captured nowhere, no technical layer will create it. The audit says so before you commit to what comes next - that is precisely what it is for.
The engagements involved
The data audit
Two weeks at most, a fixed price, and a document that belongs to you. It is the only honest way to know what your data allows before committing a budget to it.
The data foundation
Four to eight weeks for your data to live in one place, historised and reliable. Delivered in usable stages, not in one go six months out.
The AI assistant
An assistant that answers your business questions in plain language, on figures that come out of your own database. It arrives once the foundation is reliable, never before.
Do you have a CIO or a technical supplier?
Bring them in from the first meeting. Hard questions asked early cost far less than bad surprises found late.