Open to remote consultingUmar Khan Jadoon · Brașov, Romania

I build backend systems and keep them running.

I'm Umar Khan Jadoon, a backend developer in Brașov, Romania. I've written PHP for a living since 2008, most of it Laravel, and I've looked after the servers it runs on for nearly as long.

Cinch Software is my company, and I'm its only developer, so you work with me directly. I started it in 2018, and today I work with teams in Scandinavia, the US and the UAE. Most of it is APIs, infrastructure and admin tools. Some of it is mobile apps, and over the last few years a growing share has been AI features.

GET/api/v1/bookings?week=4420038ms
  1. cloudflare.edgewaf pass · bot score 97
    4ms
  2. nginxphp-fpm upstream
    33ms
  3. laravel.httpBookingController@index
    31ms
  4. auth:sanctumtoken ok
    2ms
  5. cache.getredis · hit
    0.8ms
  6. db.queryaurora · 2 queries
    9ms
  7. queue.dispatchhorizon · SendReminder
    2ms
  8. json.resourceBookingResource
    12ms
POST/api/v1/lessons/42/play20064ms
  1. expo.appios · react native
    64ms
  2. cloudflare.edgetls · cache bypass
    3ms
  3. laravel.httpPlaybackController
    22ms
  4. db.queryenrolment check
    6ms
  5. r2.presigncloudflare r2 · 15 min
    4ms
  6. sentry.spantransaction sampled
    1.2ms
  7. video.first_framehls · 720p
    31ms
POST/api/v1/applications/1187/analyse2002.14s
  1. laravel.httpAnalyseApplication
    2.14s
  2. documents.extract3 pdfs · 41 pages
    260ms
  3. embeddings.createopenai · 1 query
    120ms
  4. vector.searchtop_k=8 · 3 regulations
    45ms
  5. llm.completestructured · 1.2k tokens
    1.58s
  6. citations.attachpermits · consultations
    50ms
  7. queue.dispatchhorizon · NotifyBoard
    15ms

One request followed through the kind of stack I usually run. The timings are made up for the example.

  • 2008the year I started writing PHP for a living
  • 450M+accounts on Stardoll, where I worked on the backend
  • 2018the year I started Cinch Software
What I use most
  • Laravel
  • PHP
  • Livewire
  • Filament
  • Horizon
  • AWS
  • Docker
  • Cloudflare
  • Nginx
  • Redis
  • ArangoDB
  • React Native
  • Expo
  • Godot
  • Next.js
  • Vue.js
  • Tailwind CSS
  • Python
  • OpenAI
  • Claude Code
  • Codex
  • n8n
  • Grafana
  • Sentry
  • Pest
  • GitHub

What I do

I'm most useful when one person has to cover the whole path, from the database to the deploy. Pick an area to see what it involves.

This is most of my work. I design APIs, queue setups and data models in Laravel, and I've worked in PHP codebases from version 5 through 8.3.

  • REST APIs and the services behind them
  • Queues on Horizon, with retries, rate limits and unique jobs
  • Custom database drivers. I wrote a Laravel driver for ArangoDB
  • Database sharding for very large tables
  • Older PHP code as well as new projects
  • PHP 8.3
  • Laravel
  • Horizon
  • Telescope
  • Livewire
  • Python
  • Pest
app/Jobs/SyncListings.phpphp
<?php

namespace App\Jobs;

final class SyncListings implements ShouldQueue, ShouldBeUnique
{
    use Queueable;

    public int $tries = 5;
    public array $backoff = [10, 60, 300];

    public function handle(GraphConnection $graph): void
    {
        Listing::query()
            ->stale()
            ->lazyById(500)
            ->each(fn (Listing $listing) => $graph
                ->collection('listings')
                ->upsert($listing->toVertex())
                ->edgeTo('companies', $listing->company_id));
    }

    public function middleware(): array
    {
        return [new RateLimited('scraper'), new WithoutOverlapping()];
    }
}

