Portfolio

Engineering

Building tools and platforms at the intersection of security and user experience.

Case study

AI-Powered Security Review Pipeline

A multi-model security review pipeline that reads 1Password pull request diffs, grounded in five years of the team’s own review history and a compressed map of the codebase it’s reviewing.

GoLLM orchestrationGitHub ActionsMap-reduceSHA-256Prompt injection defenseAppSec

The problem

Product Security reviewed pull requests by hand, on recurring calls. The reviews were thorough and they caught real issues, but PR volume kept climbing as the company grew and engineers adopted AI coding assistants. Those reviews cost the team countless hours every month, much of it spent on vulnerability patterns they had already seen many times. Manual review couldn’t keep pace with that kind of growth.

What I built

SAGE (Security Analysis Guidance Engine), an automated review pipeline that encodes the team’s institutional knowledge and applies it to PR diffs:

  • 01 Ruleset: Nearly 9,000 PRs across five years and five languages (Rust, Go, Kotlin, TypeScript, Swift), deduplicated with LLMs into 8,343 clean reviews and distilled into a ruleset spanning 16 vulnerability categories. It grew from 171 rules at v0 to 343 at v1.
  • 02 Three-stage adversarial pipeline: A fast, cost-efficient Finder optimized for recall; a Critic running a frontier reasoning model from a different vendor to attack each finding; and a Judge that renders the final verdict: confirmed, false positive, or needs review. Splitting providers keeps one model’s blind spots from becoming the pipeline’s.
  • 03 Vendor-agnostic harness: A Go llm.Client interface with per-stage model profiles, structured JSON output, and prompt injection detection, so models can be swapped as they improve without touching the pipeline.
  • 04 Delivery: A GitHub Action that posts line-specific comments directly on the PR, backed by an activity log that tracks scan history and false positives over time.
  • 05 SuperSAGE context layer: 1Password monorepos are far too large for any context window, so a map-reduce pass summarizes each directory into a SCAFFOLDING.md file containing sensitivity ratings, attack surfaces, trust boundaries, and file summaries. Those summaries fold upward, child into parent, to the root. The result is roughly 30× smaller than the source it describes.
  • 06 Deterministic change detection: LLMs rarely produce the same text twice, and reworded summaries would cascade phantom diffs up the whole tree. So the Go harness hashes a small, fixed set of structural facts with SHA-256 (the files present, their sensitivity ratings, and trust-boundary designations) and compares only those. Prose changes are ignored; real structural changes aren’t. Only directories with genuine code changes are regenerated.

The result

On a cryptographic PR used as an early benchmark, SAGE surfaced 6/6 true positives, including issues human reviewers initially missed, at an average cost of $0.47 USD per scan. The context map refreshes every night for a few dollars, so reviews reason about a diff in light of the code around it rather than in isolation. It saves the Product Security team hours of review time every week, and the knowledge it applies no longer lives only in the heads of the people who happened to attend the call.

Case study

Security Design White Paper Platform

An independently built publishing pipeline that produces the official 1Password Security Design White Paper. It’s a living document that ships like software.

RRMarkdownbookdownLaTeXHTML/CSSGitHub PagesGitHub Actions

The problem

A security white paper for a company like 1Password can’t be a static PDF that lives in a drawer. It needs to be versioned, auditable, searchable, multi-format (HTML and PDF), and maintainable without a publishing team. The existing document (and its related processes) didn’t meet that bar, so I built a new one.

What I built

An end-to-end publishing pipeline, independently designed and implemented:

  • 01 Source layer: R + RMarkdown for structured, version-controlled authoring. Every chapter is a plain-text file that’s diffable, reviewable, and editable without proprietary tooling.
  • 02 Typesetting: Bookdown orchestrates multi-chapter output; LaTeX handles mathematical notation for cryptographic formulas (SRP protocol math, key derivation proofs) via MathJax.
  • 03 Output formats: A single source produces a multi-page HTML site with in-document search (Fuse.js) and an interactive glossary, and a downloadable PDF.
  • 04 CI/CD: Secured GitHub Actions help automate the build and deployment. No manual export or upload is required to publish updates.
  • 05 Hosting + URL: Deployed to GitHub Pages under the AgileBits org with a clean, short canonical URL via the company’s domain.

The result

An interactive public document that covers AES-256-GCM vault encryption, two-secret key derivation, SRP-based authentication, Secrets Automation with JWT bearer tokens, and a candid limitations section. The cryptographic architecture is studied by security researchers, technical decision makers, and users who want to audit 1Password’s claims rather than take them on faith.

In progress

Vulnerability Triage Application

When my team couldn’t find a tool that properly addressed its vulnerability intake and management needs, I decided to build one. An internal React/Go application that’s helping engineers triage vulnerability findings. It’s reducing noise, surfacing signal, and shortening the time from detection to decision. More details coming soon.

GoAWSIn progress