Antonenko.

Process automation and integrations for small business

Software measured in profit

I’m Oleksandr Antonenko. I take the processes a business already runs — orders, stock, invoicing, delivery — and turn them into software that does the work. Then I judge it the way an owner does: did orders stop leaking, did the month get cheaper, did a seven-day job turn into a two-hour one.

Ten case studies below · six opened up in full

Send an enquiry
Oleksandr Antonenko at a café table with an open laptop, looking at the camera
Builds
Custom CRM and ERP · storefronts and client portals · mobile apps · integrations between tools you already pay for
Sectors
Retail · Manufacturing · Healthcare · Field services · Education · Media
Runs on
TypeScript · NestJS · Next.js · PostgreSQL · React Native
Handles
Card payments · fiscal receipts · courier waybills · SMS, push and Telegram · realtime chat
Based
Vilnius · working with Europe and the USA

Selected work

Some of what’s in service

Retail, manufacturing, healthcare, field services, education, media — different trades, the same story every time: the work outgrew the spreadsheet and started costing money.

In service since 2026 curl.school ↗

Curl School

Hairdressers buy a course, a seminar seat or an expert certificate and have access the same minute — from the phone they work with all day. Everything around the sale, from the invoice to the certificate, is the system’s job rather than the office’s.

Built
Course platform, seminar ticketing, certification applications, admin back office, two locales
Runs on
Next.js 16 · React 19 · NestJS · Prisma · PostgreSQL
Handles
Card payments, phone-number sign-in over SMS, e-mail + Telegram delivery, certificate issuing
Result
Enrolment, payment, access and the certificate happen without anyone in the office touching an order

Why it’s built this way The audience barely reads e-mail — inboxes sit full for weeks. So nothing that costs money depends on e-mail alone: every decision, invoice and access link is duplicated to Telegram and SMS.

In service since 2026 makekudri.com.ua ↗

MakeKudri

A hair-care brand sells to shops and to people, and one system carries an order from paid to handed over — the stock it comes off, the receipt the tax office wants, the courier waybill and the money it earned.

Built
Storefront plus CRM — catalogue and price lists, warehouses and stock audits, B2B/B2C orders, consignment, expenses and P&L, reports
Runs on
NestJS · Next.js · Drizzle ORM · PostgreSQL · TypeScript
Handles
Nova Poshta waybills and tracking, Checkbox fiscal receipts, Monopay acquiring, wholesale and retail pricing
Result
One paid order books the stock, the receipt and the courier; nobody retypes an address between three systems

Why it’s built this way Stock, receipts and delivery are one flow, not three tools. A paid order reserves the goods, issues the fiscal receipt and books the courier without anyone retyping an address — which is where the errors used to come from.

The MakeKudri storefront: a shampoo product page with description, three bottle sizes and their prices, and an order button
The storefront a customer sees
The MakeKudri CRM: an orders table with status, amount and payment, beside a sidebar for sales, warehouse, money and system settings
The back office behind it
Web app

Journalist Tool

A journalist drops in the recording of an interview and gets back the transcript and a usable first draft of the piece — instead of an evening spent typing out an hour of audio.

Built
Web app — upload, transcription, draft generation, sign-in; runs in the browser, nothing to install
Runs on
TypeScript · Fastify · Deepgram · Gemini
Handles
Long audio files, speech-to-text, a draft written from the transcript
Result
An hour of interview comes back as a transcript with a draft attached — the reporter edits instead of types

Why it’s built this way Transcribing is the boring half of an interview; writing the first draft is the half that eats the evening. Doing both from one upload turns a night of typing into a review — which is the only part a journalist is actually paid for.

Web app

NestorDoc

A doctor talks to a patient and the consultation writes itself up. The visit is transcribed as it happens, and the notes — history, likely diagnosis, prescriptions, advice — are drafted by the time the patient leaves the room.

Built
Web app for live consultations, structured medical notes, document generation, accounts and usage billing
Runs on
TypeScript · NestJS · Next.js · Prisma · WebSocket · Deepgram · OpenAI
Handles
Live transcription with speaker roles, ICD-10 coding, document generation, four interface languages, per-consultation AI cost tracking
Result
The write-up is finished when the consultation ends, instead of in the evening after clinic

Why it’s built this way A raw transcript is not a medical note. The hard part is knowing which voice is the doctor, which sentence is a complaint and which is a prescription — so the system settles who is speaking first, and only then writes anything down.

NestorDoc during a consultation: the live transcript of a dentist and patient on the left, and the medical conclusion — complaints, examination, diagnosis, treatment plan — assembling on the right Watch the demo · 10 min
A dental consultation, start to finish
In service since 2025 App Store ↗ Google Play ↗

Connexa

A mobile app that turns a scanned QR code or a paper business card into a real, synced LinkedIn connection — so the stack of cards from a conference actually becomes a contact list.

Built
iOS and Android app, API, LinkedIn sync, contact management, subscriptions
Runs on
React Native · NestJS · PostgreSQL · Supabase · RevenueCat
Handles
LinkedIn sign-in and profile sync, QR and business-card scanning, deep links, subscription billing
Result
The stack of cards from a conference is a synced contact list before the flight home

Why it’s built this way A conference hands you fifty cards in two days and none of them end up in your phone. Scanning is the easy half; the app’s real work is keeping the contact current afterwards, which is the part that normally rots within a month.

In service since 2026 App Store ↗ Google Play ↗

ParentHive

A mobile app where parents arrange the school run together — matching families going the same way, signing up volunteer drivers, and pushing the notification that says who is picking up whom.

