Vitaly Kuzenkov

Vitaly Kuzenkov

Project and delivery lead

Services

  • AI agents & automationAgents that read the data, do the routine work and bring a person only what needs a decision.
  • Web & app developmentWeb apps, dashboards and iPhone apps, designed, built and launched.
  • Project deliveryA producer for your project: ten years running big client projects, now taking yours from first brief to launch.
  • Video & 3D websitesWebsites with film and 3D worlds in them, built in code.

Work

Beacon

A system that reads the job market every day and tells one person which roles are worth their time.

Own product · Own product, running daily, Australia · Design, build and run

Hiring data is spread across several public job sources, each with its own format, its own duplicates and its own noise. I built Beacon to collect roles from 5 public sources on a schedule, merge the duplicates into one record, and score every role against a written profile with a language model. For each strong match it prepares a tailored CV, a short covering note and a one page brief, then sends an alert to the phone. It runs around the clock on my own server, and every score comes with the reason in plain words. Result: about 400 roles read a day, narrowed to 10 to 15 worth a human look.

Stack: Python, FastAPI, PostgreSQL, Next.js, Claude Agent SDK, Telegram alerts

Result: 400 roles a day narrowed to 10 to 15 worth reading

Hands

A desktop agent that sees the screen and clicks and types like a person, only where it is allowed to.

Own product · Own product, in daily use, Australia · Design, build and run

Some work lives in applications with no API, so no integration can reach it. I built Hands, a desktop agent for the Mac that looks at the screen, decides where to act with Claude, and clicks and types like a person. You show it a task once and it repeats it, or you describe the task in plain words in a chat. Safety is the core of it: it acts only inside the applications and websites you allow, checks every step after it happens, records every run for review, and stops instantly on one key combination. Result: a 30 minute data entry routine finished in about 4 minutes, with nobody at the keyboard.

Stack: TypeScript, Node, Claude Agent SDK, Rust and Tauri for the native app, Chrome DevTools Protocol

Result: A 30 minute routine done in 4, every action recorded

Brief

A planning board where several AI coding agents take tickets, keep out of each other's way and close with proof.

Own product · Own product, in daily use, Australia · Design, build and run

When several AI coding agents work on one codebase at once, they edit the same files and forget what was decided yesterday. I built Brief, a board made for them. Every piece of work is a ticket with its goal, the proof that will count as done, and the files it may touch. An agent takes a ticket on a time limited lease, so two agents never edit the same files, and closes it with proof and a handover the next agent reads. Anything an agent notices outside its ticket waits for a person to accept or reject. Result: 8 agents working in parallel on one codebase, and 1,000 tickets closed with recorded proof.

Stack: Next.js, TypeScript, PostgreSQL, Model Context Protocol (MCP) tools, an HTTP API, self-hosted

Result: 8 agents in parallel, 1,000 tickets closed with proof

Home Cloud

A complete private cloud on one server I own, replacing rented services and hosting every product on this page.

Own infrastructure · Own infrastructure, in daily use, Australia · Design, build and run

I wanted my photos, files, passwords, mail and notes on hardware I control, and somewhere to run the products I build. So I built a private cloud on one dedicated server: photo library, file sync, password manager, media server, mailbox, video calls with recording and transcription, analytics, and the AI apps described on this page. Everything is private by default behind an encrypted network, public sites go out through a tunnel, every app is monitored, and the whole box is backed up every night and described as code, so it can be rebuilt. Result: 30 apps on one machine, about 8 paid subscriptions cancelled, and 99.9% uptime over the past year.

Stack: Linux, Docker, Dokploy, Caddy, Cloudflare Tunnel, Tailscale, Restic, Grafana, Loki, Uptime Kuma

Result: 30 apps on one server I own, backed up nightly

One place for every alert

A family of Telegram bots that carry alerts from servers, mail and business apps, and answer commands.

Telegram bots · Own infrastructure, Australia · Design, build and run

Alerts from servers, mailboxes, calendars and business apps were scattered across email and dashboards, and the important ones got buried. I built one always on service that runs 6 branded Telegram bots, each covering one area: server health, mail, reminders, market updates and more. Every feed can be switched on or off without a release, every message is logged, and repeats are grouped so one problem arrives as one message. The bots take commands too, so a check that used to need a laptop takes one tap on a phone. Result: 40 feeds in one place, and about 80% fewer alert messages after grouping.

Stack: Node and TypeScript with no outside dependencies, Telegram Bot API, PostgreSQL, Docker

Result: 40 feeds in one place, 80% fewer alert messages

Competitor prices, checked every few hours

A monitor that tracks competitor prices and stock, and suggests a price change within the owner's margin.

Price monitoring · Online retailer, consumer electronics, Australia · Design and build

The team checked competitor prices by hand in a spreadsheet, a few hundred products a week and always days late. I built a monitor that visits 12 competitor stores every 6 hours, matches each product to the client's own catalogue by model number and title, and records price, stock and promotions. A daily report flags undercuts and stock outs, and a simple rule set suggests a new price within the margin the owner chose. When a store changes its page layout the monitor raises an alert instead of quietly returning nothing. Result: 3,000 products tracked with no manual checking, and price moves caught the same day instead of the following week.

