Vlad Rozhkov

Software Engineer

Amsterdam · r@vlodos.dev · github.com/VladRozhkov · linkedin.com/in/vladyslav-rozhkov · WA +31681265054 · TG +380632518884

Summary

I have been building software and caring about how people use it since my first engineering role in 2015. A decade at a field-service SaaS gave me ownership: systems complex enough to fail in non-obvious ways, a codebase I influenced from architecture to deployment, and the chance to shape how engineers joined and found their footing. I stayed because the problems kept getting harder. Now I want to be somewhere the product is still taking shape. The structural patterns from a ten-year-old codebase (single dispatchers with budget caps, idempotent handlers, structured-output parsers) are the same ones I reach for in LLM orchestration today. I write and build generative art. I want to join a team where the problems are still getting harder.

Experience

FieldPulse, Senior Software Engineer

July 2016 to present · full-time · remote

Field-service management platform for trade contractors. Joined when the engineering team was five people; it's thirty-plus now. 2,300 commits on the main webapp, 450 on the reporting frontend, 220 on the PDF rendering service.

2016–2018 Core Angular app from scratch: invoicing, estimating, scheduling, status workflows shipped to production
2019–2021 Domain expansion: 39 integrations, custom-field engine for 13 entity types, proposals and drag-and-drop scheduling
2022–2023 React 18 reporting frontend on AG Grid Enterprise; Python/FastAPI PDF service; shared component library
2024–now Commission system revamp; job-costing analysis; item options; quantity formula engine; asset transfer tracking; Angular 16 migration; multi-agent QA pipeline; natural-language reporting research

The webapp is a dense entity graph. A status change on an invoice travels through the customer view, commission calculation, reporting layer, and up to three external integrations before settling. Thirteen entity types carry user-defined custom fields; twelve models back the status-workflow configuration layer.

2024–2025 product work spanned both repos. I rebuilt the commission system end-to-end: new calculation rules in the webapp and a dedicated Commission report tracking invoice status, related job status, and assignee chains, with column aggregation and hyperlinks preserved under grouping. Job costing got a full UI pass: invoice cost chart redesign, job-analysis breakdowns, and dashboard widget support in reporting. Item options added a variant/option configurator for line items. A quantity formula variable engine lets companies define dynamic pricing formulas against configurable field values. On the reporting side: asset transfer tracking across multiple customers; a live "Current Time in Status" column that updates in-grid without refresh; a telephony integration (Engage) exposing outbound call and voice-tag data with saved reports; Forms reporting with dashboard widget support; Parent Customer hierarchy column across Estimate/Invoice/Job/Customer reports.

The Angular 16 migration ran as purpose-built tooling: a Python orchestrator with a React/Vite/Monaco UI, AST traversal, a priority-ordered rule engine with conflict resolution via difflib's SequenceMatcher, transactional rollback over an in-memory content log, and a GPT-4 reviewer returning ranked structured output per file. Hand-migration would have taken two-plus years; the tooling approach compressed it to four months.

I own the reporting frontend: React 18 on AG Grid Enterprise, embedded via iframe over postMessage. Twenty-five report types share one scheme factory; adding a report is one file. The same primitives drive pivoting, grouping, CSV/Excel export, saved reports, and dashboard widgets. Current research extends this into natural-language querying: plain-text input that resolves to data tables and charts against the existing report schema.

In the QA layer I designed a multi-agent test-generation pipeline running as a Claude Code skill: explore agent maps live application state, synthesize agent builds a test plan from a methodology corpus and a historical bug corpus, generate agent emits pytest/Playwright code under a Page Object Model contract, mutation gate rejects tests without teeth, reviewer agent closes the loop. Integrated with Jira, Linear, Confluence, and Allure TestOps.

Over ten years on a growing team, technical direction and people work happened through the work itself: architecture decisions, contributing to hiring, and getting new engineers oriented.

Light IT, Frontend Developer

February 2015 to January 2016 · on-site, Ukraine

My first full-time engineering role. Built internal tools and components for advertising and lead-generation platforms in a stack of JavaScript, Node, AngularJS, React, and Firebase.

Projects