Built
iOS and Android app, a replacement backend, volunteer sign-up, real-time notifications, live ride status
Runs on
React Native · NestJS · Drizzle ORM · PostgreSQL · AWS
Handles
Phone sign-in, ride matching, push notifications, a live activity on the lock screen while a ride is running
Result
Parents settle the week’s school run in the app instead of a chat group nobody can follow

Why it’s built this way The app was live the whole time its backend was being replaced underneath it. The new API had to answer the old contract endpoint for endpoint before anything moved, so no parent ever saw the transition happen.

Under NDA — overall information only

Four more, in outline

Client names — and for some, the product name too — stay where they belong. What the system does, what I did on it and what it’s built from is fair to share.

Field services marketplace

AirConnect

A marketplace for heating, cooling and water-heating work. A homeowner posts the job, matching contractors spend credits to respond, and the two of them finish the conversation inside the app.

Client
Withheld — NDA
My role
The whole platform — API, both web apps, admin, mobile
Runs on
NestJS · Next.js · Drizzle · PostgreSQL · Socket.IO · Expo
Result
A homeowner’s job reaches matching contractors in minutes, and the platform earns on every response

Manufacturing

Garment Production System

A clothing factory always knows what is being sewn, from which fabric and print, against which order — and where every order stands right now. Orders arrive from the shop’s CRM, the floor works from them, and the money is counted in the same place.

Name & client
Withheld — NDA
My role
Lead developer, still on it
Runs on
NestJS · React · PostgreSQL · CRM sync workers
Result
The floor knows what to sew and against which order; the office sees where an order stands without asking

Education & psychology

Report Writing Tool

School psychologists feed in rating scales, classroom observations and interviews, and the tool drafts the evaluation report they would otherwise write by hand. A report that used to take seven working days now takes about two hours.

Name & client
Withheld — NDA
My role
Backend and the report generation engine
Runs on
NestJS · TypeORM · PostgreSQL · React · OpenAI + Gemini · S3
Result
A report that used to take seven working days is finished in about two hours

Health & fitness

Nutrition & Training Platform

A mobile app for personal trainers and the clients they coach. Clients log workouts, meals and progress; the trainer sees at a glance who is following the plan and who quietly stopped — instead of chasing every one of them over chat.

Name & client
Withheld — NDA
My role
Backend engineer on the microservice platform
Runs on
NestJS microservices · NATS · Prisma · Supabase · Expo
Result
A trainer keeps a full roster on track from one screen instead of chasing every client through chat

Recognise your own business in any of these?

Send an enquiry

How I build

Four rules that cost money to learn

None of these are opinions about taste. Each one is the standing order left behind by something that went wrong on a real business day.

Oleksandr Antonenko working at a laptop with a split mechanical keyboard

Nothing fails quietly

Every server error and every message that failed to send goes straight to a channel a human watches. E-mail was once broken for three days and we found out from the logs, not from a customer. Silence is the expensive kind of failure.

A green deploy is not proof

A release counts when the real action works on the real page. A feature once shipped green and spent three weeks telling people applications were closed, because one row was missing from the database. Now the tests walk the path a customer walks.

Bad input stops the line

No guessing, no records invented to paper over a broken import. If something doesn’t resolve, the system halts and asks a person. Duplicate and phantom records are born from helpful fallbacks nobody agreed to.

Errors are written for people

Every message a user sees says what happened and what to do next, in their own language — no raw 500s, no validator dumps. And a form that shows a green step must actually save; a screen that lies is a bug, not a rough edge.

What I take on

One developer, whole system

Database, API, web, mobile, deployment and the thing that pages you at 2am — all of it by the same person, so nothing falls between two contractors.

A new system, from scratch

We write down what the business actually does, then build it: the spec, the software, the launch, and the months afterwards where it earns its keep.

An unfinished one, rescued

Inherited code, a half-built product, a developer who left. I read what’s there, tell you plainly what’s salvageable, and finish it.

The integrations nobody wants

Payments, fiscal receipts, couriers, CRMs, messengers, app-store subscriptions — the plumbing between your business and everyone else’s systems.

Contact

Send me the problem

Describe what your business does today and where it jams. You’ll get back a plain answer: what I’d build, roughly how long it takes and what it costs — before anyone commits to anything.

E-mail
antonenko.web.dev@gmail.com
Code
github.com/oleksandr-antonenko
Based
Vilnius, Lithuania — working with Europe and the USA
Languages
English · Ukrainian · Russian
Typical start
A 30-minute call, then a written scope and estimate
Answered within one working day

Send an enquiry

Consultation

One hour, one straight answer

Sometimes you don’t need a developer for three months. You need an hour with someone who has already built the thing you’re about to pay for — to check the quote, read the code you inherited, or settle the decision that has been open for a week.

Booked by e-mail · paid per hour

€100 / hour

A working session, not a sales call. Bring the problem in whatever state it’s in — a spreadsheet, a half-built app, a quote from another agency.

Format
Video call with screen share — or in person, in Vilnius
Good for
Choosing a stack · sanity-checking an estimate · auditing code you inherited · unblocking a stuck team · planning a migration
You get
A written summary the same day: what I’d do, in what order, and what I’d leave alone
Booking
Send the question by e-mail and you get two or three time slots back
Languages
English · Ukrainian · Russian
Book an hour
Oleksandr Antonenko laughing at something on his laptop screen during a call
On a call — your screen, your code, your questions
Oleksandr Antonenko going through a project on a laptop with a client at the same table
In the room — Vilnius, when it’s worth being there