Full-Stack & AI Engineer based in Abu Dhabi, with 5+ years building web apps and the AI layer underneath them. I work across the whole stack: React and Vue front ends, FastAPI and Django back ends, and the LLM and vision plumbing in between.
- 🔭 These days I build AI workflow tooling and LLM-driven products.
- 🧠 Comfortable from a multiplayer Yjs canvas down to a Postgres query plan.
- 🛠️ I like shipping small, sharp tools. Most of the repos below started as a problem I had on a Friday.
- 🌏 Open to senior full-stack, frontend, and AI roles across Southeast Asia.
- 📫 Reach me at joel.stephen.work@gmail.com.
Languages
Frontend
Backend
AI / ML
Data
Testing & Tooling
🛡️ ScamShield
On-device scam and phishing detection for Chromium and Firefox. A small ONNX model (onnxruntime-web) and DOM feature extraction classify pages right in the browser, so nothing a user reads ever leaves their machine. It catches fake login forms, crypto wallet and seed-phrase attacks, clipboard hijacks, tech-support scam loops, and brand impersonation, and re-scans as single-page apps navigate. Builds for Chrome, Edge, Brave, and Firefox 128+, with E2E and unit tests and a Python retraining pipeline. My take on "the model is the product."
MV3 · JavaScript · ONNX · on-device ML
| Project | What it does | Stack |
|---|---|---|
| doc_parser | A pip-installable CV/document parser that cleans text, splits sections, and pulls out names, emails, phones, and skills. Built to fill a gap in open-source resume parsing. | Python |
| ollama-chat | Streamlit web UI for chatting with local models over Ollama, with model pulling and management built in. | Python · Streamlit |
| personal-website | My portfolio with an AI chat agent that answers questions about my experience and projects. Live at joelstephen.vercel.app. | Nuxt · Vue · Groq |
Building full-stack products with an AI core. Always happy to talk shop.

