Ezra Hulsman

Ezra Hulsman

Forward Deployed Engineer at Anamata

I build ANNA, an AI assistant in Microsoft Teams, and make it work for the people who use it. Python, AI agents and MCP, on a Linux and DevOps foundation.

Currently employed • Open to connect

Get in touch Résumé GitHub LinkedIn

Drawn byE. HulsmanLocationUtrecht, NL
ProjectANNA, AnamataSince2025-12-18
DrawingSection A–A through one request
Ezra Hulsman, photographed from below
Site photo: the scale figure, in person

A terminal is providedtype help

Section A–A

One request, top to bottom

Someone in Teams asks ANNA how much leave they have left. They don't open another app. ANNA works out who they are through Entra ID, loads their profile, history and memories, and hands the question to Claude, which reaches Loket through an MCP connector.

The answer comes back up the same way and lands as one Teams message that updates while it's being written.

Detail: the screen

How many leave days do I have left?

ANNA Checked Loket for you. Here's your balance for this year, and what's already booked.

Exploded view · Level −1

Everything is per user

ANNA works out who's asking through Entra ID, then loads their profile, history and memories. Memory, documents and connector access are scoped to that person.

Connector secrets are stored encrypted, and when a login is needed, ANNA keeps the token, not the user's chat.

Level −2

Two backends, one interface

About 37,000 lines of Python: a service layer, a command registry and two Claude backends. One runs Claude Code as a subprocess and streams its output; the other calls the Anthropic API directly.

Teams is where people use ANNA. Slack is also being supported, with a working beta version currently under development.

Level −3

Every system is an MCP server

Loket for leave, ClockWise for hours, plus ANNA's own tools for memory, reminders and documents. Adding a system means registering a connector and granting access, not changing ANNA's core.

Level −4

Running it is half the job

The other half is working with the people who use it and looking after ANNA in production, from security to EU AI Act transparency. Health checks and a log analyser run alongside the bot, and tokens that are about to expire raise an alert before they break anything.

Read how ANNA is built

Drag, or use these, to turn the model
  1. −1 Identity
  2. −2 Claude
  3. −3 MCP connectors
  4. −4 Operations
Detail: the screen

How many leave days do I have left?

ANNA Checked Loket for you. Here's your balance for this year, and what's already booked.

Details

Two more things I built, each drawn at the point where it gets interesting. Not to scale.

Henk drawn as a floor plan: alerts enter an intake room with a cadence gate, pass into the agent's room, and every tool call has to go through one door, the PreToolUse choke point, into a room of read-only tools. A call aimed anywhere else stops at the wall. INTAKE cadence gate debounce cooldown daily cap ntfy AGENT Claude Agent SDK TOOLSET read-only read-only own memory the one door: PreToolUse Signal, owner only out-of-registry call: stops at the wall

Henk, homelab agent

A security-first agent on the Claude Agent SDK that turns infrastructure alerts into Signal conversations. Its default-deny toolset refused a live prompt-injection payload, and it replays events exactly once across hard container kills.

4
egress ports, zero inbound
The Finance Bot drawn as a sorting line: a bank export goes through about 40 rules, the rest goes to Claude in batches of 40, and a gate at 0.75 confidence sends each row into the month's sheet, the unsure ones written and marked in red. /upload bank export RULES ~40 patterns matched, 100% rest CLAUDE batches of 40 0.75 MONTH SHEET one per month ! below it: written, flagged, never guessed

Finance Bot

A Discord bot that turns our bank exports into a monthly household budget. About 40 rules handle the predictable transactions, Claude handles the rest, and anything it isn't sure of is written flagged instead of guessed.

0.75
confidence; below it, a row is flagged

More projects

Smaller builds and side projects, each with a write-up.

  1. Homelab infrastructure

    Three servers and a workstation on a Tailscale mesh behind Cloudflare tunnels, with Prometheus, recursive DNS and nightly cross-device backups

    Operating since Jun 2025

  2. bible-tui

    Terminal Bible reader in Rust, running in the browser on the same UI code

    Online since Apr 2026

  3. Encrypted Chat TUI

    Self-hosted terminal chat in Rust: Tokio, a typed ndjson protocol, checked SQL

    Started Aug 2024

  4. pytaiga-mcp

    A merged pull request to an open-source MCP server for Taiga

    Merged Jan 2026

  5. Claude Sandbox

    An OS-level sandbox around Claude Code: kernel isolation, a filtering egress proxy and a risk score per session

    Released Feb 2026, now retired

  6. All projects

