
MBO Smart Buffet: edge computer vision to measure what is eaten and what is thrown away at a buffet
In production at a hotel · 5,033 images from 23 cameras
Read the case studyLaboratorios Microal is an accredited testing laboratory analyzing food, water and environmental samples. It already had a commercial LIMS to register samples and results, but the work itself —what is pending, who is doing it, what has been prepared, which quality controls each method requires and whether they passed— lived on paper worksheets and spreadsheets. Sistema MICROAL closes that gap.

A testing laboratory has two very different information problems, and most LIMS products only solve the first. Registry —a sample arrives, determinations are assigned to it, results come back and a report goes out— was already covered. Execution, which is where the laboratory spends its day, was not, and doing it by hand always ended the same way, with the evidence of quality living outside the system of record.
Without a single definition of "pending", analysts repeat work or miss it.
Splitting the day's work by line, method and task, by hand and on paper.
Nothing can be read until the right container holds the right volume with the right preservative.
A digester has a fixed number of positions: 48 on the Metals line, 24 on others, 10 on some Agro ones. The failure the client described, word for word: a supervisor builds a 38-position worksheet and the technician discovers at the bench that the digester only takes 24.
An accredited laboratory has to prove it batch by batch, not assert it.
Many parameters are not read off an instrument; they are computed from others and need the dilution correction applied.
Nobody types in a sample. A scheduled job pulls them from the LIMS with all their parameters and keeps matrices, clients, parameters, methods and equipment in step.
Every pending line is grouped by method and task and assigned to technicians, in bulk or one by one, with no way to build a worksheet that will not fit on the instrument.
One box per container, with its volume, how many are still pending and which lines share the same physical container. It prints and exports to Excel.
One technician, one task, one instrument, a set of samples and the quality controls that batch requires, each with its position and its weighings.
The supervisor reviews, approves and transmits. What is approved gets locked; what is rejected returns to the assignment screen with the note attached.
Sistema MICROAL does not replace the laboratory's LIMS. It sits beside it and talks to it continuously, in both directions.
The pattern that runs through the whole system: a rule is defined once, in code, and every screen that needs it uses that definition.

When a reading is entered, the system finds the active QC rule for that method-parameter, applies the right check and writes back the result, the rule it used and a human-readable message — for example "Recovery 97.4% within [80%-120%]". The analyst does not compute it and cannot forget it. Recovery and CV limits are not one global number: they are held per method-parameter and, for CRMs and spikes, per concentration range, because an acceptable recovery at trace level is not acceptable at high concentration.