I run the systems I build. That usually means AWS, Docker and Cloudflare, with monitoring, backups and a deploy process that doesn't need watching.

  • AWS: EC2, Aurora, ElastiCache, load balancers and CloudTrail
  • Docker, Nginx and Linux servers
  • CI/CD with Laravel Forge and Envoyer, and a test environment per branch
  • Cloudflare DNS, firewall and bot rules
  • Logging and monitoring with Grafana, Loki and Sentry
  • Security audits, server hardening and cleaning up after incidents
  • AWS
  • Docker
  • Nginx
  • Cloudflare
  • Forge
  • Grafana
  • Loki
  • Sentry
.github/workflows/ship.ymlyaml
name: ship
on:
  push:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    services:
      redis: { image: redis:7, ports: ['6379:6379'] }
    steps:
      - uses: actions/checkout@v4
      - run: composer install --no-interaction --prefer-dist
      - run: php artisan test --parallel --coverage --min=80

  deploy:
    needs: test
    runs-on: ubuntu-latest
    environment: production
    steps:
      - run: curl -fsS -X POST "${{ secrets.FORGE_DEPLOY_HOOK }}"
      - run: ./scripts/smoke.sh https://api.example.com/health

I build iOS and Android apps in React Native and Expo, along with the API and the release setup behind them. I'm also making a game in Godot.

  • React Native and Expo apps for iOS and Android
  • Video streaming from Cloudflare R2
  • Builds and releases for the App Store and Play Store
  • Crash and performance reporting with Sentry
  • APIs designed for mobile clients
  • React Native
  • Expo
  • TypeScript
  • Laravel API
  • Godot
  • Cloudflare R2
  • Sentry
app/lessons/[id].tsxtsx
export default function Lesson() {
  const { id } = useLocalSearchParams<{ id: string }>();

  const { data: lesson } = useQuery({
    queryKey: ['lesson', id],
    queryFn: () => api.get<Lesson>(`/lessons/${id}/play`),
  });

  // Signed Cloudflare R2 URL, issued by the Laravel API
  const player = useVideoPlayer(lesson?.stream_url ?? null, (p) => {
    p.play();
  });

  return (
    <Screen title={lesson?.title}>
      <VideoView player={player} allowsFullscreen nativeControls />
      <ProgressTracker lessonId={id} onComplete={markComplete} />
    </Screen>
  );
}

Over the last few years I've built retrieval-augmented generation (RAG) systems, chat assistants and scrapers that use language models. What I care about most is that the answers come from the client's own data.

  • RAG pipelines with embeddings, vector search and cited sources
  • Integrations with the OpenAI APIs
  • Scrapers and data extraction that use language models
  • Chat assistants and agents
  • Workflow automation with n8n
  • I use Claude Code and Codex in my own work, with tests and review before anything ships
  • OpenAI
  • Claude Code
  • Codex
  • RAG
  • Embeddings
  • n8n
  • Python
app/Actions/AnalyseApplication.phpphp
<?php

namespace App\Actions;

final class AnalyseApplication
{
    public function __invoke(Application $application): Analysis
    {
        $question = Prompt::load('renovation-analyst')
            ->with(['scope' => $application->scope_of_work]);

        $context = $this->vectors
            ->search($this->embeddings->embed($question), topK: 8)
            ->where('score', '>', 0.78)
            ->rerank($question);

        return $this->llm
            ->withContext($context)
            ->structured(Analysis::class)
            ->ask($question)
            ->citing($context->sources());
    }
}

When a project needs more than a backend, I build the admin panel and the frontend as well, usually with Filament and Next.js or Vue.

  • Filament admin panels and back-office tools
  • Next.js and Vue.js frontends
  • Interfaces in Livewire, Alpine.js and Tailwind CSS
  • Analytics with Umami
  • Filament
  • Next.js
  • Vue.js
  • Livewire
  • Alpine.js
  • Tailwind CSS
app/Filament/Resources/ApplicationResource.phpphp
<?php

class ApplicationResource extends Resource
{
    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                TextColumn::make('reference')->searchable(),
                TextColumn::make('association.name')->label('Housing association'),
                TextColumn::make('status')
                    ->badge()
                    ->color(fn (Status $state) => $state->color()),
                TextColumn::make('submitted_at')->since()->sortable(),
            ])
            ->filters([SelectFilter::make('status')->options(Status::class)])
            ->actions([
                Action::make('analyse')
                    ->icon('heroicon-o-sparkles')
                    ->action(fn (Application $record) => AnalyseApplication::dispatch($record)),
            ]);
    }
}

