Lugh: an AI engineer
with his own login
He has a Jira account, an email address, a machine of his own and a hard list of things he cannot do. He works real tickets for real clients, and signs his name to the replies.
Platforms we run and connect for colleges


An AI colleague with a name,
a login and a hard limit

The model drafts. The code decides.
The language model never posts to Jira, never signs a reply and never decides a ticket is billable. It returns a diagnosis, a draft reply and a certainty score from 0 to 100. Our Python harness does everything else.
- Certainty under 85: it is a support ticket. Over 85 with a verified fix: resolved. Over 85 and it is a change: labelled, retyped and the account manager told
- One public reply per customer message. Staff notes never trigger him, so he cannot talk over a colleague
- Customer text goes through a cleaner that strips markdown and dashes, so replies read like a person wrote them
- One client's tickets are excluded in the search query itself, not by asking the model nicely
What we built
Lugh is a Python application on one small server in our AWS account. When his shift is on, he claims the oldest unassigned ticket, reads it, checks the live site and the code, and replies to the customer under his own name. Customers can email him. Colleagues can message him on Slack.
- Claims one ticket a minute, oldest first, and assigns it to himself so nobody picks it up twice
- Reads the ticket, the site's repository and our ISO procedures before he acts
- Checks the live service to confirm the fault, rather than trusting the ticket text
- Applies a fix only within a tightly limited set of permissions, and tells the customer what he did
- Replies on the ticket under his own name, and says plainly that he is AI
- Hands anything that is really a change request to a person, with a rough size
Service desk ticket · public reply · what the customer sees
Thanks for reporting this. I checked the site directly and the course page was returning an error from the cache layer. I have cleared it and the page is loading again. Could you confirm it looks right from your side?
Lugh, Service Desk, Inneall
Lugh is an AI-powered member of our support team


What he cannot do, enforced by IAM, not by prompt
Lugh's AWS role carries an explicit deny list. Even if a run ignored every instruction, the account would not let it:
- Stop or terminate a server, or stop a running container
- Delete or modify a database, change DNS, or edit a load balancer rule
- Change IAM or delete a secret
- Force a new deployment of a pipeline-managed service
- Work in a client's own cloud account
- And the machine itself has no inbound network rules at all. We reach it over Systems Manager, not SSH
Why he is shaped this way
Every rule exists because of something that would otherwise go wrong on a real service desk.
- The shift is a switch. A manager types "shift on 4" in Slack and he works for four hours, then stops. Ticket work can be halted without uninstalling anything
- He claims a ticket before he works it, so two people never pick up the same request and the queue shows who has it
- One public reply per customer message. He will not invent a second reply when nobody new has written, and staff notes never trigger him
- The harness posts the reply and the signature. The model drafts the words and does not get a second chance to post twice or sign as a colleague
- Certainty gates the change path. Below 85 he treats a ticket as support, because calling an outage a billable change is worse than a slower triage
- He never starts building a change before the client has approved it. The account manager is told; the engineer who understood the ask keeps the ticket
- The cost tier is the default because most first looks are cheap. A customer saying it is still broken is the case worth the stronger model
What we learned
Running an agent on real tickets taught us more than any demonstration.
- An idle poll costs nothing; a run costs money. He only calls the model when there is new customer text
- The expensive mistake is calling an outage a billable change, so certainty gates that path hard
- A name matters. Customers reply to Lugh, and a colleague can take a ticket back by reassigning it
- Email is read-only on purpose. A problem becomes a ticket; the ticket worker fixes it
- We will publish resolution and hand-over figures once there are three months of them
Why we built our own
We looked at bolt-on AI for service desks and found the same gap every time: they can read the ticket, but they cannot open the site, read the code, or tell a fault from a feature request. Our engineers can. So we gave the agent what they have: the repositories, the runbooks, controlled access to the live systems, and a manager who can send him home.


DISCOVER
Scope of work
Integration mapping
Risk and dependency analysis
Finalised project plan
DESIGN
Concept proposals
Stakeholder reviews Design development
Final specifications
Approval to progress
BUILD
System integration
Customisations
Content and data migration
Front end interface
TEST
Browser/app performance testing
Accessibility
System and security
DEPLOY
Final configurations and domain go-live
Support and monitoring
Bug-fix support
Performance tuning
SUPPORT
Responsive support
Planned maintenance
Quality control
Performance tuning
We love API environments
and the challenge of integration
We’ve integrated systems others refused to touch!
“Inneall’s impact on our ability to deliver reliable, scalable technology has been absolutely enormous. What sets them apart is their deep knowledge of our business, they understand our systems, our teams, and our priorities. That means we’re not dealing with a technology supplier; we’re working with a partner who genuinely cares about getting it right.”
Edward Ormonde
Head of IT, Dublin Business School
