Skip to content
Ihor KostyniukIhor Kostyniuk
Ihor Kostyniuk
Senior AI Automation Engineer · Odesa, Ukraine

Systems in production, not landing pages.

Applications I built, shipped and still run myself, on one server I administer. Some you can open and use. The rest come with a written breakdown.

Accounts in three currencies, one running total.Accounts in three currencies, one running total.
A month of spending day by day, each line in its category colour.A month of spending day by day, each line in its category colour.

Kosht

Open and use

Personal finance that survives four currencies and a sole-trader tax year.

Next.js 16 · Supabase · Kotlin/Compose · Wear OS

Open the case
The page a recruiter opens. Email and phone are blurred on the screenshot.The page a recruiter opens. Email and phone are blurred on the screenshot.

CV

Open and use

Turns a resume into the version a specific job posting is actually asking for.

Next.js 16 · Supabase · LLM pipeline

Open the case
Library and tools: merge, split, scan, edit.Library and tools: merge, split, scan, edit.

Papir

Download and run

A desktop PDF workbench that replaced a paid one, and the phone version of it.

Tauri · Rust · TypeScript · Kotlin/Compose

Open the case
Ihor KostyniukIhor Kostyniuk

Ihor Kostyniuk

Senior AI Automation Engineer - LLM agents and orchestration, MCP, RAG, Voice AI. Odesa, Ukraine.

Two and a half years shipping production LLM systems on self-hosted infrastructure. Everything on this page runs on machines I administer myself: Docker, Supabase, Caddy, centralised monitoring, nightly backups.

I write the orchestration layer myself instead of adopting a framework - tool-calling loops, custom MCP servers, multi-provider routing with automatic fallback, checkpointed pipelines that resume after a crash, human-in-the-loop gates. End to end means the web app, the native Android app and the server under them.

Also built and running

All projects

These stay behind the glass: screenshots, what the thing does and how it is used.

Telegram, WhatsApp and the site widget in one operator window.Telegram, WhatsApp and the site widget in one operator window.

Chat

Live, behind sign-in

Four messengers and a website widget arriving in one operator window.

Next.js 16 · Supabase · Qdrant · Telegram / WhatsApp / Instagram

Open the case
Run the call or upload a recording, get a structured artefact back.Run the call or upload a recording, get a structured artefact back.

Meet

Internal tool

Video calls on my own LiveKit, with the transcript and the decisions written up after.

Next.js 16 · LiveKit · Whisper · Postgres

Open the case
Twenty-one courses, 1320 lessons, grouped by topic.Twenty-one courses, 1320 lessons, grouped by topic.

Courses

Live, behind sign-in

Ask a question, get the answer and the exact lesson timestamp it came from.

Next.js 16 · Qdrant · Whisper · Supabase

Open the case
A week of posts that actually went out, each with its fact-check verdict.A week of posts that actually went out, each with its fact-check verdict.

SMM

Internal tool

A daily posting pipeline that drafts, fact-checks and waits for one tap to publish.

Kotlin/Compose · n8n · LLM pipeline

Open the case
One server in detail: disk, containers, uptime, open incidents.One server in detail: disk, containers, uptime, open incidents.

Ops

Internal tool

Nine servers watched from one phone, with the routine repairs done without me.

Kotlin/Compose · Node · Docker

Open the case
Class schedule with places left, per club.Class schedule with places left, per club.

Fit

Live, behind sign-in

Multi-tenant SaaS for gyms: schedule, memberships and the trainer side of it.

Next.js 16 · Supabase

Open the case