← McKeen Asma · Portfolio

Case studies

Each one is a real build with a recorded run, a short video and the full write-up you can read without watching.

The 2015 MacBook Pro's screen as Tether streams it to the Air: its Chrome on a TikTok login
Automation infrastructure · Python + SSH + Chrome

Tether: One Desk, Two Macs

A 2015 MacBook Pro with a swollen battery brought back as a second worker. My browser remote Tether (~150 ms → ~14 ms per frame), Synergy for one keyboard and mouse, SSH both ways, and Chrome automations driven from the Air over a checked tunnel. Personal setup.

Title card: claude-agent-loop-guard, a Claude tool-use agent with turn, USD-budget and repeat-call guards
AI agents · Anthropic SDK + Playwright

Claude Agent Loop Guard

A Claude tool-use agent that browses a shop with Playwright, with the guards that stop it looping or overspending: max turns, a USD budget checked before every call, a repeat-call breaker, checkpoint/resume and a cost log. 6/6 tests. Demo project; runs against a scripted fake model.

Title card: saas-billing-starter, a Next.js multi-tenant SaaS starter with Postgres row-level security and Stripe webhooks
Full-stack SaaS · Next.js + Postgres RLS + Stripe

SaaS Billing Starter

Multi-tenant orgs with owner/admin/member roles enforced by Postgres row-level security, a billing gate in the database, and a signed, idempotent, order-safe Stripe webhook. 12/12 offline tests. Demo project with fictional data, Stripe test mode.

Title card: llm-eval-harness, a golden dataset, LLM-as-judge graders and a CI regression gate
LLM evals · CI quality gate

LLM Eval Harness

A 20-case golden dataset, exact-match and LLM-as-judge graders and a GitHub Actions gate that fails the PR when quality drops or an urgent ticket is missed: good run 19/20 passes, regressed 14/20 fails. Demo project with synthetic recordings.

The care report archive: an amber report saying one add-on needs an update this week, with the to-do list and the real numbers
WordPress care report · n8n + Claude

WordPress Care-Plan Report, every Monday

A weekly plain-English email for a clinic owner: is the site online, updates waiting, backups, errors, speed, and a short to-do list. n8n checks the site, Claude writes it, code checks every number against the real data. A plugin put behind on purpose was named on the next run. Demo for a fictional dental clinic.

Incident log for a WordPress site: white screen after a plugin update, fixed in 7.0 s, with the broken and healthy pages side by side
WordPress rescue · WP-CLI

WordPress Site Rescue, down → back

A clinic site broken three ways (white screen after a plugin update, stuck in maintenance mode, a staged hack) and brought back each time: cause found from evidence, fixed, booking form checked. Fixed in 7.0 s, 17.5 s and 23.6 s. Demo for a fictional dental clinic.

Before and after report for a WordPress site: score 55 to 78, main picture 104.0 s to 4.9 s, page 26.0 MB to 1.1 MB
WordPress speed fix · WP-CLI + Lighthouse

WordPress Speed Fix, before → after

A slow clinic site made fast with one script and free plugins: the main picture shows in 4.9 s instead of 104 s on a slow phone, page 26.0 MB → 1.1 MB, same design. Demo for a fictional dental clinic.

Bayview Dental front-desk dashboard: 8 emails sorted, 3 invoices captured, ₱28,150.00 total due, one overdue in red
Inbox triage + invoices · n8n + Claude

AI Inbox Triage + Invoice Extractor

Sorts every email, pulls supplier invoices into one list (₱28,150 due, overdue in red) and drafts patient replies. 8 emails in 47 seconds. Demo for a fictional dental clinic.

Bayview Dental website with the chat assistant answering a whitening price question
AI chat assistant · n8n + Claude

Clinic Chat Assistant

Answers from the clinic's info sheet, books a real open slot, and hands questions it can't answer to staff. Demo for a fictional dental clinic.

Bayview Dental website form, the start of the AI lead responder demo
AI automation · n8n + Claude

AI Lead Responder

A website enquiry gets a personal reply in 8.3 seconds and every lead is saved to a lead sheet. Demo for a fictional dental clinic.

Tasks app built with a Laravel API and a Next.js frontend
Full-stack · Laravel + Next.js

Tasks: Laravel API + Next.js

A tested CRUD app built test-first with Claude Code in a 4-hour assessment, with a 7-minute code walkthrough.