_
I build, fix and secure web products — and put LLMs to work inside them.
I'm a full-stack engineer with a data-science background. I ship production code for live e-commerce businesses — payments, checkout, admin tools, security, deployment — and I build LLM-powered products end to end, from the prompt and evaluation layer down to the GPU the model runs on.
Three things I've shipped.
Two live businesses and one product of my own. Each one below says what was wrong, what I built and what changed — with numbers taken from the repositories, not rounded up.
Payments, checkout and delivery pricing for a live online store.
Ongoing engineering on a store that takes real orders every day: every change is tested, reviewed as a pull request and verified in production after release.
Orders could be lost when a payment succeeded but the customer never returned to the site. Delivery was priced the same everywhere, the checkout confused shoppers, and the admin dashboard had stopped reflecting new orders.
- Payment recovery: checkout attempts saved before payment, Stripe and PayPal webhooks, and a background check that completes orders the browser never confirmed.
- Postcode-based delivery pricing with zones, parcel and pallet rates, free-delivery thresholds and a quote route for areas that can't be priced online.
- A postcode-first checkout, a simplified basket, and redesigned order and dispatch emails — one per parcel, with courier tracking.
- Admin fixes: live dashboard figures, paging for orders and customers, role-based user management.
- ✓Paid orders are recovered automatically when a shopper closes the tab mid-payment.
- ✓Delivery charges match the retailer's real courier costs by postcode.
- ✓A unit-and-end-to-end test suite and a secret scan run before every release.
Security audit and hardening of a store that takes card payments.
I read the whole system — storefront, WordPress back end, web server and containers — found what an attacker would find, then fixed it in small, reversible steps.
The store had been built quickly and never reviewed. It was about to be marketed more widely, and nobody could say with confidence whether prices, customer details or backups were properly protected.
- A full audit from source code, server configuration and database, with every finding ranked by risk and written up for the owner in plain language.
- Fixes for the critical issues: server-side price validation at checkout, private customer enquiries, review sanitising, and a framework upgrade to clear known advisories.
- Server hardening: login rate limiting, blocked access to backup and log files, credential rotation, least-privilege admin roles.
- A CI/CD pipeline that builds a container image, deploys it over a locked-down SSH key, and can be rolled back.
- ✓All code-side critical findings fixed and live in production.
- ✓No cardholder data was ever exposed — confirmed in the audit.
- ✓Every change recorded in a runbook the owner can follow and audit.
An LLM product built end to end — and served from my own GPU.
An adaptive quiz platform where a language model writes the questions, a second pass reviews them, and a grader marks free-text answers. I built the app, the AI pipeline and the model serving.
LLM-generated questions are fast but unreliable: ambiguous wording, wrong answer keys, repeats. A learning product can't ship those, and paying a hosted API for every question doesn't scale.
- A generate → critique → accept pipeline: a critic model scores every question and rejects weak ones, with a verified question bank so learners rarely wait on generation.
- Free-text grading, spaced repetition, a concept graph and embedding-based topic matching to schedule what each learner should see next.
- Self-hosted inference: an open-weight model served with vLLM on an NVIDIA DGX under Kubernetes, behind an OpenAI-compatible API.
- Production plumbing: authentication, rate limiting, transactional migrations, encrypted backup and restore, a deployment runbook.
- ✓Runs without any paid model API — inference cost is the hardware.
- ✓Piloted with 300 synthetic learner accounts on roughly 17 GB of GPU memory.
- ✓The failure mode is safe: if no question passes review, none is shown.
From the database to the model.
I take on fixed-scope projects and ongoing contract work. Small first jobs are welcome — a broken checkout, a security review, one AI feature — and most long engagements start that way.
Full-stack product engineering
New features and fixes on web apps that are already live and earning. I work in pull requests with tests, so nothing reaches your customers unreviewed.
- →Checkout & payments (Stripe, PayPal)
- →Admin dashboards & internal tools
- →APIs, databases, migrations
- →CI/CD and zero-downtime releases
AI & LLM integration
LLM features that hold up with real users: grounded in your data, evaluated before release, and with costs you can predict.
- →Chat & assistants over your documents (RAG)
- →LLM pipelines with quality checks
- →Self-hosted open-weight models
- →Classical ML: prediction, classification, NLP
Security review & hardening
A read-through of your code and server by someone who will also fix what they find — ranked by risk, explained in plain language.
- →Code and configuration audit
- →Payment-flow and access-control checks
- →Credential rotation & server lockdown
- →A runbook your team can follow
Not sure which of these your problem is? Send me a paragraph about it and I'll tell you how I'd approach it.
Start a project →Not screenshots. Running models.
Every card below opens a console — and the model actually runs, right here in your browser, on WebAssembly. No API keys, no queue, no server. Models I trained, exported and shipped to the edge.
stack behind the lab: onnxruntime-web · transformers.rs-generated onnx · next.js · zero backend
A fraud study, told straight.
One hundred seventy SEC filings. Eight models. The aim: does language-model intuition actually find financial-statement fraud better than classical ML? The answer is a story about size, asymmetry and honesty — told here with the real numbers, ranked.
Across 170 SEC companies (50/50 fraud / non-fraud), fraudulent filings averaged ~257,810 words against ~62,937 for clean ones. Fraud papers their tracks: more caveats, more qualifiers, more subsequent-event paragraphs. Length was a baseline any model could capitalise on — which made beating it a fair test.
A fine-tuned GPT-2 — the model the market was betting on — scored 44.12% accuracy, below coin-flip, and the Hierarchical Attention Network landed at 47.06%. Both drowned in 257k-word filings: attention heads saturate, gradients overfit the fraud-heavy length signature, and small-data regimes (170 firms) punish them for it.
Random Forest over engineered filing features hit 94.12% accuracy and F1 — 15 points clear. Depth beats novelty when features encode domain priors: leverage shifts, accrual proxies, disclosure markers. The lesson stuck with me: earn the features first, reach for giants second.
FinBERT scored 79.41% accuracy with an 81.08% F1 — the best F1 among single models of the transformer family. Tone reads sentences; fraud lives in filings. That gap is exactly what EXP-01 exhibits: the language layer, in your browser, next to a scanner built from what this study learned.
Want to see the transformer layer yourself?
EXP-01 runs FinBERT — the quantized one from this study's lineage — against any statement you paste, entirely in your browser. Then it overlays a red-flag scanner built from what 170 filings taught.
More builds.
Ten more builds spanning web apps, distributed systems, data engineering, visualisation and research — the wider body of work behind the case studies above.
ML Playground — interactive ML curriculum
A browser-based course that teaches machine learning through live, draggable visualisations: regression, SVMs, random forests, PCA, DBSCAN, backpropagation, ROC curves. Every algorithm runs client-side.
Consumer Behavior with dbt + PostgreSQL
A modern data-warehouse pipeline: raw event data modelled into analysis-ready marts with dbt on PostgreSQL.
Student Outcomes Prediction
Which factors drive dropout and completion in higher education? A bilingual Python + R predictive study of the full student lifecycle.
AirBnB at Scale — Hadoop MapReduce
Distributed analysis of AirBnB listing and review data with Java MapReduce: consumer satisfaction, computed region by region, cluster by cluster.
Credit Card Forensics — MapReduce
Spending-pattern and anomaly analysis over card transaction data using distributed MapReduce jobs.
Walmart Sales Command Centre
An interactive Tableau dashboard over Walmart sales data — from category trends to regional performance, built for the boardroom, not the lab.
Australian Road Safety Analysis
From research question to shipped dashboard: a full analytics journey over Australian road-crash data, aimed at where safety interventions matter most.
AI Ethics in Healthcare
A research review of where machine learning meets medical decision-making — bias, explainability and the responsibility gap.
News Popularity Prediction
Can click-worthiness be predicted from the article's own features? An NLP + regression study of what makes online news travel.
One engineer, both halves.
Most engineers can do the web app or the model. I do both, which means one person can take your idea from a database schema to a working AI feature in production — tested, deployed and documented.
I'm a full-stack engineer with a data-science background. I ship production code for live e-commerce businesses — payments, checkout, admin tools, security, deployment — and I build LLM-powered products end to end, from the prompt and evaluation layer down to the GPU the model runs on.
Tell me what you need built.
> status: available for freelance and contract work · replies within 24h