What this covers
- Internal business applications
- Admin portals and operations consoles
- Data-driven applications and reporting
- Role-based workflows
Home/Services
Capability described at the level of the problem. Six areas where organizations most often bring us in, the work each one involves, and the constraints that shape how it is built.
01 — Service
Design and development of internal and business-facing applications that support operational workflows, administrative processes, reporting, approvals and service delivery.
An enterprise application is rarely difficult because of what it displays. It is difficult because of everything around the screen: who is allowed to see which record, what happens when two people edit the same thing, how a correction is made after the fact without destroying the audit trail, and how the business answers a question about something that happened eight months ago. Those questions decide whether an application is trusted, and they are decided in the data model long before anybody argues about the interface.
We build for the people who will use the system every day and for the people who will have to explain it later. That means access control and audit are designed in from the start rather than added when a security review asks for them, and it means the application is shaped around the process an organization actually follows rather than the one described in the requirements document.
02 — Service
Structured automation for repeatable business processes, where reliability, visibility and exception handling matter more than the speed of the happy path.
Almost every process automation project is sold on the straight-through case and judged on the exceptions. A leave request that follows the standard approval chain is trivial. The interesting questions are what happens when the approver has left the company, when a request is submitted against a cost centre that was closed last week, when two approvals arrive simultaneously, or when a step fails silently at two in the morning and nobody notices until the month-end report is wrong.
We build the exception path with the same seriousness as the main one, because that is where a process either earns trust or quietly loses it. Every automated step is observable, every failure lands somewhere a human can see it, and every intervention is recorded. An automation that a team does not trust gets shadowed by a spreadsheet, and then the organization is running two processes instead of one.
03 — Service
Integration between enterprise platforms, databases, APIs, file systems, SaaS tools and internal applications, built to reconcile exactly rather than approximately.
Integrations are the least glamorous and most consequential software in most organizations. They tend to be written once, under time pressure, by somebody who has since moved on. They work for years. Then a certificate expires, or a schema changes, or a network blips during a batch, and the failure is silent — because nothing was ever built to notice. The organization discovers it weeks later, in a number that does not add up.
The engineering that prevents this is well understood and rarely applied. Write the record down before attempting to send it, so a crash costs nothing. Give every message a stable identity, so a retry cannot duplicate it and a deliberate re-run remains possible. Retry what is transient, escalate what is not, and keep a dead-letter queue that a human can actually work. Record the request, the response and the timing of every call, so that when finance asks why a figure looks the way it does, there is an answer rather than an investigation.
04 — Service
Modernization of aging applications, workflows, forms and operational systems, carried out while the business that depends on them continues to run.
The reason legacy systems persist is not inertia. It is that they work, they encode years of accumulated business rules that exist nowhere else, and the risk of replacing them is concentrated and immediate while the benefit is diffuse and gradual. Any modernization plan that does not take that asymmetry seriously will be cancelled halfway through, which is the worst of all outcomes: the cost of the rewrite and none of the benefit.
So modernization is treated as a staged programme rather than a cutover. The old and new systems coexist for a defined period. Migration is incremental and reversible. Where an estate is large and repetitive — hundreds of forms, dozens of similar screens — it is usually cheaper and far more consistent to build a converter than to hand-port, provided the converter is honest about what it cannot translate and flags it rather than guessing.
05 — Service
Purpose-built platforms and tools for teams that need operational control, visibility and repeatable execution.
Internal tools are usually the last thing an organization invests in and the first thing its operations depend on. The pattern is familiar: a critical process runs on a spreadsheet and one person's institutional memory, a manual step is performed daily because the system cannot do it, or a team spends its afternoon reconciling two reports that should have agreed. None of this shows up in a product roadmap. All of it shows up in operating cost and key-person risk.
A good internal platform gives the people accountable for an outcome the ability to see what happened, to intervene deliberately, and to prove afterwards what was done and by whom. It should be operable by the team who own the process rather than only by the engineers who built it. That constraint shapes everything: the interface, the audit model, and the decision about what to automate and what to leave in human hands.
06 — Service
AI-enabled capability where it improves the quality of a workflow, reduces manual review effort, or supports a better decision, under governance that a serious organization can accept.
The useful applications of a language model in an enterprise are unglamorous and specific: classify this document, triage this ticket, retrieve the three passages that bear on this question, summarize this case history, draft this response for review. These are tasks that rules engines handled badly for thirty years, and a model handles well. That part is genuinely valuable.
The difficulty is that a model is fluent whether or not it is correct, and the data that makes it useful is frequently the data an organization is not permitted to send anywhere. Both problems are engineering problems, and neither is solved by choosing a better model. They are solved at the boundary: by deciding what evidence an answer must produce before it is allowed to count, by making that decision deterministically rather than asking the model how confident it feels, by keeping every claim traceable to the source that produced it, and by running the whole pipeline inside a perimeter the client controls when the data demands it.
We build AI systems that draft rather than act, that cite rather than assert, and that hand off to a human when they cannot substantiate an answer. An agent that defers honestly is more valuable in an operational setting than one that is confidently wrong, because a wrong answer delivered with authority costs an engineer three hours and costs the system its credibility permanently.
How we built an on-premises support agent White paper: Grounding a local model Open source: an MCP bridge for OpenText
Technology
We use custom code, low-code platforms, workflow engines, integration tools, cloud services and AI models where they fit the architecture and the operating constraints. The goal is not to force a platform onto a problem, but to deliver a maintainable system.
In practice the choice is decided by four questions, asked in this order. What must this system guarantee, and what happens if it fails to? What does the organization already run, support and know how to hire for? What governance is it subject to, and where is the data allowed to live? And who will own this in three years?
A platform that answers those questions well is the right answer, whether it is an off-the-shelf tool that removes the need to build anything, or a service written from scratch because nothing available would hold. The cheapest system to own is the one you did not have to build; the most expensive is the one you built on a platform that could not carry it.
We have no reseller relationships, take no platform commissions, and hold no certification we need to justify. That is a commercial position as much as a technical one, and it is the only one from which the question can be answered in the client's interest.
Most engagements begin as a description of something that is not working. We will tell you what it actually is.