meklab.net

Résumé

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 company's internal AI search tool end to end.

  • Spearheaded SC-RAG, the internal AI search tool for staff: wrote the product requirements and technical design (both accepted), then built, deployed, and documented it.
  • Designed the privacy safeguards that keep customers' immigration data from ever reaching an outside AI service.
  • Cut hosting cost by replacing an underused GPU server with a pay-per-use AI gateway (OpenRouter).
  • Built the release pipeline to AWS with GitLab CI, so production deploys happen only from a tagged, reviewed version.
  • Rewrote the setup documentation after testing it in a clean environment, so another engineer could run the system without me.
  • Shipped features and fixes in the main Python and Django product through tickets, code review, and merge requests.

Python, Django, GraphQL, Celery, PostgreSQL, Docker, GitLab CI, AWS, OpenRouter

Shuttle Driver and Dispatcher · University of Utah

May 2021 – Dec 2025

Four and a half years of campus passenger service while in school, some of that time alongside the SimpleCitizen internship.

  • Held a Class B CDL with passenger endorsement; provided ADA paratransit service, including wheelchair securement.
  • Covered dispatch, contacting emergency services during incidents and directing drivers through route changes, and helped train new drivers.

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 Home Cluster

Live · since 2025

A Kubernetes cluster in my house, run like production so I can learn how production fails. A highly available k3s cluster on six Proxmox hosts, reconciled from Git by Flux. Monitoring went in before any app did, and every service sits behind single sign-on. I've restored it from backup for real once, after Vault's storage came back empty. I don't recommend it as a testing strategy.

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

OpenClef Sheet Music Library

In progress · since 2026

An open-source, self-hosted sheet music library for performers. It started when my sister and I were getting ready to play a piece together for the millionth time. We were sending music back and forth and hunting for a copy of something we'd played years ago, and I thought it would be nice to self-host something like Mealie, but for sheet music. Existing tools are locked to one tablet and one user, or treat scores as plain files. OpenClef organizes music the way musicians look for it: by work, arrangement, part, instrument, and composer. I checked the design with other musicians before writing code, and full export to forScore keeps it compatible with how performers already work.

Python · FastAPI · PostgreSQL · SQLAlchemy

One-Button DVD Archiver

Live · since 2026

A 2009 MacBook Pro, rebuilt so a grandfather can archive his own DVD shelf. 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 picks up where it left off. The only decision left is which disc goes in next.

Python · FastAPI · htmx · SQLite · ffmpeg · mkvmerge

Vinyl Record Digitizer

In progress · since 2026

An inherited record collection, digitized one side at a time. 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 Card Digitizer

Live · since 2026

A grandmother's handwritten recipe cards, read by OCR and served from a family recipe app. 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

Scribe Summary Bot

Live · since 2026

Send a link, PDF, or image to Slack; get a summary, the full note, and a narrated version back in thread. A Slack bot running in the cluster. It reads a document's embedded text first and falls back to OCR only for pages with none, so a 39-page PDF finishes in about half a second instead of an estimated 15 to 25 minutes. Everything runs on local, CPU-only models, so documents never leave my own hardware.

Python · Slack API · Ollama · Kokoro TTS

Skills

Production and professional
Python · Django · GraphQL · Celery · PostgreSQL · Docker · GitLab CI/CD · Linux · AWS · Alembic
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
Retrieval-augmented generation · PII scrubbing · local models (Ollama) · AI gateways (OpenRouter) · speech-to-text · OCR · audio fingerprinting · AI coding agents (Claude Code)
Familiar
C++ · Java · C#
Practice
PRDs and technical design docs · architecture decision records · code review · runbooks · incident response · designing for non-technical users
Languages
English (native) · Romanian (conversational; fluent 2018–2020)
Licenses
Class B CDL with passenger endorsement

Education

B.S., Computer Science · University of Utah

Expected spring 2028

Coursework: Data Structures and Algorithms, Software Practice I and II, Algorithms, Computer Networks, Models of Computation, Probability and Statistics, Societal Impact of Computing.