Pavel Kleisner

Senior backend engineer · team lead · AI tooling · level 9

Pavel Kleisner

I build and look after backend systems in Kotlin, Java, Spring and PostgreSQL: integrations, releases and production issues. I also build small tools that let AI agents work with real systems.

Class
Backend engineer / AI tooling
Level
9 years in production
Home base
Near Prague, remote
Party status
Open to contracts

Experience

Main quest

TSM / CETIN

2020 – now

Senior backend and integration engineer, team lead

Kotlin and Java services on PostgreSQL for a telco operator's service platform: B2B flows, change management, partner integrations and incident analysis.

  • Led the 2.2 production rollout
  • Leading the 2.4 rollout and its release batches
  • Core developer on version 1.5
Side quest

Nordic web

2024 – now, on demand

Ongoing work on a Django web application, focused changes when they're needed.

Completed

MNCP

2018 – 2021

Full-stack Kotlin/Spring and Angular: authentication, exports, archives, measurement batches.

Completed

ZIS

2017 – 2018

Enterprise Java and ZK. Where I learned to deliver a feature end to end.

What I do

Integrations
B2B APIs, message contracts, retries and the failure modes that only show up once a partner system is connected.
Releases
New platform versions into real environments: old data, backward compatibility, rollout order and a way back.
Debugging production
Logs, metrics, the database and domain knowledge together, until the cause is clear.
Architecture
Small safe changes, clearly named rules and sensible service boundaries.

Companion AI tooling

I use AI agents every day and build small tools that let them work with real systems. They explore unfamiliar code, draft routine parts, run tests and review a diff before I do.

Own MCP servers
Read-only log search over Elasticsearch with server-side guards and an audit log (working prototype), a Jira server, and a team-chat bridge that only sends a message after I confirm the draft.
Skills and shared context
One knowledge base for Claude Code and Codex, and a library of repeatable workflows: preparing a release batch, scanning container images, fixing a ticket in an isolated branch.
Ground rules
Agents only read production data, I push to git myself, every data fix ships with a revert script, and credentials reach MCP servers through environment variables or a separate form, never through the chat.
Side projects
Built mostly by agents. That's where I learn what they can be trusted with.

I review every change before it ships, check its behaviour with tests or in the running app, and I'm accountable for the result.

Boss fight The UUID that wasn't a UUID

When we rolled out the first platform version, the integration spec said the messageId would be a UUID. One partner started failing straight away: their system had been quietly parsing the ticket ID out of the old ticketId_timestamp format, even though the ticket ID sat right there in the message body.

The clean fix was on their side, but in a corporate setting it would have taken months. So I switched our side back to the old format and production kept running.

Tech stack

Main
Kotlin, Java, Spring, PostgreSQL, Kafka
AI tooling
Claude Code, Codex, MCP servers, agent skills
Also
Kubernetes, Oracle, Angular, Python and Django, TypeScript, Astro

Right now

Playing
Bayonetta 3
Reading
Citadela — Alexej Osadčuk
Watching
One Piece

Need a backend engineer?

Long-term or focused contracts: backend systems, integrations, production releases and tooling for AI agents.

[email protected]