Skip to content
rondahan.

Open to full-stack roles

Ron Dahan

Keep scrolling.

and one more, plus the person who built them

Full-Stack Engineer.

I build systems that survive contact with the real world - flaky sites, noisy video, unreliable APIs.

Selected work

05

012026

ScrapeGoat

Live price comparison across four retailers that actively block scrapers

Type a product name and get the price, rating, and review count from Amazon, Best Buy, Walmart, and Newegg side by side, pulled live rather than from a stale database.

fallback extraction stages
4

fallback extraction stages

retailers supported
4

retailers supported

slowest scrape, run as a background job
90s

slowest scrape, run as a background job

PythonFastAPIPlaywrightNext.js

See the full project

Repo (opens in a new tab)
ScrapeGoat logo
022026

Table Tennis Analyzer

Turns broadcast match footage into player tracking, score charts, and heatmaps

Give it a table tennis video and it returns an annotated replay, a score chart read straight off the scoreboard, and a position heatmap, with no manual tagging.

models (1 custom-trained)
2

models (1 custom-trained)

outputs per match: video, chart, heatmap
3

outputs per match: video, chart, heatmap

manual tagging required
0

manual tagging required

Computer VisionYOLOv8OCRReact

See the full project

Repo (opens in a new tab)

Annotated stills
coming soon

032025 - 2026

Icy Tower - Game & Neuroevolution AI

A physics platformer written from scratch, then a network evolved to play it

A browser platformer built with no game engine, plus a neural network taught to climb it by a genetic algorithm, reaching floor 179 after 2,000 generations.

floors reached by the AI
179

floors reached by the AI

generations trained
2,000

generations trained

game engines or ML libraries used
0

game engines or ML libraries used

Vanilla JSCanvasMediaPipeGenetic Algorithms
042026Work in progress

PlantAI

Photograph a sick houseplant, get a species ID, a diagnosis, and what to do about it

A React Native app that chains two vision models, one to identify the plant and one to diagnose it, then returns a treatment plan.

chained vision models
2

chained vision models

external APIs orchestrated
5

external APIs orchestrated

surfaces sharing one core
4

surfaces sharing one core

React NativeExpoTypeScriptLLM pipelines

See the full project

Repo (opens in a new tab)
A monstera with damaged, yellowing leaves, the kind of photo the app diagnoses

About

I'm a software engineer who likes the messy half of the problem: the retailer that blocks your scraper, the video with a scoreboard you have to read with OCR, the API that times out before your job finishes.

Most of what's here started as a question I couldn't answer by reading. Can a genetic algorithm learn to play a platformer? Can you get a usable price comparison out of four websites that don't want to give you one? Each one turned into something that runs.

CVTBA

Toolkit

Languages
TypeScript · JavaScript · Python · Java · C · C# · SQL · Bash · HTML · CSS
Frontend
React · Next.js · React Native / Expo · Tailwind CSS · HTML5 Canvas
Backend & data
FastAPI · Node.js · REST APIs · Job queues · PostgreSQL · Supabase · Firebase
ML & computer vision
YOLOv8 · OpenCV · Keras / JAX · EasyOCR · MediaPipe · Genetic algorithms
Testing & QA
Manual testing · Quality assurance · Issue documentation · Playwright
Fundamentals
Algorithms · Data structures · Object-oriented programming · Operating systems · Recursion
Tooling
Git & GitHub · Linux CLI · VS Code · IntelliJ · Xcode · Gradle · ESLint / Prettier · n8n · Vercel
AI workflow
Claude Code · Cursor · Google AI Studio · NotebookLM · AI prompting
Spoken languages
English (fluent) · Hebrew (fluent)

Get in touch

I'm looking for full-stack engineering roles. If something here is relevant to what you're building, I'd like to hear about it.