Other sheets, drawn for fun

Experience

Newest first, the way a drawing records its revisions.

  1. G2025 –

    Forward Deployed Engineer Anamata

    Owns ANNA, Anamata's AI assistant in Microsoft Teams, end to end: Python, Claude and MCP, including connectors to the systems people already use. Staff request leave, log hours or search policy documents without switching apps. Also built the anamata.ai website and is laying the groundwork for rolling ANNA out to other companies.

    • Claude
    • Claude Code
    • Anthropic API
    • MCP
    • AI agents
    • Python
    • Microsoft Teams
    • Entra ID
  2. F2025 –

    DevOps & Software Engineer Major European bank

    Sole developer of an enterprise self-service portal (React, Node.js, Oracle) used by about 20 tenants across 80+ Pega environments, for pipelines through Azure DevOps, audit logging and ServiceNow ticketing. Incidents, upgrades and multi-tenant DTAP operations with Ansible and AWX.

    • React
    • Node.js
    • Oracle
    • Pega
    • Azure DevOps
    • Ansible & AWX
    • ServiceNow
  3. E2024 – 2025

    Platform & Software Engineer Nordic financial regulator

    Replaced a legacy VM-based setup, where 2.5 of 150 planned case types had shipped in four years, with four containerized DTAP environments on self-hosted Kubernetes. Built a React portal on Pega's DX API with a custom OIDC flow, and cut the case types from 150 to about 25.

    • Kubernetes
    • Pega
    • Pega DX API
    • React
    • OIDC
  4. D2023 – 2024

    DevOps Engineer European staffing company

    Replaced a daily 10 to 15 minute manual health report across about 50 VMs with a Java and Playwright automation, delivered by CI/CD with Teams alerts. A Bash toolbox of scheduled scripts keeps storage from running out. Still on call for occasional work.

    • Java
    • Playwright
    • CI/CD
    • Bash
    • Microsoft Teams
  5. C2023 –

    Pega DevOps Engineer Anamata

    Joined Anamata as a Pega DevOps Engineer, still my title on paper. The bank, regulator and staffing company roles above are that work. Pega Certified System Architect and Business Architect, 2023.

    • Pega
    • PDC
    • CPSA 8.8
    • CPBA 8.8
    • PSM I
  6. B2022 – 2023

    Junior Support Engineer MovingMedia BV

    Replaced plaintext passwords in documentation with a Python encryption tool on a secure remote VPS. Looked after client Synology NAS infrastructure.

    • Python
    • Synology NAS
    • VPS
  7. A2019 – 2022

    Tutoring teacher Self-employed

    Mathematics, physics, chemistry and economics.

Materials
LanguagesPython, Bash, Java, TypeScript, Rust
AI and agentsAI deployment, AI agents, MCP, Claude, Claude Agent SDK
InfrastructureLinux, Docker, Kubernetes, Git, CI/CD, Prometheus, Grafana, Cloudflare
FrameworksReact, Astro
MethodsTests first, specs, Scrum, DevOps, IaC, monitoring
Specification
EducationBSc Computer Science, Vrije Universiteit Amsterdam, 2020 – 2023, GPA 8.0
CertifiedProfessional Scrum Master I, Pega CPSA 8.8 and CPBA 8.8 (2023), Cambridge Proficiency (2018)
SpeaksDutch (native), English (fluent)

General notes

The part of a drawing you read before building anything.

  1. Forward Deployed Engineer at Anamata. Owns ANNA, its AI assistant in Microsoft Teams, and much of what's built around it.
  2. At 2 meters tall, has a good overview of both the codebase and the room it's deployed in.
  3. Works mostly in Python, connecting ANNA to the tools teams already use and keeping it secure and reliable in production.
  4. Came to AI coding agents as a sceptic. They now write much of the code; it's still built tests first, with a spec for anything bigger, and nothing ships that can't be explained.
  5. Builds side projects in spare time, like Henk, a homelab agent, and a terminal Bible reader in Rust, and contributes to open source.
  6. Formula 1 fan: well-tuned race cars and well-optimized code are satisfying in the same way.

Site diary

Let's talk

Send a message and I'll get back to you soon. Whether it's about work opportunities, requesting my full CV, open source projects, or just to chat about Formula 1!

Send a message info@hulsman.dev LinkedIn GitHub