built & running.
not pitched.
git log --numstat.- 2025 · ongoingHeyLinaCustomer-facing AI product. Expo / React Native app, Firebase Functions v2 backend, internal React + Vite ops console. RAG chat with user-scoped Pinecone indexes.expo · functions · pinecone↗
- 2025 · ongoingLina LabPrompt-evaluation engine behind HeyLina. Versioned prompt catalog, LLM-as-judge with full provenance, multi-scope eval framework.fastapi · supabase · openai↗
- 2025 · ongoingAHKMSMulti-platform knowledge-management system (PARAMPS). Turborepo: Next.js web, Express worker, Expo mobile, shared contracts. Capture → AI extraction → human-in-the-loop review.next · express · supabase↗
- 2023 →angushallyappThis site. Next.js 15 / React 19 with Node / Express + PostgreSQL. Habit tracker, Strava sync, UK FSA hygiene lookup, blog, @anthropic-ai/sdk chat.next · postgres · mantine↗
- 2025NexusChat-first personal workspace over a structured knowledge graph. React + Vite + Tailwind on the front, Firebase underneath.react · firebase↗
six things,
done deep.
Full-stack product
React 19 / Next.js 15 App Router on the front to Node / Express + Postgres on the back. Auth, RBAC, the whole vertical.
Mobile
React Native (Expo / Expo Router), EAS builds, Detox E2E. Shipping HeyLina’s customer app alongside our mobile engineer.
AI / LLM systems
RAG with user-scoped vector indexes, tool-use, structured outputs, prompt config served live. UX that respects latency and uncertainty.
Eval & harness
Versioned prompt catalogs, LLM-as-judge with full provenance, multi-scope rubrics, promotion pipelines. The Lina Lab discipline.
Backend & data
Postgres + Knex migrations, Supabase, Firestore, Pinecone. Typed schemas, MECE taxonomies, lifecycle state machines, soft-delete + version pinning.
Polish & ops
Framer Motion, CI/CD on GitHub Actions, Husky + lint-staged gates, Puppeteer rendering, PWA. The last 5% that survives a Lighthouse run.
want to build
something?
I’m focused on HeyLina, but I take on occasional engagements for people in my network and selected clients. Send a paragraph — I’ll reply.