Enterprise asset management for oil & gas, with an AI copilot that cites its sources.
Equipment master, job cards, certification and reliability analytics in one multi-tenant system of record. Bilingual English and Arabic with full right-to-left. No ERP required.
One system of record
The modules a field-services business actually runs on.
Twelve bounded contexts, one equipment identity. Every module references the same asset by the same id, so a certificate, a job card and a reliability number all point at one piece of equipment.
Asset registry
The equipment master: a five-level taxonomy, class-specific property sets, parent and child composition, asset status and lifecycle.
See every moduleMaintenance & work orders
Job cards in three work types, a system-stamped close date, derived MTTR, and the cost inputs that feed the analytics.
See every moduleInspection & certification
Certificates by upload or generated in-app, a closed set of inspection disciplines, calibration against a traceable test device, model-level FMEA.
See every moduleReliability & analytics
MTBF, MTTR, MTTF and availability per equipment type, backlog and overdue, cost Pareto and failure trend, rebuilt from domain events.
See every moduleInventory & spare parts
Valuation, EOQ and economic reorder point on the Wilson formulae, usage classification, and issuing behind an approval gate.
See every moduleProjects, people & suppliers
Projects and packages with equipment movement requests, an employee directory with certifications and fit-to-work, and a supplier register.
See every moduleAI knowledge copilot
It answers from your data, and shows you the records behind the answer.
The copilot is a real Model Context Protocol agent. It searches the tenant’s own vector index and equipment knowledge graph, and its scope is injected server-side, the model cannot widen it. Where an answer draws on retrieved records, those records are shown with it.
- Read-only by default. Write mode is opt-in, off at the start of every session, and warned.
- It proposes; you approve. With write mode on it may propose actions from a server-side allow-list, and nothing runs until you approve that specific action.
- An approved action runs the same authorized use case the dashboard calls, one set of business rules, not a second one for the AI.
- A file you attach to a chat is read for that conversation only. It is never embedded into the knowledge stores unless you promote it.
- Answers, extracts and draft checklists download as documents, built from records retrieved out of your own tenant, and always as a draft for review, never as an authority.
Why did P-1042-A fail twice this quarter?
Built for oil & gas, not adapted to it
The model already knows what a separator is.
The taxonomy, the property sets and the inspection disciplines are the ones a rotating-equipment and pressure-vessel fleet actually uses.
Five-level classification
Family → Class → Type → Model → Sub Type. Class binds the property schema; Model binds the FMEA.
Class-specific properties
A separator carries orientation, weight, maximum working pressure and skid dimensions. A pump carries running-hours tracking.
The disciplines you certify against
Hydro test, load test, MPI, UTI, visual, SRV calibration and thickness, one closed set, validated when a certificate is entered rather than left as free text.
Certificates produced in-app
Calibration certificates are generated from entered readings against a traceable master test device, on a fixed nine-point DKD-9 scheme or a custom one.
How it is built
Multi-tenant, EU-hosted, and honest about the AI.
The things an operations lead asks before a pilot, answered on one page.
Tenant isolation
Every tenant gets its own Keycloak organisation, its own vector collection and its own graph database. Pooled data is row-level-security scoped.
EU-hosted infrastructure
Compute, object storage, database, the vector and graph stores and outbound email are pinned to EU regions, and every host carrying tenant data resolves by DNS only and goes straight there.
Single sign-on
Sign-in runs through Keycloak OIDC, roles are additive, and tenant data is read and written through a connection that drops to a role which cannot bypass row-level security.
Bilingual, both directions
English and Arabic are first-class, with a full right-to-left layout and an Arabic type face, not a translated overlay.
Where the AI runs
Two AI services sit outside the EU pinning and both receive your text: the embedding API that makes records searchable, and the inference API that answers copilot questions. Said on the front page rather than buried, because a residency claim with a silent gap in it is not a residency claim.
See it against your own equipment data.
A walkthrough on your asset classes, your certificate disciplines, your job cards, not a canned demo.