meklab.net

Resume

Michael Ekstrom

Salt Lake City, Utah · michael.ekstrom@me.com · github.com/mekstromjr · LinkedIn

Experience

Web-Development Intern · SimpleCitizen

Jul 2025 – Sep 2026

Title of record was intern. By the end of the 14-month contract I owned the internal RAG platform end to end.

  • Wrote the product requirements and technical design for SC-RAG v2 and drove both to accepted status.
  • Redefined the platform after a company pivot: serve internal non-technical staff, replace self-hosted inference with an API gateway, and guarantee immigration PII never leaves company infrastructure.
  • Designed the PII-scrubbing boundary so neither the vector store nor any external LLM API ever receives customer data.
  • Replaced an underused self-hosted GPU host with OpenRouter as a routed gateway.
  • Built the production path: GitLab CI with a tag-gated deploy, EC2 bootstrap, secrets via AWS SSM, OAuth, Cloudflare Tunnel ingress.
  • Added Alembic migrations, an SQLAdmin interface, a Typer management CLI, and S3-backed preview storage.
  • Shipped features and fixes in the Django, Graphene GraphQL, and Celery product codebase under team review standards.

Python, Django, Graphene, Celery, PostgreSQL, Docker Compose, GitLab CI, AWS, Cloudflare, OpenRouter

Shuttle Driver and Dispatcher · University of Utah

May 2021 – Dec 2025

Four and a half years of continuous employment while carrying a full course load, including ADA paratransit service and dispatch duties. Current Class B CDL with passenger endorsement.

Assistant to the President · Volunteer service, Bucharest, Romania

2018 – 2020

Two years of full-time volunteer service abroad. Directed and supported forty full-time volunteers, managed nationwide logistics and legal residency, and sat on the team that planned the operation's COVID-19 response. Worked daily in Romanian.

Projects

Personal work, not employment. Detail on the projects page.

meklab

Live · since 2025

A three-node Kubernetes cluster at home, operated like production. Migrated a Docker Compose estate on Proxmox to a highly available k3s cluster managed by Flux. Vault-backed secrets through External Secrets Operator, Prometheus and Loki observability deployed before any user-facing service, Traefik and cert-manager ingress, Longhorn block storage, Garage object storage, KEDA scale-to-zero for accessory services, and Authentik single sign-on in front of everything. The security posture assumes public exposure even though reachability is private.

k3s · Flux · Vault · Longhorn · Traefik · Prometheus · Loki · Authentik · Proxmox · Tailscale

OpenClef

In progress · since 2026

An open-source, self-hosted sheet music library for performers. Existing tools are tablet-locked and single-user, or treat scores as generic files. OpenClef models what musicians actually search by: works, arrangements, parts, instruments, and composers. Product design and technical requirements documents were validated with prospective users before implementation began. Full export to forScore is a first-class requirement so the tool fits how musicians already perform.

Python · FastAPI · PostgreSQL · SQLAlchemy

DVD ripping appliance

Live · since 2026

A 2009 MacBook Pro turned into a one-button DVD archiver for a grandfather. Insert a disc, get a lossless rip, transferred to network staging, auto-ejected, with a chime. No terminal, no login, no decisions. A FastAPI and htmx interface with server-sent events shows progress in plain language. The ripper is an explicit SQLite-backed state machine, so a bad disc, a dropped network, or a power cut resumes rather than restarts.

Python · FastAPI · htmx · SQLite · ffmpeg · mkvmerge

vinyl

In progress · since 2026

Digitizing an inherited record collection: inventory, capture, QC, and library import. A capture station with a kiosk interface, an inventory server with barcode accession cards, and a pipeline from raw capture through track splitting and quality checks into the media library. Built so a non-technical operator can run a whole session alone.

Python · FastAPI · ffmpeg · Chromaprint · MusicBrainz · ReportLab

recipe-pipeline

Live · since 2026

Handwritten family recipe cards, scanned, OCR'd, structured, and served from Mealie. Scans go through a handwriting OCR model, then a text model turns noisy output into well-formed recipe records with title, ingredients, steps, and provenance. Hard cases escalate to a stronger cloud vision model, and only the failed tail ever leaves the machine. Results land in a self-hosted Mealie instance in the cluster.

Python · FastAPI · Ollama · Mealie · S3

Working with AI tools

Skills

Production and professional
Python · Django · GraphQL · Celery · PostgreSQL · Docker · GitLab CI/CD · Linux · AWS · REST API design
Personal infrastructure
Kubernetes (k3s) · Flux · Helm · HashiCorp Vault · Prometheus · Grafana · Loki · Traefik · cert-manager · Longhorn · KEDA · Proxmox · Authentik · Tailscale · Cloudflare · S3-compatible storage · FastAPI · htmx · SQLite · ffmpeg
AI and ML engineering
RAG architecture · vector stores · PII scrubbing · LLM gateways and routing · Model Context Protocol · agent design · Claude Code tooling · speech-to-text · OCR · audio fingerprinting
Practice
PRDs and technical design docs · architecture decision records · code review · runbooks · incident response · designing for non-technical users
Languages
English (native) · Romanian (professional working proficiency)

Education

B.S., Computer Science · University of Utah

Expected spring 2028

Coursework: Algorithms, Computer Networks, Engineering Probability and Statistics, Models of Computation.