The laboratory's convention is that a trailing double asterisk on a determination means "not accredited". But accreditation is not a property of the method: an accredited method can contain parameters that are not, and the other way round. The system holds the flag per parameter, taken from the LIMS, and composes the marker at display time instead of writing it into the name, so the parameter keeps its identity, its formulas, its controls and its history, and filters go on comparing clean names. Where the flag has not been reported yet, the marker is shown: an unknown falls on the cautious side, because a clean name would assert an accreditation the system cannot evidence.
Laboratorios Microal is an accredited testing laboratory in Seville. Its analysts process food, water and environmental samples against a catalog of 601 analytical methods covering 3,524 parameters, with 1,511 instruments, for 1,134 clients.
The laboratory already had a commercial LIMS. What it did not have was anything that managed the work: which samples were pending, who was doing them, which containers had been prepared, which digester position each sample occupied, which quality controls the method required and whether they had passed. That layer lived on paper worksheets, on spreadsheets and in the memory of the people running each line.
Sistema MICROAL closes that gap. It ingests every sample from the LIMS automatically, turns the pending analyses into assignable work, guides the technician through preparation and reading, enforces the quality-control regime the method requires, applies the calculations and pushes validated results back to the LIMS without anybody re-typing a number.
Two engineering decisions are the difference between a reliable synchronization and one that is not.
The first: the import never deletes pending work. An earlier approach inferred that "if the sample is not in the LIMS pending list, the LIMS has closed it". The team measured that inference and found it false, because the endpoint returns what was received that day rather than what is pending. Work is now marked as resolved, never removed.
The second: the ingestion is idempotent and runs under a lock, so the nightly job and a manual "synchronize now" cannot collide or double-import.
What makes the assignment screen correct rather than merely convenient is a single shared definition of what "still to do" means. A reading line is live only when all three of these hold:
That definition lives in exactly one place in the code and is shared by the assignment screen, the preparation grid and the "mother method" move. It had previously been written twice and the two copies had drifted — which is how three screens come to disagree about the same sample.
The assignment also refuses to create work that cannot physically be done: the capacity check knows how many positions each digester has and will not let a supervisor build a worksheet that will not fit on the bench.
A primary record is the controlled document for one batch of work. Opening one shows how much metrological rigor the system carries: the analyst and the date; the instrument, chosen from the catalog with its serial number and position count; a sample count that explicitly includes the quality controls, because a control occupies a physical position exactly like a sample does; a supervisor observations field whose placeholder says what it is for ("justify in writing, e.g. accepting a record with a missing or failed QC"); and the digestion temperature control.
That last one deserves attention. The conformity limits are not a fixed band: they are computed as 120 °C ± 2 with a +0.1903 correction taken from the calibration certificate of the specific thermometer used on the specific digester, giving 118.1903 – 122.1903 °C. The record cannot be closed without the temperature, and the screen says so.
The primary record's state is driven by an evaluator that reduces its linked controls to one of three signals: all passed, at least one definitively failed, or incomplete. A definitive failure outweighs incomplete siblings — the conservative choice. Records closed automatically with controls that do not meet the ratios the method requires generate a persisted QC alert that surfaces on the validation screen.
And where a supervisor decides to accept a record anyway, the system does not block them: it requires them to write down why, which is precisely what an auditor will ask for.
Every primary record carries the instruments used by serial number, the position each sample occupied, the weighings, the analyst, the timestamps, and who closed it and when. None of that is an extra form to fill in — it is the record the technician was already working through.
Three practices are visible throughout the repository:
The platform is in production and in daily use for sample ingestion, the method and equipment catalogs, preparation and work assignment. The execution and quality-control modules are deployed and are being adopted line by line as the laboratory takes each one off paper.
Development continues on a weekly cadence, with changes reaching production through a reviewed pull-request pipeline and a rehearsed migration path.
Screenshots from the integration environment, which runs the same code against a recent copy of production data. Client and technician names are hidden.

The screen the laboratory supervisor lives in: every pending line, grouped by method and task, filtered here to a single reception day and assigned to technicians in bulk or one by one.

Primary records, samples, matrices and case files, quality control, search and preparation, and work assignment.

The real catalog, filtered by line, method, parameter, parameter group, status, identifier, matrix, client and reception date range.

One row per sample and one box per container, with its volume and how many are still pending. The "shared with" column shows which lines use the same physical container, so nothing is prepared twice.

The controlled document for a batch: analyst, date, instrument with its serial number and position count, a sample count that includes each control as one more, and the digestion temperature without which the record does not close.

Counters by control type and one row per sample and per control, each carrying the instrument used, the position in the digester and the weighings. A control occupies a physical position exactly like a sample.

Every method with its parameters, its laboratory line and whether it is accredited, filterable by state, line and accreditation.

The review that comes before anything goes back to the LIMS, with QC alerts at the top and filters by client, task, technician, completeness, mode and state.
Developed and operated by DPI Systems, with every deployment reviewed against a copy of production.

In production at a hotel · 5,033 images from 23 cameras
Read the case study
Up to 70% less processing time · built in 8 weeks
Read the case study
From analysis to ERP integration in 6 weeks
Read the case studyWe build the missing layer between the software you already have and what actually happens on the shop floor, in the laboratory or in the office.