
Denys Zaichenko
Forward Deployed Engineer
Most developers ask for a spec. I learn how your business actually works.
For one client, that turned a 2–3 week process into 2–3 minutes.
- Real-estate documentsProperty certificates in 2–3 minutes for EUR 99, not 2–3 weeks for EUR 200–300.See the case
- Travel agencyCompetitor package prices, collected about twice as fast.See the case
- Broadcast mediaAudio faults alert operators the moment they happen. No more listening by hand.See the case
Recent activity
- contributions
- 4,724
- per working day
- 20
- Last shipped
- Nov 8
4,724 contributions in the last year, 20 per working day
Select a day to see what shipped.
Sep 25 · 60 contributions
- Broadcast audio monitoring: Standard threshold profiles for every new tenant
Recently shipped
- A Google body that stalls after the header also times out cleanly
- A Google timeout reports 'Google did not answer' instead of a 500
- Log unreadable DR version tokens instead of swallowing the error
How I work
Four rules I follow on every build.
Learn the business first
I start with how the work is really done and what a failure costs, not with the ticket. That tells me what has to be reliable and what can stay simple.
Find the real constraint
Most slow processes have one bottleneck. I name it before I write code, so the build fixes the cause, not the symptoms.
Weigh the options out loud
For every key decision you see what I chose, what I rejected and what each choice costs. You can push back before anything is built, not after.
Ship something you can check
Every build ends with proof you can check yourself: a number you can measure, or a test that runs on every deploy.
- AI Agent Development Services & Chatbots
- AI Integration for Existing Products
- MVP Development Services for Founders
- SaaS & Web App Development Services
- Project Rescue & Vibe Code Cleanup
- Workflow Automation & Integrations
- Internal Tools & Dashboards
- Landing Page Design & Development
- Web Scraping Services & Data Pipelines
- Vibe-Coded App Audit: Lovable Code, Supabase Security
- AI Consultant for Small Business
Client work
Real-estate document service for property sales
Property certificates in 2–3 minutes instead of 2–3 weeks.
Before
Sellers paid EUR 200–300 for each certificate and waited 2–3 weeks while someone collected the papers by hand.
After
2–3 min
per certificate, instead of 2–3 weeks
EUR 99
per certificate, instead of EUR 200–300
95%
of documents completed on the main known portal
How it works
What I built
The service logs into the property managers' accounts, collects the data and builds the certificate itself. Five checks run on every document before release; unknown portals go to vision AI.
- 1Person:Customer
Orders a property certificate.
- 2Software:Script
Known portal: logs into the account and collects the data.
Software:Vision AIUnknown portal: reads the pages.
- 3Software:Service
Builds the certificate.
- 4Software:Service
Runs five checks, then sends the certificate to the customer.
Always on
- A failed step retries on its own.
- The operator sees every job in real time.
- Operator app
- Next.js
- React
- Tailwind CSS
- Radix UI
- Zod
- Data and jobs
- Supabase
- PostgreSQL
- Automation and AI
- Python
- Playwright
- Crawl4AI
- Docling
- Instructor
- Gemini
- Delivery
- Docker
- Vitest
- EU-hosted server
Live-broadcast audio quality control for a media operations team
Audio faults now alert the moment they happen; checking used to be manual.
Before
Staff checked commentary audio by hand, so a missed fault could reach viewers.
After
1 hour
of readings kept on the site machine during a network outage; events for 24 hours
How it works
What I built
A site agent measures each channel and sends readings to a cloud service. Operators get a web console with projects, thresholds and alerts.
- 1Software:Venue
Sends commentary audio on many channels.
- 2Software:Site agent
Measures every channel to EBU loudness standards.
- 3Software:Site agent
Saves readings on disk and re-sends them after a network drop.
- 4Software:Cloud service
Raises an alert once a fault lasts long enough.
- 5Person:Operator
Sees alerts and incidents in the web console.
Always on
- The cloud ignores duplicate readings, so a replay never counts twice.
- Site agent
- Python
- EBU R128 loudness
- ONNX Runtime
- PyTorch
- SpeechBrain
- Windows build
- Cloud API
- FastAPI
- SQLAlchemy
- Alembic
- PDF reports
- Data
- TimescaleDB
- PostgreSQL 17
- Operator console
- Next.js
- React
- TanStack Query
- WebSockets
- uPlot
- Zustand
- Quality and delivery
- Docker Compose
- GitHub Actions
- uv
- Ruff
- mypy
- pytest
- Playwright
- axe
Package-holiday price benchmarking for a travel agency, EU market
Competitor package prices, collected on schedule by jobs that recover from outages.
Before
Comparing package prices with competitors by hand did not scale, and collection jobs hung after every outage.
After
~5×
dates collected per minute on one site after dropping the browser (8 → 43)
How it works
What I built
A scheduler runs benchmark jobs on a browser pool with rotating proxies. Staff use an admin console, and the client's AI agent can start benchmarks too.
- 1Person:Staff
Pick a package to compare: departure city, date, length of stay, occupancy.
- 2Software:Scheduler
Starts the benchmark job.
- 3Software:Browsers
Collect competitor prices behind rotating proxies.
Software:HTTP clientReads the one source that needs no browser.
- 4Person:Staff
See the price comparison in the admin console.
Always on
- After an outage the browser pool refills itself.
- The client's AI agent can start a benchmark too.
- Collection
- Python
- Camoufox
- Playwright
- curl_cffi
- Rotating proxies
- Apify
- API and data
- FastAPI
- Supabase
- PostgreSQL
- Admin consoles
- Next.js
- React
- Vite
- TanStack Query
- Chart.js
- AI agent link
- MCP server
- Quality
- GitHub Actions
- gitleaks
- Vitest
- pytest
Documents, forms and trackers for construction teams
From Google Sheets and Docs to one platform the whole site team works in.
Before
Documents, forms and site reports lived in Google Sheets and Docs. Site updates reached the office late.
After
Documents, forms, trackers and reports run on one platform with roles. Clients follow progress in their portal.
How it works
What I built
One platform with roles enforced by database rules, photo and form reports from the site, form-to-PDF submissions, invite links, two-factor sign-in, a client sharing portal, an audit log and billing.
- 1Person:Owner
Sets up a project with sections, trackers and a team.
- 2Person:Project manager
Builds a form or picks a template, then sends it to the site.
- 3Person:Field crew
Fills it on site with photos and a signature. Typed answers survive a lost signal.
- 4Person:Project manager
Approves it or sends it back.
Software:PlatformTurns the approved form into a PDF and updates the tracker.
- 5Software:Platform
Keeps documents in versioned folders and exports reports to PDF and Excel.
Person:ClientFollows folders and trackers in their own portal.
Always on
- Each company sees only its own data.
- Each role sees only what it should. The database enforces it.
- File links expire, so a forwarded link stops working.
- Every change goes to the audit log.
- App
- Next.js
- React
- Tailwind CSS
- Radix UI
- Zod
- Data and security
- Supabase
- PostgreSQL row-level security
- TOTP two-factor
- Signed file links
- Documents
- React-PDF
- Resumable uploads (tus)
- ExcelJS
- E-signatures
- Billing and email
- Stripe
- Resend
- Delivery
- Vercel
- GitHub Actions
- Vitest
- Playwright
Project and staff time tracking for an audit firm
Time tracking where the database, not the screen, decides who sees what.
Before
Clients, projects and hours lived in one place where everyone in the firm could see and change everything.
After
87
permission boxes proven against the real database for every role; 30 did nothing and were hidden
How it works
What I built
A single-page web app on managed Postgres. Every access rule lives in the database and is proven by an automated role matrix before each deploy.
- 1Person:Owner
Builds roles with checkboxes per area (clients, projects, time, reports) for view, create, edit and delete.
- 2Person:Staff member
Logs hours against a client, project and task, or books time off.
Software:Web appReminds anyone whose timesheet is still empty before the deadline.
- 3Person:Project admin
Approves or rejects the week's timesheet for their own project team.
- 4Software:Database
Shows each person only what their role allows: staff see their own hours, project admins their team, owners every client.
- 5Person:Owner
Reads hours by client, project and person on the dashboards and reports.
Always on
- Before, everyone in the firm could open every client and everyone's hours. Now the database refuses anything a role does not allow, even if a screen asks for it.
- Before each push, every role is tested against an isolated copy of the database.
- App
- React
- Vite
- TanStack Router
- TanStack Query
- shadcn/ui
- Chart.js
- Data and security
- Supabase
- PostgreSQL row-level security
- Edge Functions (Deno)
- Hosting
- Cloudflare
- Quality
- GitHub Actions
- Role-matrix tests
- Vitest
- Property-based tests
- Accessibility tests
Pricing and terms
- Billing
- Flat monthly subscription
- Pause or cancel
- Any time
- Refund
- Full refund if you are not satisfied in the first week
- Requests
- Through Slack or Telegram
- Reply time
- Within one working day, Lisbon time
5.0 from 6 Upwork reviews
See all reviews on UpworkFrequently asked questions
Do you use AI to write my code?
Yes. AI tools speed up the routine parts of the work. I'm a senior developer with 8+ years of experience and a certified Claude Code user. The judgment, architecture decisions and quality checks are mine.
How do we communicate?
We work asynchronously through Slack or Telegram. The Builder plan includes a weekly 30-minute sync call and the Partner plan a monthly strategy call. I work on Lisbon time (WET/WEST, UTC+0/+1), which overlaps live with the UK, Ireland and most of Europe. Sync calls for the US East Coast are in the morning.
What if my codebase is complex or legacy?
Best fit: new projects, or extending something we built together. If you have an existing codebase, we start with a one-week code audit to confirm we can work on it safely. Then we decide together whether to continue.
What if I'm not happy?
If you're not satisfied within the first week, I'll refund you in full. No questions asked.
Can I pause my subscription?
Yes. Pause anytime with one message. There are no penalties.
What is a Forward Deployed Engineer?
A Forward Deployed Engineer works directly with a customer's team and builds and deploys software for that team's own problems, instead of building a generic product from a distance. I work this way. I join your Slack or Telegram, take tasks from you and deploy what I build. Titles such as AI engineer or full-stack developer describe my skills. Forward deployed describes how I work with you.
What counts as a task?
A task is one clearly scoped deliverable, such as a feature, a bug fix, an integration or a page. If something is large, we split it into smaller tasks first. You know what you will get before I start.
Contact
Tell me what you need built. I reply within one working day, Lisbon time.
Blog
Notes on AI agents, automation and web development, drawn from real projects.
