Architecture-level notes on shipped systems.

Professional work, written at the architecture level: the problems, the trade-offs, and what they taught me. Client-confidential details stay out on purpose; the deep technical cuts live in the cases.

Multi-tenant invoicing SaaS (freelance)

Independent product, own stack · 2025–2026 · Full-stack (backend-leaning) engineer

Invoicing product for small businesses: tenants, documents, PDF generation, and an admin panel — built end to end solo.

  • Designed the tenant isolation model on shared schema with row-level scoping from day one
  • Built document numbering with gap-free sequences per tenant
  • Shipped PDF invoicing with deterministic rendering (same invoice, same bytes)
  • Kept p95 under 150ms on commodity hosting by profiling before and after every feature

Built end to end solo: schema, API, PDF pipeline, admin panel, deploy. Tenant isolation was designed in from day one — row-level scoping on a shared schema, with adversarial tests that try to read across the boundary. The gap-free document numbering problem from this product shaped how I think about concurrent writes.

api-design · database · performance · link ↗

Public information platform (government scale)

Regional government agency (anonymized) · 2024–2026 · Backend engineer

Ingest pipeline and public-facing API for a regional information platform: multi-source data in, clean public pages out.

  • Rebuilt the ingest pipeline to stream-parse sources, cutting end-to-end freshness from hours to minutes
  • Designed the public API contract (versioned, paginated, cache-friendly) consumed by three downstream apps
  • Introduced schema validation at ingest boundaries, eliminating a class of silent data corruption
  • Cut p95 API latency ~40% by fixing N+1 query patterns and adding covering indexes

Architecture-level summary only — client-confidential details stay out on purpose. The rebuild replaced batch loading with streaming ingest, validated at the boundary: freshness went from hours to minutes, and a corrupt source file stopped failing the whole run. The public API was designed as a versioned contract for three downstream apps serving paginated feeds at that scale.

database · api-design · performance