Stack: Python, Playwright, PostgreSQL, FastAPI dashboard, scheduled workers

Result: 3,000 products tracked, price moves caught the same day

Every new listing, once, in one place

Listings from many property sites merged into one clean feed and scored against the buyer's criteria.

Listing aggregation · Property investment firm, United Arab Emirates · Design and build

An investment team was following new listings across 6 property portals and agency sites, each with different fields and many copies of the same apartment. I built a collector that reads every source on a schedule, puts address, price, size and features into one format, and merges duplicates by matching addresses and comparing photos. Each listing is scored against the team's buying criteria, and the best new ones arrive in a morning email and on a shared board. Result: about 25,000 listings a month reduced to one clean feed, and the team saw new stock 2 days earlier than before.

Stack: Python, Playwright, PostgreSQL with PostGIS, OpenAI embeddings for duplicate matching, Next.js

Result: 25,000 listings a month in one feed, seen 2 days sooner

A lead list that stays fresh

Companies that fit the ideal customer, found in public data, verified, and delivered straight into the CRM.

Leads and contacts · B2B software company, United Kingdom · Design and build

The sales team was buying lead lists that went stale within weeks and bounced on the first send. I built a pipeline that starts from public business directories and company websites, finds firms that match the ideal customer profile, and reads each site for company size, services and published contact routes. Every email address is verified before it is saved, duplicates are merged, and a language model writes one line on why the company fits. Records land in the CRM with the source of every field kept. Result: 8,000 qualified companies a quarter, a bounce rate under 3%, and no bought list since.

Stack: Python, Playwright, PostgreSQL, Claude for classification, email verification service, HubSpot API

Result: 8,000 qualified companies a quarter, bounce rate under 3%

Answers from your own documents, with the source

A support assistant that answers from the help centre, cites the page, and hands over to a person when unsure.

Support agent · B2B software company, Germany · Design and build

The support team answered the same questions every day, and the answers already sat somewhere in 600 pages of help articles, release notes and internal guides. I built an assistant that searches that material, answers in the customer's own language, and cites the exact page it used. When the documents do not hold the answer it says so and passes the ticket to a person with a short summary, rather than guessing. New articles are added to its knowledge as soon as they are published. Result: about 45% of incoming questions answered without a person, and the first reply down from hours to under a minute.

Stack: Python, FastAPI, PostgreSQL with pgvector, Claude, Zendesk integration, a review screen for the team

Result: 45% of questions answered without a person

A coach in the pocket

An iPhone app that reads the user's health data and gives coaching grounded in it.

Mobile app · Fitness coaching business, Australia · Design, build and release

The coaching business sent generic plans by email, and clients dropped off because nobody saw how they were really doing. I built an iPhone app that reads each client's workouts, sleep and steps from Apple Health, logs meals from a photo, and gives coaching from an AI coach that only works from that person's real data. Coaches see every client on one screen and step in when the app flags a problem. The app updates over the air, so fixes reach phones the same day. Result: 300 active users, and 35% more clients still training after 3 months.

Stack: Next.js, Capacitor for iOS, a native HealthKit plugin in Swift, FastAPI, PostgreSQL, Claude

Result: 300 active users, 35% more still training at 3 months

From an idea to paying customers

A subscription product built from a founder's idea to its first paying customers.

SaaS · Founder led startup, booking software for fitness studios, United States · Design, build, launch and support

The founder had a clear idea, a list of interested studio owners and no software: booking, memberships and payments for small fitness studios. I turned it into a working product: a landing page, sign up, subscription billing, a booking calendar members use on their phones, an owner's dashboard, and an AI assistant that drafts class descriptions and member emails in the studio's own voice. I launched it in stages, starting with the 5 studios already waiting, and fixed what they found every week. Result: live in 10 weeks, and 40 paying studios in the first 3 months.

Stack: Next.js, TypeScript, Supabase, Stripe subscriptions, Resend email, Claude, Vercel

Result: Live in 10 weeks, 40 paying studios in 3 months

Paperwork read, checked and filed

Invoices and delivery notes read automatically, checked against orders, and posted to the accounts system.

Document processing · Freight and logistics company, Australia · Design and build

Invoices, delivery notes and customs forms arrived as PDFs and phone photos, and 2 people typed them into the accounting system. I built a pipeline that reads each document, pulls out the fields that matter (supplier, line items, totals, tax, references), checks them against the purchase orders and posts clean records to the accounts system. Anything uncertain or inconsistent goes to a review queue with the problem highlighted, so a person checks the exception instead of every page. Result: 1,500 documents a month processed, 85% of them with no human touch, and data entry cut from 2 days a week to a short daily review.

Stack: Python, FastAPI, Claude vision, PostgreSQL, Xero API, Next.js review screen

Result: 1,500 documents a month, 85% untouched by hand

An office AI assistant, without the data leaving

