Skip to content

In production / internal project

An AI assistant we run ourselves

Jarvis is our in-house assistant: a Slack bot built on Claude that triages email, drafts and issues invoices and books sports courts on its own. It has been in production since August 2026. We built it to run SpexSol, and to learn what AI automation really needs before we propose it to clients.

Talk about your version
Status
In production
Category
AI assistants · Workflow automation · Invoicing
Who it's for
SpexSol internal operations; the same pattern fits any small team buried in routine admin
System schema

The challenge

Where our own time was going

Reading mail for things that need a reply. Writing invoices and the email that goes with them. Chasing court bookings that open at odd hours. Small tasks, every day, each demanding attention at the wrong moment.

What we built

What we built

A Slack-first assistant. Claude decides which tool to call; code decides what is allowed. Anything that spends money or sends a message outside waits for explicit confirmation. Integrations run through self-hosted n8n, so credentials never reach the model. Booking is deterministic browser automation, with the model used only to repair a broken step.

How it works

  1. 01

    Ask

    A message in Slack, or a scheduled job at 10:00 each morning.

  2. 02

    Decide

    Claude picks a tool from a typed registry and fills in its arguments.

  3. 03

    Gate

    The executor checks permissions, budget and retries before anything runs.

  4. 04

    Act

    Search mail, draft an email, generate an EN 16931 invoice PDF, check or book a court.

  5. 05

    Confirm

    Bookings and outgoing email need a button press or a spoken yes.

  6. 06

    Log

    Every call, token and decision lands in Postgres with an audit trail.

What it does

What it does today

  • Daily mail digest: what from the last 24 hours actually needs a reply.
  • Invoices issued from a Slack message, with the PDF and covering email drafted.
  • Court availability across three venues cached and bookable, with a public read-only view.
  • An admin UI that shows exactly what the system sends to the model.

Internal deployment, one team. The points above describe scope, not measured client savings.

Design rules

Rules we did not bend

  • The model proposes; code enforces. Approval is a gate in the executor, not a line in a prompt.
  • Only sender, subject and a short snippet leave the mailbox. Never the body.
  • Deterministic automation for predictable steps; AI only where the input is unstructured.
  • Everything self-hosted on one server, admin access over a private network only.

What we learned

What it taught us

A second venue broke assumptions the first one hid, so adapters now read their configuration off the page instead of from constants. Token spend had to be measured per turn before it could be managed. These are the lessons we bring to a client project on day one.

Want this for your team?

Most of Jarvis is reusable: the tool gate, the integration layer, the audit trail. Let's talk about which of your routine tasks it could absorb first.

Get in touch
Back to solution examples