Four products I designed, architected, coded, and operated solo, from concept to deployment. Each owns a hard problem: knowledge-graph modeling, multi-provider LLM orchestration, graph algorithms, or the discipline of autonomous agents. Together they are proof that my leadership comes from doing the work, not describing it.
A Neo4j knowledge graph of city points-of-interest and narrative beats that powers GPS-triggered, personalized audio walking tours. The launch city is Paris. The pitch is simple: a knowledgeable local, narrating the right story at the right corner.
What it proves Senior-architect graph-modeling judgment, including a documented record of what the design deliberately skips (RDF/SPARQL, OWL, embeddings) and the triggers to revisit each. I owned the graph, the backend, the ML and audio pipeline, the generative content, an interactive authoring frontend, and a Flutter mobile app with GPS geofencing.
Versioned, event-centric, CIDOC-CRM-aligned schema. Eight core entity types and twelve relationship types, several as reified edges carrying their own properties. Controlled vocabularies, canonical IDs, per-fact provenance. A lens taxonomy of eight parent genres and twenty-one sub-genres.
Python 3.11 and FastAPI (JWT, Google and Apple sign-in, rate limiting), Neo4j 5.28 with spatial indexes, Flutter mobile, AWS S3. Dual-provider TTS behind a protocol, narration glue via Claude Haiku, fact-check via Gemini.
Sixteen REST endpoints, a 25-module deterministic tour engine in two modes, a browser graph editor, and a Leaflet editorial workbench. 177 tests with a CI tour-grading regression gate. Sentence-level provenance: every spoken sentence traces to a beat or a whitelisted label, so AI cannot fabricate.
Admins author negotiation scenarios with in-character AI personas. Learners practice live. An LLM evaluates each session and returns scored, framework-based feedback, with built-in CLEAR and AIDA frameworks plus admin-defined weighted ones, a 0-to-100 score, and the winning arguments.
What it proves Production-grade multi-provider LLM orchestration, not a single-API wrapper. Genuine full-stack ownership, and real operational maturity, including a “zero skipped tests” rule and a dedicated security and red-team layer.
A three-tier chain with pinned versions: Claude Sonnet 4.5 to Gemini 2.0 Flash to GPT-5.2 Instant. Exponential backoff, retryable-versus-terminal error classification, transparent mid-conversation failover. The LLM plays three roles: persona simulation, rubric evaluation, and scenario generation.
TypeScript and Next.js 16 (App Router), React 19.2, Tailwind v4. Prisma 6 over SQLite in dev and PostgreSQL in prod, eleven data models. Clerk auth, Upstash Redis rate limiting, React-PDF export, hosted on Vercel at roughly $0.07 per session.
Roughly 12,875 lines of non-test TypeScript, 24 React components, 65 API routes, fourteen documented user pathways across three actor types. 1,246 Jest unit tests and 15 end-to-end, zero skipped, including 67 security and middleware tests and dedicated red-team files.
A multi-tenant web app that builds a cross-project dependency graph over a workspace of repos and computes the blast radius of a change. Given a package upgrade, it shows which projects across the org break, in dependency order, with a streaming LLM explanation of why.
What it proves Real graph-systems and graph-algorithm work, deliberate polyglot persistence with explicit reasoning about the dual-write atomicity gap, and a strong leadership signal. The codebase ships alongside a brutally honest senior-engineer audit of itself, with file-and-line evidence and a prioritized fix plan, plus an investor-grade competitive memo.
Hand-written Cypher that starts from a package, finds directly-affected projects, then traverses inter-project semantics up to five hops via shortest path. Results carry distance and impact type, severity-bucketed by hop distance, behind a one-hour cache. Design-target scale near 50,000 package nodes.
Python 3.11 and FastAPI. Polyglot persistence: PostgreSQL 14+ for identity, workspaces, and history, plus Neo4j 5.x with APOC for the dependency graph. WorkOS AuthKit. A deliberately build-free frontend in HTMX, Jinja2, Alpine, and Tailwind. Hosted on Render.
Provider-agnostic via litellm with a custom model router. Eleven task types tiered across Claude, OpenAI, and local Ollama models, in four modes: Quality, Balanced, Cost, and Local-Only for privacy, each with its own failover chain. Over 200 tests.
An open-source kit that encodes disciplined engineering practice into an AI coding agent: slash-command skills, multi-perspective agent definitions, reusable patterns, and mechanically-enforced behavioral hooks. Ten skills, ten agents, four patterns.
What it proves A clear thesis, in working code. An LLM coding agent must be treated as an adversary and disciplined with code, not prose, applying adversarial verification, test-first practice, deterministic gating, and honesty contracts. It is the operational twin of the management research.
A multi-perspective answer engine with hostile, evidence-gated verification behind a deterministic gate. Parallel generators, per-claim skeptics that re-open each cited file-and-line and confirm the quoted bytes, up to three adversaries. A pass requires positive evidence, never the mere absence of objections.
Skills as Markdown with YAML frontmatter, a Node verification engine, and a Bash installer with enforcement hooks. The flagship workflow is backed by thirteen committed Node test files. Ten agents each carry an authority rank and persistent memory, and conflicts merge in authority order.
build-fix, an iterative build-fixer that never skips a failing test to go green. Plus ship, retro, error-diagnosis, prwalk, and agent-management skills, and four runnable patterns: observe, mutate, verify, and pipelines.
A longer trail of systems, from Carnegie Mellon research to weekend builds, that show the same instincts at smaller scale.
Open to conversations about these products — the architecture, the code, or where each one goes next.