← Home

Skills / A working toolkit

What I build with

From the first interaction
to the systems behind it.

In practice / 01

Interfaces

Turn complex tasks into clear screens, responsive interactions, and useful feedback.

  • JavaScript
  • TypeScript
  • React
  • Next.js
  • Tailwind CSS
  • Astro
  • WebAssembly
In practice / 02

Backend & Data

Model the domain, keep calculations exact, and put reliable boundaries around external systems.

  • Node.js
  • Express.js
  • NestJS
  • MongoDB
  • PostgreSQL
  • Python
  • Django
  • FastAPI
  • Rust
  • Deno
See it in a projectLedger ↗Dux MCP ↗
In practice / 03

Delivery & Observability

Ship repeatably and leave enough evidence to understand what happened when something fails.

  • AWS
  • Docker
  • Git
  • Railway
  • GitHub Actions
  • PostHog
  • Linear
See it in a projectDevPulse ↗Delet Admin ↗
In practice / 04

AI & Automation

Give models useful context, a bounded job, and an explicit path from suggestion to trusted action.

Coding

Frame the task, supply relevant code and constraints, then review and verify the changes.

  • Codex
  • Claude Code
  • Prompting
  • Context engineering

Connected intelligence

Retrieve relevant context and connect tools through explicit interfaces. Dux MCP and DevPulse explore authenticated tool access.

  • RAG
  • Embeddings / vector search
  • MCP
  • Tool calling

Reliable AI features

Validate outputs against contracts and evidence. Ledger makes extraction reviewable; Matchday grounds replies; Staffing Risk Agent evaluates bounded matching.

  • Structured outputs
  • Grounded responses
  • Evaluations
  • Multimodal extraction
  • Human review

A pattern across the work

AI with a review path.

A useful answer is only part of the job.

  1. Context

    Matchday’s saved game evidence

  2. Model/tools

    Dux MCP’s authenticated tools

  3. Validation

    Staffing’s bounded match checks

  4. Human review

    Ledger’s editable expense draft