{"id":"work-page","slug":"work","meta":{"title":"Work — Case Studies by Andrew Linh","description":"Selected systems architecture case studies: schema-driven CMS, end-to-end type safety, AI agent evals, and lakehouse audit infrastructure."},"sections":[{"id":"work-hero-1","type":"page-hero","data":{"label":"Work","title":"Case studies with receipts.","description":"Each project is its own entity — context, problem, architecture, result, and stack."},"settings":{"paddingTop":"lg","paddingBottom":"md"}},{"id":"work-list-1","type":"projects-list","data":{"title":"Selected engagements","description":"Real systems work with measurable outcomes.","items":{"schemaforge-cms":{"id":"schemaforge-cms","title":"SchemaForge CMS","subtitle":"Schema-driven content publishing for multi-tenant sites","year":2025,"role":"Lead systems architect","context":"A content platform serving 40+ tenants needed deterministic page assembly without CMS drift or silent field mismatches.","problem":"Editors published broken pages weekly because free-form JSON and ad-hoc React sections diverged. Publish errors averaged 12% of releases, and rollback windows stretched past two hours.","architecture":"Introduced Zod collection contracts, keyed collection documents, and section capsules that bind via $ref. Studio inspector surfaces were generated from the same schemas used at render time. CI validated every page and collection against registry schemas before merge.","result":"Publish errors dropped 40%. Mean time to recover from a bad content release fell from 2.1 hours to 18 minutes. New tenant onboarding time moved from weeks to a two-day scaffold.","stack":["TypeScript","Zod","React","Vite","PostgreSQL"],"image":{"url":"https://images.unsplash.com/photo-1555066931-4365d14bab8c?w=1600&q=80","alt":"Dark IDE with structured code on a widescreen monitor"},"tags":["cms","schemas","content-infra"],"featured":true},"typebridge-api":{"id":"typebridge-api","title":"Typebridge API","subtitle":"End-to-end type safety from Zod to OpenAPI to clients","year":2024,"role":"Principal engineer","context":"A developer-tools company shipped three client SDKs from a hand-maintained OpenAPI document that routinely drifted from runtime validators.","problem":"Contract mismatches caused 23 production incidents in six months. SDK releases lagged API changes by an average of nine days.","architecture":"Made Zod schemas the single source of truth. Generated OpenAPI 3.1, TypeScript clients, and contract tests from the same definitions.","result":"Contract-related incidents fell 78%. SDK lag dropped from nine days to same-day.","stack":["Zod","OpenAPI","Node.js","GitHub Actions"],"image":{"url":"https://images.unsplash.com/photo-1518770660439-4636190af475?w=1600&q=80","alt":"Circuit board traces representing API connectivity"},"tags":["api","type-safety","dx"],"featured":true},"agentops-runner":{"id":"agentops-runner","title":"AgentOps Runner","subtitle":"Deterministic evaluation harness for AI agent workflows","year":2025,"role":"Architecture lead","context":"An AI product team needed reproducible evals for multi-step agents before promoting prompts and tools to production.","problem":"Ad-hoc notebook evals produced non-comparable scores. Regressions slipped into production twice a month.","architecture":"Built a runner with frozen fixtures, tool stubs, deterministic seeding, and structured trace artifacts with typed scorecards.","result":"Eval variance across identical runs dropped below 1%. Production agent regressions fell from ~8/month to 1/month.","stack":["Python","TypeScript","Redis","OpenTelemetry","Docker"],"image":{"url":"https://images.unsplash.com/photo-1620712943543-bcc4688e7485?w=1600&q=80","alt":"Abstract neural network visualization on a dark display"},"tags":["ai","evals","observability"],"featured":true},"lakehouse-ledger":{"id":"lakehouse-ledger","title":"Lakehouse Ledger","subtitle":"Structured audit-trail infrastructure for regulated data pipelines","year":2023,"role":"Systems architect","context":"A fintech data platform needed immutable lineage across batch and streaming transforms.","problem":"Compliance reviews could not reconstruct metric definition changes. Audit prep consumed three engineer-weeks per quarter.","architecture":"Designed an append-only ledger of schema versions, transform fingerprints, and partition manifests wired into Spark and Flink jobs.","result":"Quarterly audit prep dropped from three engineer-weeks to four engineer-days. Lineage lookup latency stayed under 200ms p95.","stack":["Apache Iceberg","Spark","Flink","PostgreSQL","gRPC"],"image":{"url":"https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=1600&q=80","alt":"Earth from orbit with illuminated city lights"},"tags":["data-infra","audit","lakehouse"],"featured":true}}},"settings":{"paddingTop":"md","paddingBottom":"lg"}}]}