Tools I use

Grouped roughly by where they sit in a system. Pick one to see which projects I've used it on.

  1. L1Frontend & mobileweb, apps and the game
  2. L2In front of the appDNS, firewall, files
  3. L3BackendAPIs, jobs, admin
  4. L4AIlanguage models, automation
  5. L5Datadatabases and caches
  6. L6Servers & hostingwhere it runs
  7. L7Monitoring & testinglogs, errors, tests
  8. L8Daily toolswhat I write code with

Things I've built

Client work and two products of my own. Two clients prefer not to be named, so for those I describe what I built instead.

/01
  • Backend
  • DevOps
  • AI

A SaaS platform built on a graph database

Workaround.ioBackend architecture and DevOps

My longest-running client. I look after the data layer, the APIs, the queues and the servers.

  • Wrote a Laravel database driver for ArangoDB
  • Built the platform APIs and the scheduled queue processing on Horizon
  • Built scrapers, chatbot integrations and RAG systems that use language models
  • Introduced PHPUnit, Git Flow and code review, and helped interview new engineers
  • Set up Cloudflare security, and logging and monitoring with Grafana and Loki
  • Laravel
  • Horizon
  • ArangoDB
  • Redis
  • OpenAI APIs
  • n8n
  • PHPUnit
  • Cloudflare
  • Grafana
  • Loki
/02
  • AI
  • Product

An AI review tool for housing associations

Co-founder

A product I co-founded. It reads renovation applications sent to Swedish housing associations, points out the legal requirements, consultations and certificates each one needs, and follows the case until there is a decision.

  • Analysis based on retrieval, with the sources cited
  • Laravel API, Filament admin and a Next.js app
  • Laravel
  • Filament
  • Next.js
  • OpenAI APIs
  • RAG
  • Embeddings
/03
  • Backend
  • Product
  • AI

A consumer web platform, built from scratch

Full build, shareholder

I built the whole system for a company I'm also a shareholder in: the API, the admin panel, the frontend, and an AI assistant that answers visitors' questions from the site's own guides.

  • Laravel API, Filament admin and a Next.js frontend
  • A RAG assistant on Postgres and pgvector that links to its sources
  • Umami analytics, with Cloudflare in front
  • Laravel
  • Filament
  • Next.js
  • RAG
  • OpenAI APIs
  • Umami
  • Cloudflare
/04
  • Mobile
  • Product
  • DevOps

An app for expat soccer teams in Dubai

EFA DubaiMobile app, web admin and infrastructure

An iOS and Android app for expat soccer teams, and the web system the organisers use to manage them.

  • React Native app on a Laravel API
  • Web-based management system
  • Video streaming from Cloudflare R2
  • AWS hosting, automated backups, Sentry and store releases
  • React Native
  • Laravel
  • AWS
  • Cloudflare R2
  • Sentry
/05
  • Backend
  • DevOps

API and infrastructure work for a US marketplace

SwimplyAPI and DevOps

I worked on Swimply's Laravel API and the infrastructure under it.

  • Laravel API development
  • Kept the Docker containers and CI/CD pipelines working
  • Aurora database migrations and CloudTrail logging
  • Laravel
  • Docker
  • CI/CD
  • AWS
  • Aurora
  • CloudTrail
/06
  • Backend
  • DevOps
  • Leadership

The client platform of an advertising company

WidespaceBackend architect, 2013 to 2018

I was the backend architect of Summit, the client management platform for Widespace's advertising business. Its customers included Ford, H&M, BMW, KLM, Heineken and IKEA.

  • Led nine developers in Sweden and Bangladesh
  • Built test deployments per branch, so sales and managers could try features before release
  • Laravel
  • Vue.js
  • AWS
  • EC2
  • ElastiCache
  • Load balancers
  • Laravel Forge
  • Envoyer
  • Linux
/07
  • Backend
  • Scale

An online game with more than 450 million accounts

StardollBackend developer, 2010 to 2013

Three years on the backend of Stardoll, an online game for kids and teenagers.

  • Database sharding to spread very large tables across servers
  • Automated newsletters in more than 12 languages
  • PHP
  • Python
  • Sharding
