
Denys Zaichenko
Forward Deployed Engineer
De fleste udviklere beder om en kravspecifikation. Jeg lærer, hvordan din virksomhed faktisk fungerer.
Hos én kunde gjorde det en proces på 2–3 uger til 2–3 minutter.
- EjendomsdokumenterEjendomscertifikater på 2–3 minutter for EUR 99, ikke på 2–3 uger for EUR 200–300.Se casen
- RejsebureauKonkurrenternes priser på pakkerejser, indsamlet omkring dobbelt så hurtigt.Se casen
- Radio og tvOperatørerne får alarm om lydfejl, i samme øjeblik de opstår. Ingen manuel lyttekontrol mere.Se casen
Seneste aktivitet
- bidrag
- 4.724
- pr. arbejdsdag
- 20
- Senest leveret
- 14. okt.
4.724 bidrag det seneste år, 20 pr. arbejdsdag
Vælg en dag for at se, hvad der blev leveret.
25. sep. · 60 bidrag
- Lydovervågning til broadcast: Standardprofiler for tærskelværdier til hver ny tenant
Nyligt leveret
- Leeloo-formular omdirigerer til Telegram-bot efter afsendelse
- Bounce-post fundet i indbakken, kæder kører uden ventetid
- Genkontroller bounces under en kørsel og stop ved grænsen
Sådan arbejder jeg
Fire regler, jeg følger på hvert projekt.
Lær forretningen at kende først
Jeg starter med, hvordan arbejdet reelt udføres, og hvad en fejl koster, ikke med opgavebeskrivelsen. Det viser mig, hvad der skal være pålideligt, og hvad der kan forblive enkelt.
Find den reelle flaskehals
De fleste langsomme processer har én flaskehals. Jeg udpeger den, før jeg skriver kode, så løsningen retter årsagen og ikke symptomerne.
Afvej mulighederne åbent
Ved hver vigtig beslutning ser du, hvad jeg valgte, hvad jeg afviste, og hvad hvert valg koster. Du kan gøre indsigelse, før noget bygges, ikke bagefter.
Lever noget, du kan kontrollere
Hvert projekt slutter med et bevis, du selv kan kontrollere: et tal, du kan måle, eller en test, der kører ved hver udrulning.
Kundeprojekter
Ejendomsdokumenttjeneste til boligsalg
Ejendomscertifikater på 2–3 minutter i stedet for 2–3 uger.
Før
Sælgere betalte EUR 200–300 for hvert certifikat og ventede 2–3 uger, mens nogen indsamlede papirerne manuelt.
Efter
2–3 min
pr. certifikat, i stedet for 2–3 uger
EUR 99
pr. certifikat, i stedet for EUR 200–300
95%
af dokumenterne gennemført på den primære kendte portal
Sådan fungerer det
Hvad jeg har bygget
Tjenesten logger ind på ejendomsadministratorernes konti, indsamler data og bygger selv certifikatet. Fem kontroller kører på hvert dokument før frigivelse; ukendte portaler går til vision-AI.
- 1Menneske:Kunde
Bestiller et ejendomscertifikat.
- 2System:Script
Kendt portal: logger ind på kontoen og indsamler data.
System:Vision-AIUkendt portal: læser siderne.
- 3System:Tjeneste
Bygger certifikatet.
- 4System:Tjeneste
Kører fem kontroller og sender derefter certifikatet til kunden.
Gælder altid
- Et mislykket trin prøver igen af sig selv.
- Operatøren ser hvert job i realtid.
- Operatørapp
- Next.js
- React
- Tailwind CSS
- Radix UI
- Zod
- Data og jobs
- Supabase
- PostgreSQL
- Automatisering og AI
- Python
- Playwright
- Crawl4AI
- Docling
- Instructor
- Gemini
- Levering
- Docker
- Vitest
- EU-hosted server
Lydkvalitetskontrol ved livetransmission for et team inden for mediedrift
Lydfejl giver nu alarm i samme øjeblik, de opstår; kontrollen var før manuel.
Før
Medarbejdere tjekkede kommentatorlyden manuelt, så en overset fejl kunne nå seerne.
Efter
1 time
af målinger gemt på maskinen på stedet under et netværksudfald; hændelser i 24 timer
Sådan fungerer det
Hvad jeg har bygget
En lokal agent måler hver kanal og sender målingerne til en skytjeneste. Operatørerne får en webkonsol med projekter, tærskler og alarmer.
- 1System:Arena
Sender kommentatorlyd på mange kanaler.
- 2System:Lokal agent
Måler hver kanal efter EBU-lydstyrkestandarder.
- 3System:Lokal agent
Gemmer målinger på disk og sender dem igen efter et netværksudfald.
- 4System:Skytjeneste
Udløser en alarm, når en fejl har varet længe nok.
- 5Menneske:Operatør
Ser alarmer og hændelser i webkonsollen.
Gælder altid
- Skyen ignorerer dublerede målinger, så en gentagelse aldrig tæller to gange.
- Lokal agent
- Python
- EBU R128 loudness
- ONNX Runtime
- PyTorch
- SpeechBrain
- Windows build
- Sky-API
- FastAPI
- SQLAlchemy
- Alembic
- PDF reports
- Data
- TimescaleDB
- PostgreSQL 17
- Operatørkonsol
- Next.js
- React
- TanStack Query
- WebSockets
- uPlot
- Zustand
- Kvalitet og levering
- Docker Compose
- GitHub Actions
- uv
- Ruff
- mypy
- pytest
- Playwright
- axe
Prisbenchmarking af pakkerejser for et rejsebureau, EU-markedet
Konkurrenternes priser på pakkerejser, indsamlet efter plan af jobs, der kommer sig efter udfald.
Før
At sammenligne priser på pakkerejser med konkurrenterne manuelt kunne ikke skaleres, og indsamlingsjobs hang efter hvert udfald.
Efter
~5×
datoer indsamlet i minuttet på ét site efter at have droppet browseren (8 → 43)
Sådan fungerer det
Hvad jeg har bygget
En planlægger kører benchmarkjobs på en browserpulje med roterende proxyer. Medarbejdere bruger en adminkonsol, og kundens AI-agent kan også starte benchmarks.
- 1Menneske:Medarbejdere
Vælger en pakkerejse at sammenligne: afrejseby, dato, opholdets længde, belægning.
- 2System:Planlægger
Starter benchmarkjobbet.
- 3System:Browsere
Indsamler konkurrenternes priser bag roterende proxyer.
System:HTTP-klientLæser den ene kilde, der ikke kræver en browser.
- 4Menneske:Medarbejdere
Ser prissammenligningen med konkurrenterne i adminkonsollen.
Gælder altid
- Efter et udfald fylder browserpuljen sig selv op igen.
- Kundens AI-agent kan også starte et benchmark.
- Indsamling
- Python
- Camoufox
- Playwright
- curl_cffi
- Rotating proxies
- Apify
- API og data
- FastAPI
- Supabase
- PostgreSQL
- Adminkonsoller
- Next.js
- React
- Vite
- TanStack Query
- Chart.js
- AI-agentforbindelse
- MCP server
- Kvalitet
- GitHub Actions
- gitleaks
- Vitest
- pytest
Dokumenter, formularer og oversigter til byggeteams
Fra Google Sheets og Docs til én platform, som hele byggepladsens team arbejder i.
Før
Dokumenter, formularer og pladsrapporter lå i Google Sheets og Docs. Opdateringer fra pladsen nåede kontoret for sent.
Efter
Dokumenter, formularer, oversigter og rapporter kører på én platform med roller. Kunder følger fremdriften i deres portal.
Sådan fungerer det
Hvad jeg har bygget
Én platform med roller håndhævet af databaseregler, foto- og formularrapporter fra pladsen, indsendelser fra formular til PDF, invitationslinks, totrinslogin, en delingsportal til kunder, en revisionslog og fakturering.
- 1Menneske:Ejer
Opretter et projekt med sektioner, oversigter og et team.
- 2Menneske:Projektleder
Bygger en formular eller vælger en skabelon og sender den til pladsen.
- 3Menneske:Håndværkerhold
Udfylder den på pladsen med fotos og en underskrift. Indtastede svar overlever et tabt signal.
- 4Menneske:Projektleder
Godkender den eller sender den tilbage.
System:PlatformOmdanner den godkendte formular til en PDF og opdaterer oversigten.
- 5System:Platform
Gemmer dokumenter i versionerede mapper og eksporterer rapporter til PDF og Excel.
Menneske:KundeFølger mapper og oversigter i sin egen portal.
Gælder altid
- Hver virksomhed ser kun sine egne data.
- Hver rolle ser kun det, den skal. Databasen håndhæver det.
- Fillinks udløber, så et videresendt link holder op med at virke.
- Hver ændring går i revisionsloggen.
- App
- Next.js
- React
- Tailwind CSS
- Radix UI
- Zod
- Data og sikkerhed
- Supabase
- PostgreSQL row-level security
- TOTP two-factor
- Signed file links
- Dokumenter
- React-PDF
- Resumable uploads (tus)
- ExcelJS
- E-signatures
- Fakturering og e-mail
- Stripe
- Resend
- Levering
- Vercel
- GitHub Actions
- Vitest
- Playwright
Tidsregistrering for projekter og medarbejdere i et revisionsfirma
Tidsregistrering, hvor databasen, ikke brugerfladen, afgør, hvem der ser hvad.
Før
Kunder, projekter og timer lå ét sted, hvor alle i firmaet kunne se og ændre alt.
Efter
87
tilladelsesfelter bevist mod den rigtige database for hver rolle; 30 gjorde intet og blev skjult
Sådan fungerer det
Hvad jeg har bygget
En single-page webapp på administreret Postgres. Hver adgangsregel ligger i databasen og bevises af en automatisk rollematrix før hver udrulning.
- 1Menneske:Ejer
Opretter roller med afkrydsningsfelter pr. område (kunder, projekter, tid, rapporter) for visning, oprettelse, redigering og sletning.
- 2Menneske:Medarbejder
Registrerer timer på en kunde, et projekt og en opgave eller booker fri.
System:WebappMinder enhver, hvis tidsregistrering stadig er tom, inden fristen.
- 3Menneske:Projektadministrator
Godkender eller afviser ugens tidsregistrering for sit eget projektteam.
- 4System:Database
Viser hver person kun det, rollen tillader: medarbejdere ser deres egne timer, projektadministratorer deres team, ejere alle kunder.
- 5Menneske:Ejer
Læser timer pr. kunde, projekt og person i dashboards og rapporter.
Gælder altid
- Før kunne alle i firmaet åbne alle kunder og alles timer. Nu afviser databasen alt, hvad en rolle ikke må, selv hvis brugerfladen beder om det.
- Før hvert push testes hver rolle mod en isoleret kopi af databasen.
- App
- React
- Vite
- TanStack Router
- TanStack Query
- shadcn/ui
- Chart.js
- Data og sikkerhed
- Supabase
- PostgreSQL row-level security
- Edge Functions (Deno)
- Hosting
- Cloudflare
- Kvalitet
- GitHub Actions
- Role-matrix tests
- Vitest
- Property-based tests
- Accessibility tests
Priser og vilkår
- Fakturering
- Fast månedligt abonnement
- Pause eller opsigelse
- Når som helst
- Refusion
- Fuld refusion, hvis du ikke er tilfreds den første uge
- Henvendelser
- Via Slack eller Telegram
- Svartid
- Inden for én arbejdsdag, Lissabon-tid
Gennemsnit 5,0 fra 5 Upwork-anmeldelser
Se alle anmeldelser på UpworkOfte stillede spørgsmål
Bruger du AI til at skrive min kode?
Ja. AI-værktøjer fremskynder de rutinemæssige dele af arbejdet. Jeg er seniorudvikler med over 8 års erfaring og certificeret Claude Code-bruger. Vurderingerne, arkitekturbeslutningerne og kvalitetskontrollerne er mine.
Hvordan kommunikerer vi?
Vi arbejder asynkront via Slack eller Telegram. Builder-planen inkluderer et ugentligt synkmøde på 30 minutter og Partner-planen et månedligt strategimøde. Jeg arbejder efter Lissabon-tid (WET/WEST, UTC+0/+1), som overlapper live med Storbritannien, Irland og det meste af Europa. Synkmøder for USA's østkyst ligger om formiddagen.
Hvad hvis min kodebase er kompleks eller ældre?
Passer bedst til: nye projekter eller videreudvikling af det, vi har bygget sammen. Har du en eksisterende kodebase, starter vi med et ugelangt kodeaudit for at bekræfte, at vi kan arbejde sikkert i den. Derefter beslutter vi sammen, om vi fortsætter.
Hvad hvis jeg ikke er tilfreds?
Er du ikke tilfreds inden for den første uge, refunderer jeg hele beløbet. Ingen spørgsmål.
Kan jeg sætte mit abonnement på pause?
Ja. Sæt på pause når som helst med én besked. Der er ingen gebyrer.
Hvad er en Forward Deployed Engineer?
En Forward Deployed Engineer arbejder direkte sammen med kundens team og bygger og deployer software til teamets egne problemer i stedet for at bygge et generisk produkt på afstand. Sådan arbejder jeg. Jeg kommer ind i din Slack eller Telegram, tager imod opgaver fra dig og deployer det, jeg bygger. Titler som AI-ingeniør eller full-stack-udvikler beskriver mine kompetencer. Forward deployed beskriver, hvordan jeg arbejder sammen med dig.
Hvad tæller som en opgave?
En opgave er en klart afgrænset leverance, for eksempel en funktion, en fejlrettelse, en integration eller en side. Hvis noget er stort, deler vi det først op i mindre opgaver. Du ved, hvad du får, før jeg går i gang.
Kontakt
Fortæl mig, hvad du har brug for at få bygget. Jeg svarer inden for én arbejdsdag, Lissabon-tid.
Blog
Noter om AI-agenter, automatisering og webudvikling, hentet fra rigtige projekter.