Backend and platform engineer based in Erbil, Kurdistan. I build payment and telecom systems: direct carrier billing, subscription platforms, and the messaging and streaming products around them. Lately I spend a lot of time on MCP and AI agents.
Most of my work is about correctness under messy real-world constraints. Money that has to reconcile to the cent, retries that must not double-charge, webhooks that arrive out of order, and a fleet of carriers that each behave a little differently. I lead backend on products that bill real subscribers across roughly ten countries and 20+ carrier integrations.
What I focus on
- PHP / Laravel (my strongest; backend and platform lead)
- TypeScript / Node
- Payments, telecom, and direct carrier billing (DCB)
- MCP and AI agents
Selected projects
- auto-bug-triage: scans Sentry hourly across a fleet, files the real bugs as GitHub issues, and hands an AI agent the first fix as a draft PR. I wrote up how and why here: gardi.dev/articles/bug-triage-is-a-cron-job
- mcp-laravel: an MCP server that inspects a Laravel app's routes, models, schema, and read-only queries (on Packagist)
- agent-loop: a tiny, zero-dependency, provider-agnostic agent tool-loop for TypeScript (on npm)
- dcb-kit: a framework-agnostic direct-carrier-billing toolkit for PHP (on Packagist)
- laravel-agent-instructions: production-grade Laravel and PHP coding standards, written as instructions for AI coding agents
- live-presence: self-hostable real-time presence, showing who's here and what they're doing right now
Writing
I write about the real engineering behind this work at gardi.dev: carrier-billing quirks, settling a fantasy gameweek exactly once, webhooks with no guaranteed order, dropping an API path from ten seconds to under 100ms, and building AI agents that ship reviewable diffs instead of taking actions on their own. No filler. Just the war stories and the code.
Elsewhere
- Portfolio and articles: gardi.dev

