Case studyHealthcare, medical-device distribution2024-20264 min read

Automating after-sales returns to manufacturers, with a trace of every request

Santécie’s after-sales return files are routed to the right manufacturer forms and filled automatically, with an audit trail for every request.

SantécieAI · Project that integrates AI or trains teams to use itIn production
Contents9

At a glance

In thirty seconds
  1. StakeEvery after-sales return must reach the manufacturer on that manufacturer’s own form; copying files across by hand took time and invited costly mistakes.
  2. MechanismVersioned routing rules designate the target forms, deterministic automation fills them, and AI only ever sees synthetic samples.
  3. ProofTens of thousands of requests processed in production since September 2025, with 100% operational completion according to my operational monitoring.
  4. ImpactData entry becomes configuration: at least 500 hours avoided per 10,000 requests, and a failed request is replayed without redoing the batch.
  5. LimitsThe indicators come from operational monitoring I report; they have not been independently audited.
Client
Santécie
My role
Main developer, back end and front end
Setting
Through a partnerSilico
Team
Embedded in an existing team · 2 peopleEmbedded in the project team, with a second developer in 2024-2025.
Technologies

The starting point

Santécie distributes medical devices. When a device comes back for after-sales service, the return must go to the manufacturer with the right form, filled according to that manufacturer’s template: each manufacturer has its own fields, versions and requirements. Return files mostly arrive as Excel spreadsheets, and someone had to copy their content across, form after form.

That work requires no judgement, but constant attention, and a copying mistake is expensive to fix. So the request had two parts: stop the re-keying, and know afterwards what was sent, where and why.

What I built

The heart of the system is not the filling but the routing. A file can concern one form, several, or none, depending on its content. I structured the domain around three sharp notions: the form group, identified by a stable business code; the routing configuration, written as a sequence of conditions; the fill target, which ties a form to a precise version.

Mock
Routing editor: condition blocks that each lead to a manufacturer form and a precise version
A routing rule: IF, ELSE IF and ELSE conditions on the incoming data, each leading to an explicit form and version. Rendered on fictional data, French interface

Two decisions mattered. Routing is resolved at run time, then frozen with the run: you fix a rule without rewriting history, and every filled form keeps the rule that produced it. With the team, I also separated completing a request, which only reruns what failed, from replaying it entirely.

A NestJS API with Prisma carries the domain, BullMQ queues absorb the volume, and a Vue 3 interface manages forms, their versions and the rules. Access is split by role, operator or administrator, and logs and processed content have a retention period.

Where AI goes, and where it does not

With health data, the question is not whether AI can help, but where it is allowed to act. Production requests go through deterministic automation, with strict rules and schema. AI-assisted analysis is used only on synthetic samples, to generate the mapping models between incoming columns and a form’s fields. Human validation happens upstream, on the configuration, not on each request.

Working inside the team, not beside it

I joined this project the way you join a team: through its code, its vocabulary and its habits, and I became its main author1. Today the repository carries what lets someone else, human or agent, pick it up: a context file at the root, architecture decisions recorded one by one, an audit of the flows and a business glossary shared with the users.

Git history of the repository: 113…

Git history of the repository: 113 of 193 commits are mine, from July 2024 to September 2026. A second developer contributed in 2024 and 2025. A commit count measures neither effort nor quality.

That glossary mattered more than it seems. A “request” is not a “batch”, a “replay” is not a “completion”. The day a user asks why a form was filled twice, the answer lies in those distinctions.

What the evidence shows

The automation has run in production since September 2025. The figures below come from my operational monitoring2, and they only make sense with their definition.

Aggregated counts from operational monitoring, which…

Aggregated counts from operational monitoring, which I report. The exact volume and an anonymised export of the counts are available on request.

The trace can be checked at any time: for a given request, the tool shows which rule applied, which branch was selected and which conditions were evaluated.

Mock
Testing a routing rule: resolved target, selected branch and the list of evaluated conditions
"Test routing" runs a rule against a sample request without saving anything: resolved target, selected branch, every condition evaluated. Rendered on fictional data, French interface
of requests processed in production since September 2025
tens of thousands
operational completion, as defined above
100%
operational failures, external outages tracked separately
0
of data entry avoided per 10,000 requests (estimate)
≥ 500 h

What it changes

Re-keying turns into configuration: a rule is set once and applies to every incoming file. At 3 to 5 minutes of manual entry per form, every 10,000 requests represent between 500 and 830 hours of data entry avoided3.

10,000 requests × 3 minutes =…

10,000 requests × 3 minutes = 500 hours; × 5 minutes = about 830 hours. The 3 to 5 minutes is an estimate of manual filling time, not a measurement.

When a file fails, you know which rule sent it where, and you complete or replay it without redoing the whole batch.

Mock
List of runs with their form, version, status, mode and a button to replay them
The Runs tab: every run keeps its form, version, status and mode, real or test, and can be replayed. Rendered on fictional data, French interface

The system keeps evolving, with recent work on SAP routing integration and deployment. I work on it as an independent, embedded in the project team: first as a sole trader, then through MC Studio since January 2026.

Limits

  • The counts are mine: they have not been independently audited, and the exact volume is available on request.
  • The completion rate measures end-to-end execution with its trace, not the correctness of each mapping.
  • Time avoided is an estimate based on a manual entry duration, not a before-and-after measurement.
  • The project is a team effort: product decisions were shared, and I do not claim sole direction.

Share and reuse

The link, the plain text and visuals ready for LinkedIn.

Embed this card

Paste this code into a web page to show a card for this content.

<iframe src="https://mc-stud.io/embed/en/work/robotform-after-sales-forms" title="Automating after-sales returns to manufacturers, with a trace of every request" width="100%" height="360" style="border:0;border-radius:16px;max-width:640px" loading="lazy"></iframe>

Let’s talk about what AI could change for you

A 30-minute discovery call, by video and with no commitment, to talk about your project, your constraints and the best next step.

contact@mc-stud.io