A consumer AI subscription app: Expo/React Native client (30 screens, 15 Zustand stores), Node/TypeScript/Express/TypeORM/Postgres/Redis backend (24 entities), Next.js landing in four locales. Built with one junior developer I tech-led and Claude Code over seven months. The AI layer is mine end-to-end: a single dispatcher with Redis-persisted spend caps, a prompt registry across five languages, and a five-layer JSON-recovery cascade feeding parser errors back into the next model turn. Subscription side handles Apple v2 signed-payload webhooks with idempotency keys; concurrency tests at 1,000-way scale on wallet, payment, and achievement mutations. Submitted to the App Store, rejected under Apple's market-saturation guideline. Android port in progress.

A personal Telegram bot in TypeScript running a Claude tool-use loop with per-user markdown memory, local multilingual embeddings for semantic search over a knowledge base, ElevenLabs TTS, and media extraction. Deployed on a VPS with systemd and automated backups.

A breathing and meditation iOS app in SwiftUI: a multi-blob organic visualization system rendered via CAShapeLayer and Metal shaders, each blob following independent physics tied to the breathing phase; haptic and audio feedback in sync with the inhale/hold/exhale cycle; widget extension; unit tests covering session state and breathing pattern logic, UI tests for the full session flow.

An iPad PWA for sheet-music play-along: parses MusicXML via an OpenSheetMusicDisplay adapter, renders the score, and drives a playback cursor through a custom audio engine (AudioContext, RAF-based scheduler, measure-index lookup). An annotation pipeline layers configurable visual hints over the rendered score. Built in TypeScript/React/Vite with Zustand stores and Playwright e2e tests. Ships with a companion catalog browser for the sheet library.

Standalone technical builds: a spreadsheet-to-API service in Go and Next.js with an OpenAPI surface and documented latency budget; a document-to-knowledge-graph extractor using DeepSeek Vision behind a JSON-Schema gate with deterministic SVG rendering and a Postgres job queue on SELECT FOR UPDATE SKIP LOCKED; an image-to-cross-stitch-pattern generator with a full in-browser editor and Stripe checkout.

On the creative side: a visual novel in Ren'Py where the asset pipeline runs through ComfyUI, combining writing, generation, and engine work in one loop. My earliest substantial project, ten years older than the rest, was a React and Redux frontend for a browser MMO with normalizr-style state, websocket middleware, and around twenty independent game systems on one normalised store.

Tech

TypeScript and JavaScript day-to-day; Go and Swift on solo and AI-assisted work. Picked up Python, PHP, and Ruby over the years through production work rather than specialisation. On the frontend: React, React Native via Expo, Next.js, Angular through the recent generations, AG Grid Enterprise. On the server: Node with Express, TypeORM, Postgres, Redis, FastAPI. AI work around multi-agent orchestration, agentic workflows, the Anthropic and OpenAI SDKs, DeepSeek for chat and vision, with prompt registries, JSON-recovery cascades, spend-cap dispatchers, and structured-output review. Payments and auth around Stripe, Apple App Store Server v2, JWT, OAuth. Operations around Docker, Helm and kubectl, Cloudflare, DigitalOcean, Traefik. Testing in Jest, Vitest, Playwright, and pytest with Allure.

Keywords

Frontend TypeScript · JavaScript · React · React Native · Expo · Next.js · Angular · AG Grid Enterprise · Zustand · RxJS · styled-components · Tailwind · Three.js · Framer Motion AI / LLM Claude API · Anthropic SDK · OpenAI SDK · DeepSeek Vision · multi-agent orchestration · agentic workflows · tool-use loop · RAG · local embeddings · prompt engineering · structured output · JSON-recovery cascade · spend-cap dispatcher Backend / Infra Node.js · Express · TypeORM · PostgreSQL · Redis · FastAPI · Go · Docker · Kubernetes · Helm · AWS CodeBuild · Cloudflare · DigitalOcean · Traefik · Stripe · Apple IAP Testing Playwright · pytest · Allure TestOps · Jest · Vitest · Page Object Model · mutation testing

Code access

Personal repositories are private but I am happy to grant access on request. The day-job code is commercial and not shareable, but I am happy to go as deep as is legally allowed in conversation.