An AI assistant the whole team can use, running in the company's own account, with no data sent to an outside AI provider.

Private LLM · Law firm, Australia · Design, build and hand over

Staff wanted an AI assistant for drafting and summarising, but client documents could not be sent to an outside AI provider. I set up an open weight language model on a GPU server in the firm's own cloud account, in its own country, with a familiar chat interface behind the company sign in. Staff can upload a document and ask questions about it, and a set of prepared prompts covers the common jobs: summaries, first drafts, clause comparison. Nothing is stored outside the firm's account, and every conversation is logged for their own audit. Result: 60 staff using it every week, and 0 documents sent to a third party AI.

Stack: Open weight models (Llama, Qwen), vLLM, Open WebUI, Microsoft single sign on, Docker, a cloud GPU server

Result: 60 weekly users, no document leaves the firm

Automations off the per task bill

The team's automations moved onto their own n8n server, with retries, alerts and backups.

Workflow automation · Digital marketing agency, Netherlands · Design, migrate and hand over

The agency ran 45 automations on a hosted service that charged per task, and the bill grew every time a client was added. Failures were silent until a client noticed. I moved every workflow to a self-hosted n8n server in their own cloud account, rebuilt the fragile ones, and added what was missing: queued workers so a busy hour does not drop jobs, automatic retries, an alert in their chat the moment anything fails, nightly backups and version history for every workflow. Then I trained 2 people to build their own. Result: about 30,000 runs a month, and the monthly bill down from $900 to $40 of server cost.

Stack: n8n with queue mode, PostgreSQL, Redis, Docker, Caddy, Slack alerts, nightly backups

Result: 30,000 runs a month, bill from $900 to $40

Files, passwords and calls, brought home

A team moved from rented cloud services to its own server, with every file checked on arrival.

Off SaaS · Architecture studio, New Zealand · Plan, migrate and support

The studio paid for file storage, a password manager and video calls per person, and its project archive sat in another country. I set up a private server with file sync, shared calendars, a password manager and video calls, all behind their own sign in, then moved 2 TB of project files over a weekend. Every file was checked against the original after the move, folder permissions were carried across, and the old services stayed read only for a month as a safety net. Result: 25 people moved with no lost files, $1,100 a month of licences removed, and the data now stored in their own country.

Stack: Nextcloud, Nextcloud Talk, Vaultwarden, Docker, Caddy, Restic backups, rclone for the migration

Result: 25 people moved, $1,100 a month saved, no file lost

Scout

Being installed

Finds freelance jobs worth applying for, scores them and drafts the cover letter.

Roles and CV

  • 2014–2018, IT Project Manager, PicNet / Metallurgical Systems (NSW Health, Guide Dogs NSW)
  • 2018–2022, Senior Digital Producer, Imagination (Telstra Insight Ring, Mastercard Experience Centre, CBA Innovation Lab; A$150K–A$2M)
  • 2022–2024, Senior Agile Delivery Manager, Aura Labs (Fanatics, TAB)
  • 2024 to now, independent: AI agents, automation and apps (Top Rated on Upwork · 100% Job Success)
  • BSc IT, UTS, with Distinction

Reviews

Top Rated on Upwork · 100% Job Success

  • Vitaly did a great job. He created my video with high quality and in the expected time frame. I will recommend him to my business partners in Toronto.
    Upwork client, Create 90 seconds video for marketing of crypto website, September 2026
  • Vitali was very diligent and great to work with.
    Upwork client, Develop an AI Assistant for Customer Data Collection, Processing, and Reporting, September 2026
  • Vitaly is an expert at his craft. Excellent communication and quality outcomes. Highly recommended!
    Upwork client, Build AI Assistant (GPT-4 + Sheets/Notion) for Email & Client Success Tasks, June 2025
  • Working with Vitaly has been game changer for my business! He built an incredible automation in N8N that seamlessly creates custom reports for new leads and clients, saving me countless hours of manual work Will definitely work with him again.
    Upwork client, Develop an AI Assistant for Customer Data Collection, Processing, and Reporting, April 2025
  • Vitaly communicates clearly, works fast and prepares the deliverables meticulously. I had a great experience working with Vitaly on this contract.
    Upwork client, Lead Generation Workflow Development with n8n, April 2025
  • very patient and knowledgeable, I recommend him.
    Upwork client, n8n Flow Coaching Needed, April 2025
  • Vitaly built an excellent, scalable lead generation system in n8n, integrating Apollo, LinkedIn, and Google Maps. He explained everything clearly during our walkthrough, making sure I understood how to manage and adapt the workflow myself. Great work and highly recommended.
    Upwork client, advanced lead data scraping system in n8n for LinkedIn & Google Maps (with Apify integration), April 2025
  • He's been very helpful and gave me a lot of good tips on building my flow. He demonstrates his ability very well and i would love to work with him again in the near future
    Upwork client, n8n Expert Tutor Needed – Webhook to Perplexity + ChatGPT + Google Sheets, April 2025

Contact

Write to me: vitaly@vitalyroo.com

LinkedIn