Umut Çaylı
I build backends that scale and AI systems you can trust — the model sees, the code decides.
Systems, not features
I'm a backend engineer at Insider, where I work on backend services and, more and more, on putting AI into production. Every line of code either adds clarity or adds debt — I optimize for the former.
My rule for AI work is simple: the model sees, the code decides. I've used it to replace manual compliance paperwork review with a vision pipeline, and to build an AI code reviewer whose overrides get reviewed too. The model reports what it perceives; plain, testable code makes the call.
I started out with Python, data science and machine learning, then moved through Django, WordPress and JavaScript into backend architecture. I like writing about what I learn along the way — you can find it in the writing section.
What I work on
Backend Architecture
Service layers, clean API contracts and queue-driven flows. I build backends that stay readable at scale — clear boundaries, predictable flows, minimal coupling.
Applied AI Engineering
Putting LLMs and vision models into production without handing them the final say. The model perceives, deterministic code decides — every verdict stays explainable, reproducible and testable.
Data & Infrastructure
Choosing the right storage for the right access pattern, and shipping it in containers with proper orchestration. Python and data science are where I started.
Engineering Practices
Tests that catch real bugs, CI that gives fast feedback, and review processes people can trust. Reliability is a feature.
Things I built
Replaced manual review of SMS onboarding paperwork with a two-stage pipeline: a vision model reads bilingual PDFs, phone photos and old scans, and plain code makes every accept/reject decision.
- Model returns structured fields with a verbatim quote as proof
- Every verdict lives in code with a test and a readable reason
- Handles blurry photos, stamps, handwriting and TR/EN mixed text
An in-house LLM reviewer that comments on every pull request, plus a second layer that evaluates the justification when a developer dismisses a finding.
- Context analyzer finds callers of removed or changed symbols
- Per-repo convention rules instead of one bloated global prompt
- Two-layer validation of override justifications
Notes from the work
Teaching a Vision Model to Read Compliance Paperwork — Without Letting It Decide
An AI pipeline that reads SMS onboarding documents, and why the model's job stops the moment a decision is needed.
Building AI Code Review Is Easy. Trusting It Is the Hard Part
What happens after an LLM starts reviewing every pull request — and why the override needs a reviewer too.
Migrating from JavaScript ES5 to ES6
A side-by-side walkthrough of the ES6 features that change how everyday JavaScript is written.
Wordpress Hooks (Kancalar) Nedir?
Actions and filters in WordPress, explained with PHP examples.
Django Rest Framework ile Blog App, Part 1
Building a blog API with Django REST Framework and serializers.
“Logistic Regression” Nedir?
The idea behind logistic regression, with a Python walkthrough.
Prefer the command line?
Explore this portfolio the old-fashioned way. Type help to get started.
Let's build something.
Have an interesting problem or want to work together? I'm always open to conversations about backend architecture, system design, and engineering challenges.
// © 2026 umut çaylı · built with next.js, tailwind and framer motion · deployed on vercel