# About Aleksandr Kondaurov

I build software with coding agents, and I build the agents themselves.
Most of the code I ship today is typed by an agent; my part is everything around it — the rules it follows, the tools that let it see the running system, and the checks that decide what ships.

Before agents I spent thirteen years writing backends by hand: payments, ad-tech, data platforms, distributed systems — in product companies and consultancies, small teams and large, remote and on-site.
That is what I lean on now: knowing what good code looks like is what makes an agent's code worth keeping.

Distributed, async teams are where I do my best work.
Mentoring, writing, and sharing what I've learned — that's why this blog exists.

## How I build

**With agents, inside a harness.** An agent is as good as what it can see. I give mine the logs, the traffic and the errors of the stack it is changing — [procdeck](/blog/procdeck/) started as exactly that — and rules written down in the repo instead of repeated in chat.

**Agents in products.** A loop with tools, memory and a hand-off to a human, a cheap classifier before any chat model, and evals on real scenarios before a prompt or model change goes out.
More on that in [a chat is an agent with a human inside the loop](/blog/chat-vs-agent/).

**Types as guard rails.** TypeScript and Effect put errors, dependencies and resources into the types, so agent-written code is reviewed, not just trusted.
Go where one binary is the point — that's how [procdeck ships](/blog/shipping-one-binary/).

**Small, transparent pieces.** Event-driven systems and serverless: functions, queues and tables you can see, rather than infrastructure hidden inside a container.

**Automation** is the habit behind all of it — my open source started the same way: a deploy tool, a typed AWS SDK, a Telegram bot SDK, a dev-process manager.

## Expertise

### AI agents & LLM features

LLM features built like the rest of the backend — typed, measured and on a budget.

- Agent loops with tools, memory and hand-offs to a human
- Evals on real scenarios before a prompt or model change ships
- Cost guards: cheap classifiers first, spend checked before every model call
- Dev tooling that coding agents can query instead of guessing

Stack: Cloudflare Agents, Workers AI, OpenAI, MCP

### Type-safe backends

Errors, dependencies and resources as part of the types — the guard rails that let agent-written code be reviewed, not just trusted.

- Failures are typed values, not surprise exceptions — every error path visible in review
- Dependencies come through types, so a service is swapped in tests without mocks
- Retries, timeouts and cleanup composed from small pieces, not hand-rolled

Stack: TypeScript, Effect, Go

### Payments & data pipelines

Backends where a lost event is lost money.

- Payment, subscription and dispute flows held to latency SLAs
- Event pipelines into the warehouse, with alerts when volumes drift
- Reconciliation that survives currencies, retries and edge cases

Stack: SQL, Snowflake, Webhooks, Queues

### Serverless & delivery

Systems assembled from small, transparent pieces — and shipped often.

- Cloudflare Workers, Durable Objects and D1; AWS Lambda and DynamoDB
- Fast CI/CD with end-to-end tests on the critical paths
- Debugging from logs, traffic and alerts before reading code

Stack: Cloudflare, AWS, GCP, GitHub Actions

## Background

- **Experience:** 13 years in production, since 2013
- **Languages:** TypeScript and Go today; Scala, Java and Kotlin before
- **Clouds:** AWS, GCP, Azure, Cloudflare
- **Teams:** Team lead, hiring and mentoring; remote and async

## Contacts

- Email: mailto:alex@kondaurov.dev
- LinkedIn: https://www.linkedin.com/in/alexander-kondaurov/
- GitHub: https://github.com/kondaurovDev
- Telegram: https://t.me/kondaurov_dev
