Skip to content
ugurcan.bulut
Get in touch

Software engineering for complex products

I design and build web products, data platforms and AI features

Full-stack, from the database schema to the interface.

How a problem gets solved, step by step

workbench

Brief

Records arrive from three systems, each with its own ID. Search shows the same thing three times, and reports disagree.

3 sources3 ID formats1 truth needed

$ inspect sources. › source a id: integer. › source b id: uuid. › source c id: "B-" + number. › overlap name · date · location. › goal one record, one id

Tools I ship with

  • web apps

    React and Next.js

    Product front ends with server rendering

    • Tailwind
    • shadcn/ui
    • Radix
  • web apps

    Svelte and SvelteKit

    Lighter, faster interfaces

    • Vite
    • TypeScript
  • apis

    TypeScript and Node.js

    APIs with typed contracts

    • Hono
    • zod
    • OpenAPI 3.1
  • app data

    PostgreSQL and Search

    Relational schemas and full-text relevance

    • MySQL
    • Drizzle
    • OpenSearch
    • Elasticsearch
    • Meilisearch
  • analytics

    ClickHouse and Redis

    Live ingestion and analytical storage

    • Redis Streams
    • Parquet
    • S3
  • systems

    Rust and Axum

    Deterministic engines and live services

    • WebSockets
    • WebAssembly
  • machine learning

    Python and PyTorch

    Model training, from boosted trees to GNNs

    • XGBoost
    • LightGBM
    • GNNs
    • C++
  • ai

    LLM agents and tool calling

    Typed tools, retrieval, cost budgets

    • Vercel AI SDK
    • Mastra
    • Qdrant
    • pgvector
  • platforms

    WordPress and PHP

    Multi-tenant plugins and custom themes

    • Elementor
    • Shopify
    • WP-CLI
  • delivery

    Docker and CI

    Releases that are gated and repeatable

    • Traefik
    • Playwright
    • Lighthouse

What I do

Six ways I help teams ship software that holds up

  1. [01]

    Product engineering

    Web products built end to end: architecture, front end, back end and the details in between.

    • Next.js, React & SvelteKit apps
    • TypeScript across the stack
    • Auth, admin tools and dashboards
    • Component libraries

    “We have a prototype. We need a product people can rely on.”

  2. [02]

    Data platforms & APIs

    Pipelines, schemas and APIs that give a product one reliable source of truth.

    • Ingestion & normalization
    • PostgreSQL & ClickHouse
    • REST APIs with OpenAPI contracts
    • Search on OpenSearch & Elasticsearch

    “Our data comes from five places and none of them agree.”

  3. [03]

    AI features & agents

    Assistants and agents that work on your real data, with guardrails and a budget.

    • Tool-calling agents
    • Retrieval over your own data
    • Cost, rate and quota controls
    • Evaluation before release

    “We want an assistant, not a surprise bill.”

  4. [04]

    Performance & accessibility

    Fast, accessible front ends that pass Core Web Vitals and WCAG, and keep passing them.

    • Core Web Vitals work
    • WCAG 2.2 audits and fixes
    • Performance budgets in CI
    • Rendering and loading strategy

    “Our site is slow and we just failed an accessibility audit.”

  5. [05]

    WordPress & commerce platforms

    Custom plugins, multi-site platforms, CRM integrations and Shopify storefronts that stay maintainable.

    • Custom themes & plugin suites
    • CRM & API integrations
    • Page-builder components
    • Shopify stores

    “Our platform grew into something nobody wants to touch.”

  6. [06]

    Retainer & care

    Ongoing development, monitoring and upgrades for platforms that can't stand still.

    • Monthly development time
    • Updates, backups & security
    • Monitoring & incident fixes
    • Planned upgrades

    “We need someone who knows the system, every month.”

Problems I solve

The problems teams bring me in for

Problem

Data from many sources, and no single truth

How I solve it

  1. Keep every source's raw data first, so nothing is lost and anything can be replayed.
  2. Normalize into an analytical store, and keep application state in its own database.
  3. Give every real-world entity one internal identity, and keep source IDs behind the API.

Where I've done it

A football analytics platform I designed and built: live provider data streamed into ClickHouse, PostgreSQL for application state, and one identity for hundreds of thousands of entities.

  • TypeScript
  • ClickHouse
  • PostgreSQL
  • Redis Streams

Activity

The last twelve months on GitHub

My repositories are private, so this shows counts only, never names or code.

contributions · last 12 months
contributions
6,747
active days
256
longest streak
57 days

About

More than a decade building for the web

From designer–developer to full-stack product engineer.

~/ugurcan.bulut
whoami
Ugurcan Bulut, software engineer
cat focus
web products · data platforms · AI features
cat started-as
designer–developer, clients around the world
cat principles
own the whole productmake correctness visiblespend where it matters
cat workflow
AI coding agents, behind specs and verification gates

How I work

A process that shows its work

  1. 01

    Discovery

    The business, the users and the data, before any code.

  2. 02

    Specification

    Contracts and acceptance checks, agreed on paper.

  3. 03

    Development

    Small, reviewable steps with previews you can click.

  4. 04

    Quality

    Tests, accessibility and performance gate every change.

  5. 05

    Launch & care

    A monitored release, and a retainer if you want me to stay.