
Dương Thiệu Trần
duongthiu
in/tranduongthieu
Joined August 2026
ACTOR STATS
2 public Actors
3 total users
2 monthly users
>99% runs succeeded
Fullstack engineer. Python services, Next.js, Flutter, TypeScript.
Day job. I work across a business software suite: a Python backend, an AI assistant platform, an ERP frontend, a website-builder platform, and a Flutter mobile monorepo I designed and wrote alone. Most of my time goes into production LLM infrastructure — retrieval-augmented generation, embeddings and vector storage, and Model Context Protocol servers that expose internal APIs to AI agents.
What I build here. Scrapers that merge many sources into one schema, and actually resolve the parts everyone else leaves messy.
Fetching data is the easy half. The hard half is that six job boards will call the same field salary_min, minSalary, and salary: "OTE $25k–$35k" — in different currencies, over different pay periods, with one of them returning 0 instead of null when there is no salary at all. My output gives you one comparable number.
How I build. Four rules, and they show up in the data:
- Never guess. If a value can't be resolved with confidence, the field is left empty. A wrong number is worse than a missing one, because you can't see it fail.
- One dead source degrades coverage, never kills the run. Every source is isolated, and the log names what was skipped and why.
- Every row is validated before it reaches your dataset. A malformed row corrupts your pipeline silently, and you blame the scraper rather than the source.
- Deterministic parsing first. I don't run an LLM on every row and pass you the bill.
I'd rather ship an Actor that returns fewer rows you can trust than more rows you have to re-check.