Ingestion
Drop the folder. Check the answers.
Every file is recognised from its own columns — a deterministic recogniser first, and a model only for a file nothing local can name, allowed one role from a fixed list. Nothing imports until a review screen has shown what each file will do, including the ones that will do nothing.
A folder of exports
Event logs, counter snapshots, tag archives, quality readings, order books — dropped as they are.
Recognised
Each file's role worked out from its own columns, and a saved mapping applied where one already fits.
Reviewed — nothing has imported yet
- Data rows
- 1,204
- Will import
- 1,191
- Skipped, named in a CSV
- 13
Imported
Every figure downstream traces back to these rows — and the 13 that didn't parse are counted against it, not vanished.
Every five minutes
A scheduled export lands in a watched folder on a five-minute cycle — fast enough, because every decision here is the same at five minutes as at five seconds.
From inside your own network
A collector on your side of the firewall watches that folder or reads your historian's API. Optora receives outbound HTTPS and nothing else; no port opens.
From the ERP
A template — JSON, not code — pulls orders, item masters and stock through the same recogniser as a dropped folder. It may not compute, and a row that stops arriving is never read as cancelled.
The engine
The arithmetic, in full.
307.8 of the 450 planned minutes were fully productive — OEE 68.4%. The break narrows the denominator rather than counting as a loss; every other step is one of the three factors taking its share.
| Factor | Ratio | Value |
|---|---|---|
| Availability | 405 / 450 | 0.90 |
| Performance | 19,440 / 24,300 | 0.80 |
| Quality | 12,312 / 12,960 | 0.95 |
| OEE | 0.90 × 0.80 × 0.95 | 0.684 |
12,960 units at an ideal 1.5 s each is 19,440 seconds of work against 24,300 of run time; 12,312 of them were good.
A measured zero is 100%. An unmeasured nothing is “No data”.
| Factor | Needs | Otherwise |
|---|---|---|
| Availability | Planned seconds | No data |
| Performance | Run time, and an ideal cycle time it actually saw | No data — and OEE goes with it |
| Quality | Units, and a reject source somebody mapped | No data — and OEE continues as A × P |
Classification
The Six Big Losses, as rules.
| Loss | Factor | Default rule |
|---|---|---|
| Breakdowns | Availability | An unplanned stop of ten minutes or more, with an equipment-related reason code. |
| Setup & Changeover | Availability | Any event tagged as a changeover. Always this line's own work, so never cascade. |
| Minor Stops | Performance | An unplanned stop under the ten-minute threshold. |
| Reduced Speed | Performance | Not a discrete event — the gap between actual output and what the run time should have produced. |
| Startup Rejects | Quality | Rejects within fifteen minutes of a stop turning back into a run. |
| Production Rejects | Quality | Rejects during steady-state running, outside that startup window. |
A starved stop is never a breakdown, however long it ran.
Length is evidence of severity, not of cause — so every loss also records whether it was this line's own fault or something upstream starving it.
Reduced Speed is the one loss deliberately not stored as an event — writing it out per-event would mean inventing a split across stops nobody measured.
Breakdown or minor stop is judged on the whole outage, not on each logged row.
One outage, graded whole: 15 min ≥ 10 min → Breakdown
Row by row, both fragments sit under the threshold — a real breakdown would file as two minor stops.
The second half
Then it plans the work.
The dashed rule is where the ideal-rate schedule promised delivery. The 20.513.58.3 hours past it were always going to happen — restating the plan at the measured rate admits it before the week starts.
Telling somebody
A finding nobody sees is not a finding.
A watch rule fires when a figure crosses its line and stays there for the dwell. Every message deliberately not sent gets a receipt. And the handover is written before the next shift arrives.
Ten polls, five minutes apart. One transient, over the line for a single poll: counted, never announced. One breach announced once, on the fourth reading over — when 15 minutes have been held. Then a clear, and a second breach on its own clock.
The AI
Where the model is, and where it is not.
The model is involved almost everywhere and is trusted with nothing that can be checked another way. That is not a compromise between the two; it is the design.
What it does
- Writes the report, the handover, and what changed since you last looked
- Groups your stop codes into named failure modes, glossed from your own manual
- Suggests a reason for an unlabelled stop from this station's own history
- Reads a photograph of an HMI or a handwritten shift sheet
- Proposes an operating model for a plant that has not configured one
- Argues for a schedule, and proposes scenarios from an outcome described in words
- Answers a question about the plant or the plan, from figures the engine computed first
- Drafts a watch rule from a sentence and backtests it before you save
- Finds the theme in six sources of free text nobody was assigned to notice
What it never does
- Produce a figure — every number is computed in code from your rows first, and the model's prose is checked back against the result before storage
- Decide whether a finding is statistically significant
- Write to your production record from a photograph or a note
- Change a shift calendar, a loss rule, a threshold or a column mapping on its own — those four re-score numbers you have already published
- Decide which rows count — an ERP template it authors may not carry a filter
- Write a watcher's message — the sweep that fires a rule calls no model at all