/08
  • Product
  • Backend

A time and salary reporting app

TekmaBuilt and maintained since 2012

In production since 2012 and rebuilt a few times along the way. It handles time and salary reports, with access levels and geolocation tracking.

  • Laravel
  • PHP

Also built

  • Flymenua REST API and Filament admin for a mobile app, on AWS
  • medikal.dka COVID-19 test reporting system
  • butlers.dka backend API, with CI on Laravel Forge

A game on the side

Dead City Cats is a game I'm making under the Cinch name. It's the one project here without a client.

Three cats. One barrier. A dead city full of zombies.

A pixel-art zombie defense shooter for iOS and Android. Three cats hold a barricade against the zombies of a city called Havenfall. If the barricade falls, the run is over.

  • Built in Godot 4 with GDScript
  • A small trained model, the AI Director, watches how the player is doing and paces the horde
  • Scripted waves, bosses, powers, weapons and a story campaign
  • Python and GDScript tools for the art, animation and audio
  • Godot
  • Python
  • iOS
  • Android
  • Claude Code
  • Codex

Coming to iOS and Android

Dead City Cats gameplay: three armed cats hold a sandbag barricade against a zombie hordeDead City Cats gameplay: a riot-shield zombie and a drone operator boss on a flooded street

Where I've worked

Stockholm first, then my own company in Brașov since 2018. Shown as a commit log, newest first.

~/umar$ git log --graph --career
  1. c1nc4f8(HEAD -> main)2018 to now

    Founder and developer at Cinch Software S.R.L.

    Brașov, Romania

    My own company. I build and run Laravel applications, APIs, admin tools, mobile apps and AWS infrastructure for clients in Scandinavia, the US and the UAE.

  2. 4e2b7d12013 to 2018

    Backend architect at Widespace AB

    Stockholm, Sweden

    Architect of Summit, the client platform for Widespace's advertising business. I led nine developers in Sweden and Bangladesh, working in Laravel, Vue.js and AWS.

  3. 7c0d9e82010 to 2013

    Backend developer at Glorious Games AB (Stardoll)

    Stockholm, Sweden

    PHP backend work and Python automation for Stardoll, including database sharding and newsletters in more than 12 languages.

  4. 1f6a2b42008 to 2010

    PHP developer at Documentary Base AB

    Stockholm, Sweden

    A video streaming service and campaign sites for Dagens Industri and Golf.se, built in CakePHP.

  5. 9ab03e72009

    MSc, Management and Economics of Innovation at Chalmers University of Technology

    Gothenburg, Sweden

  6. 0000001(first commit)2006

    BSc, Computer Science at COMSATS Institute of Information Technology

    Islamabad, Pakistan

How I work

A few habits I bring to every project.

  1. I write tests

    PHPUnit and Pest, mostly integration tests, and test-first when the problem suits it. On a few teams I've been the one who introduced testing.

  2. I set up monitoring early

    Logs, metrics and error reports go to Grafana, Loki and Sentry before real users arrive. I would rather hear about a problem from a dashboard than from a customer.

  3. I keep releases routine

    CI/CD, zero-downtime deploys and a test environment for each branch. Releasing should be an ordinary part of the working day.

  4. I take security seriously

    Cloudflare rules in front, hardened servers behind them, and an audit every so often to check that both still hold up.

  5. I use AI tools and check their work

    Claude Code and Codex are part of how I work every day. They make me faster, but nothing ships without tests and a review.

  6. I work well inside a team

    I've led a team spread over two countries and helped clients interview developers. I like code review, and documentation that people actually read.

I have worked with Umar on many projects over the years, and it has always been a great experience.
PekkaClient across multiple projects
The technology Umar built into our website to handle inbound sales and effective follow-up of visitors has given us sales far beyond expectation. We had the goal of making a nice website, we got so much more!
Hammarsleven ABWebsite and inbound sales tooling

Get in touch

Tell me a bit about the project or the problem. I read every message myself and reply by email. If one of these is close to what you need, pick it and the form will note it.

Based in

Brașov, Romania

Local time

Brașov · EET/EEST

I only use your details to reply to you.