Operator software,
from brief to plant
Discovery, integration and the operator layer for solar, BESS, EV charging and video. Send the brief. Estimate within 24 hours.

Ten ways we engage
Most engagements combine two or three of these. Each one names who it is for, so you can tell quickly whether it describes your situation.
Product Discovery
Scoping workshops, user research, technical feasibility and a prioritised backlog before a line of code is written.
UX Design
Information architecture, wireframes and high-fidelity prototypes for data-heavy interfaces — dashboards, control rooms, operator tools.
Web Development
React 19 / TypeScript front-ends with SSR, real-time data, complex state and test coverage on critical paths. Node.js back-ends built for production from day one.
Mobile Development
Cross-platform mobile apps sharing business logic with the web front-end. Platform-native performance where it matters.
System Integration
Connecting industrial protocols (Modbus, OCPP, IEC 61850, OPC-UA), third-party APIs and legacy systems into a coherent data layer.
Architecture Modernisation
Strangler-fig rewrites, monolith decomposition and cloud migration — without stopping the existing system. Clear reversibility at every step.
Cloud Optimisation
Right-sizing, reserved capacity planning, on-prem ↔ cloud migration and observability instrumentation to find where the spend actually goes.
Dedicated Teams
A focused engineering unit embedded in your organisation — same time zone, same Slack, same standards. Not body-shopping; domain-aware engineers.
Technical Audit
Independent review of architecture, codebase quality, security posture and operational readiness. Findings ranked by risk and effort.
Support & Evolution
Ongoing engineering partnership after delivery: performance monitoring, feature additions, dependency upgrades and incident response.
Custom software and AI inside real business processes
We take on projects from a single integration to a multi-year platform. Size is not the limit; an unclear goal is. Every project starts with discovery that defines the process, the data, who signs off and how acceptance is measured.
Complex and custom systems
New products, rewrites of legacy systems and platforms with many user roles. Discovery fixes scope and risks first, then delivery runs in short releases with automated tests on critical paths and agreed support after launch.
Integrations and ETL
Pipelines that collect data from APIs, files, portals and devices, clean and deduplicate it, and load it where people work. Each source has its own adapter, schedule and log, so one failure does not stop the rest.
Example: Grant Radar case →Document workflows and RAG
Search and answers over your own documents, classification of incoming requests, data extraction from forms and contracts, and automatic translation. Answers link to their source so people can check them.
Example: IT demand monitor case →Back office, CRM and ERP
Order, invoice, approval and inventory flows built around the process you already run, with roles, an audit trail and exports for finance. We connect to existing ERP and accounting systems instead of replacing them by default.
Production and field processes
Operator dashboards, equipment telemetry, shift reports and alerts for plants, energy sites and service teams. Data from controllers and sensors arrives over industrial protocols and is shown in real time.
AI where it pays off
We start with one process that has a measurable cost, such as manual sorting, copy-paste between systems or slow answers to customers. A model is added only where rules are not enough, and it can run locally when data must stay in-house.
Local AI for finance data →Boundaries we agree before building
People stay in control
Decisions with money, legal or safety impact go to a person for approval. The system shows why it suggested something and keeps a log of every automated action.
Security and data
Role-based access, secrets out of code, personal data minimised, and a clear answer to where each piece of data is stored and which model sees it.
Acceptance you can measure
Before work starts we agree on metrics such as processing time per document, share of cases handled without manual rework, error rate against a checked sample, and uptime. Results are reported against that baseline, not promised in advance.
Services applied to industries
Each service line has a different shape depending on the domain. System Integration for an EV charging platform means OCPP and OCPI. For a BESS operator it means Modbus and IEC 61850. The industry pages describe the domain-specific form each service takes.
One website in 5–12 languages, equally easy to use in each
Translating the text is the easy part. Visitors leave when the menu, search, a form error or the checkout falls back to English. We adapt the whole path and measure it per language. The scenarios below describe typical scope, not client results.

B2B product catalogue in 5–6 languages
Distributors and engineers compare specifications in their own language. We localise navigation, product filters, datasheet pages, quote request forms and validation messages, with units and number formats for each market.
Online store in 8–10 languages
Shoppers give up when search does not understand their words, or when checkout shows prices and dates in an unfamiliar format. We localise search synonyms, product content, cart and checkout errors, delivery and returns help, currencies and dates.
Booking or content site in 10–12 languages
Guests and readers arrive from search in many languages and often switch language during a visit. Switching keeps them on the same page and at the same booking step, and the help section and confirmation emails come in the chosen language.
How the adaptation works
Language follows the visitor
Changing language keeps the current page, filters and form input. The first choice comes from the browser, is remembered on return visits and can be changed from any page.
Every version is found in search
Each language gets its own URL, translated titles and descriptions, hreflang links and a sitemap, so people land on a version they can read.
Retention is measured, not promised
We set up funnels for each language: landing page exits, searches with no results, form completion, checkout or booking steps and returning visitors. The weakest language shows up in the data, and that is where we start.
How engagements work
Send the brief. Estimate in 24 hours.
Tell us what is running and what is failing. We suggest the engagement and reply within one business day.