prompt engineer · hermosa beach, ca

> Marcus Hobbs

#AI Innovation Engineer — building the meta-tools engineering teams use to ship AI features safely

I turn prototypes into versioned specs, specs into dependency-wired ticket graphs, and loop agent teams over the graph until the epic is drained — with human judgment concentrated into a few named gates. My job is to make the AI engineering SDLC itself a designed product.

44/45
tickets drained in ~35h
111/111
e2e green · 0 reverts
8.
human decisions · ~92 prs
Marcus Hobbs
// marcushobbs@mac.com · linkedin.com/in/marcushobbs

##about

I build the systems engineering teams use to ship production software with AI agents — spec-covered, test-proven, compliance-aware. The answer isn't better models. It's better engineering around the models.

The last year has been an arc. It started as prompt engineering — ablation studies, evaluation harnesses, load-bearing-component analysis. It became context engineering — behavioral specs across the full Claude Code toolkit (CLAUDE.md, Skills, Rules, Hooks, Memory). It's now loop and graph engineering: a pipeline that turns a designer prototype into a versioned requirements catalog, the catalog into a dependency-wired ticket graph, and the graph into parallel agent lanes that build, verify, and ship — while a human decides only at a handful of named gates.

The pipeline produces four durable artifacts on every run — code, specs, learnings, and end-to-end tests — not just code. Specs include non-functional catalogs promoted from a real threat model: security baseline, HIPAA overlay, PHI handling. This is the line between agentic engineering and vibe-coding, and I live on the engineering side of it.

The proof point: one real epic — 45 dependency-wired tickets — drained by agent lanes in about 35 operator-paced hours. 114 requirements authored before a line of code, ~92 PRs across 3 repos, 111/111 e2e scenarios green, zero reverts. Eight human decisions steered all of it. Concentrate judgment. Automate the span. Compound the learnings.

##methodology

How much engineering it actually takes to let agent teams ship production software — and where a human still has to decide.

"The loop is the easy part. The graph, the gates, and the memory are the engineering — and they're what let agents ship software you'd actually merge."

agentic loops & graphs — self-improving systems

Every principle below serves one goal: concentrate human judgment into a few named gates, automate the span between them, and make every run leave the system smarter.

[01] spec

##spec-first

Requirements are authored before a line of code — permanent, immutable IDs; superseded rows tombstoned with a pointer, never deleted. Ambiguity has an address: an agent reads the requirement instead of inventing behavior.

[02] graph

##graph-engineering

Tickets are thin vertical slices wired by blocked-by edges. Readiness becomes computable — the loop derives the ready set from the graph, no one hand-orders the work. Columns are build waves; tall columns are exactly where parallel lanes pay off; the critical path is the floor.

[03] gates

##concentrate-the-gates

Most agentic workflows interrupt constantly or never stop. The third path: concentrate every human decision into a few named, high-leverage gates — scope, epic approval, drain start, PR merge. Each ruling lands in a durable artifact so no downstream stage re-asks it.

[04] dial

##autonomy-dial

Autonomy is a dial (L0 assisted → L3 auto-merge), not a boolean — with hard ceilings the agent cannot raise. Heavy-risk changes (models, migrations, auth, money, sensitive data) cap at human-merge. A run that authored a new requirement never auto-merges.

[05] loop

##compound-learning

Every run leaves four artifacts behind: code, specs, learnings, e2e tests. Learnings are captured before ship and auto-applied by future planning runs — one session's debugging becomes the next session's head start. The system's failures become its rules.

[06] verify

##verification-honesty

A green you didn't personally observe is not a green. Lanes report; the lead re-runs gates, reads the diff, drives the live app, and queries the database for ground truth. One verdict per check — "not run" is not a verdict.

[07] schema

##schema-first-prompts

Subagents never return prose to be re-parsed. Every fan-out defines a JSON schema and the harness retries until output validates — orchestration consumes typed data, and disagreement becomes typeable.

[08] budget

##budget-the-loop

Spawn budgets, 3-strike root-cause rules, round caps, token reserves, broken-baseline hard stops. Budgets are the contract that makes a multi-agent system debuggable — without them, "the agent kept trying" is indistinguishable from progress.

[09] eval

##empirical-prompts

Prompts are hypotheses, not products. Ablation testing reveals load-bearing components; cross-model validation proves generalization; LLM-as-judge scales evaluation. This Level-3 prompting discipline is where the whole arc started.

##experience

[2025 ─ present]
Irvine, CA
~/planet-dds
AI Innovation Engineer
  • Designed and run a compound agentic SDLC — an end-to-end pipeline that turns raw product intent (designer prototypes, PRDs, tickets, bugs) into merged, spec-covered, review-clean code, with human judgment concentrated into a few named gates. 13 compound commands + 6 spec commands + a deterministic debate engine, sharing one 9-step build spine across solo lanes and parallel epic drains.
  • Flagship result: took a designer prototype through spec-decompose → reconcile → author → ticket-mint into a 45-slice dependency graph, then looped N parallel agent lanes over it until the epic drained. ~35 operator-paced hours first-to-last merge, ~92 PRs across 3 repos, 114 requirements authored before any code, 111/111 e2e scenarios green, 0 reverts — steered by 8 human decisions, with every PR human-approved. Presented publicly as "Agentic Loops and Graphs" (Planet DDS AI Meetup #3 — my third talk in the series).
  • Spec discipline as the foundation: versioned functional requirement catalogs with permanent, immutable IDs — superseded rows tombstoned with a pointer, never deleted — consulted at write time, checked at review gates, and snapshotted (requirement ↔ e2e coverage) at every ship. Extended the same machinery to non-functional specs: a security baseline, a HIPAA overlay, and a PHI-handling catalog promoted from a STRIDE threat model, with live posture gaps catalogued into an NFR-cited, drainable backlog.
  • Autonomy as an engineered dial, not a vibe: L0 (assisted) → L3 (auto-merge on green CI), with hard ceilings the agent cannot raise — Heavy-risk changes (models, migrations, auth, billing, sensitive-data paths) cap at human-merge, and a run that authored a new requirement never auto-merges. Adversarial plan hardening runs as deterministic workflow code: a 3-lens reviewer panel argues against every plan before execution, with severity gates, round caps, and a formal dispute-escalation path to the human.
  • Every run produces four durable artifacts — code, functional & non-functional specs, learnings, and Playwright e2e coverage annotated to requirement IDs — so each run leaves the repo richer than it found it. Learnings are captured before ship and auto-applied by future planning runs; the system's failures become its rules.
  • Ongoing cross-team pattern extraction: survey other teams' prompt suites (~6,800 lines / 21 slash commands / 5 subagent templates in a recent cycle) for what travels vs what's load-bearing on local context; five transferable patterns adopted into a different team's greenfield suite, with teammate-facing playbooks so other AI engineers can pilot without re-doing the archaeology.
[2023 ─ present]
~/mastermind-alliance
Mastermind Alliance · open-source AI persona dialogue + ablation research
  • Open-source AI persona dialogue system with prompt ablation research — public on GitHub.
  • Prompt Ablation Study — systematic research testing which system prompt components are load-bearing vs decorative for famous persona embodiment (Nietzsche, Aurelius, Watts). 443 experimental runs with transcripts. Key finding: minimal prompts work surprisingly well for famous figures — model priors are strong enough that explicit style guidance may be redundant.
  • Mastermind tab — multi-persona roundtable discussions; select 2–5 historical/philosophical figures and watch them debate your question with authentic voice.
  • Context engineering applied — dynamic persona hierarchy via CLAUDE.md inheritance. Hot-swappable AI providers (OpenAI, Anthropic, OpenRouter). Skip logic prevents duplicate experimental runs.
  • Stack: Next.js 15, React 19, TypeScript, Vercel AI SDK, Server-Sent Events.
[2020 ─ present]
~/wilsonic
Freelance · C++ audio plugin + agent-driven tuning research
  • C++ cross-platform audio plugin for Mac, Windows, Linux. Audio processing + UI on JUCE.
  • Real-time microtonal scale design. Interactive exploration of mathematical objects via psychoacoustics. Parameters automatable in the DAW.
  • Ongoing Karpathy-style research program on the repo's research branch. I worked at Erv Wilson's side from 1995–2005, building his scale designs into software in real time; the harness is a computational continuation of the search he pursued by hand across thousands of diagrams — for scales that serve melody and harmony at once.
  • The "autoresearch" pattern: a deterministic inner loop (batch + MAP-Elites quality-diversity search over Wilson's Combination Product Set space — no LLM) with an agent in the outer loop operating on the experiment itself — propose a hypothesis, implement it, rerun the batch, keep the change only if the archive improved. Every run logged hypothesis → result → kept/reverted in a public lab notebook.
  • Same discipline as the day job, different domain: a frozen, git-tagged scorer as the reward-hacking firewall (SHA-256-pinned in CI — an optimizer that can edit its own verifier is not being verified), a Python mirror validated bit-exact against the compiled C++ plugin (85 scales, 0 mismatches), and every claim graded by receipt strength. Discoveries export as .scl files carrying their own plugin-recreation params — and decades of listening validate what the classifier finds.
[2023 ─ 2024]
~/brilliant
Senior Engineering Manager
  • Led full-stack delivery across web and mobile. React, Swift, Kotlin, Node.js, GraphQL.
[2019 ─ 2023]
San Francisco, CA
~/credit-karma
Engineering Manager II
  • Managed full-stack teams shipping financial products. React + Node + GraphQL + MongoDB. Secure auth, PII handling, consistent revenue and engagement tracking across products.
[2014 ─ 2019]
El Segundo, CA
~/att
Associate Director, Software Engineering
  • Led full-stack and mobile development of AT&T's streaming video service. Brand refresh, React Native migration, multi-vendor global delivery.
  • Led the Innovation Lab — ML prototypes for sentiment analysis of social media.
[2011 ─ 2014]
El Segundo, CA
~/directv
Senior Software Engineer
  • Migrated codebase from Objective-C to Swift. Shipped flagship iPad and Apple TV streaming apps.

##case-studies

Production work — written up in industry-portable terms.

[01] loops-and-graphs

##prototype-to-drained-epic

One real feature: a designer prototype decomposed into a versioned spec, minted as a 45-slice dependency graph, and drained by parallel agent lanes in ~35 operator-paced hours. Presented publicly as "Agentic Loops and Graphs" (Planet DDS AI Meetup #3).

44/45
slices shipped & merged
~35h
first → last merge
~92
PRs across 3 repos
114
requirements authored first
111/111
e2e scenarios green
0
reverts / broken main

The funnel: parallel readers mapped the prototype against shipped specs and surfaced that it secretly bundled three initiatives — the highest-leverage human decision of the project was a scope gate that deleted roughly two epics of accidental scope before any code existed. Then 122 requirement candidates were reconciled against the shipped catalogs (19 conflicts, all resolved; 6 operator product rulings), and 114 requirements were authored with permanent, immutable IDs — before a single line of implementation.

The graph: the spec was minted into 45 thin, vertical, end-to-end slices wired by blocked-by edges. Readiness became computable — the loop derived the ready set directly from the tracker, so no one hand-ordered the work. Laid out by build depth, the graph's columns are waves: every slice in a column became buildable the moment the prior wave merged. Tall columns are exactly where two lanes ran in parallel; the critical path set the floor.

The loop: each lane ran the same nine-step spine — pre-flight, sync real data, implement with a file-domain-isolated strike team, verify against the running app, multi-lens review, fix every finding, iterate until clean, capture learnings, honor the autonomy dial. Verification was tiered to risk, not convenience: the drain lead re-ran every gate personally, read every diff, drove the live app via browser automation, and queried the database directly for ground truth on write paths. 111/111 end-to-end scenarios green; the defects were caught upstream in each lane's QA loop, so the final gate acted as confirmation.

The human budget: eight decisions steered all 45 tickets — a scope gate, a reversal blessing, six product rulings, the ticket-mint authorization, the drain gate, pacing, and mid-build product questions recorded for a PM instead of decided by an agent. Every one of the ~92 PRs was read and approved by a human. Autonomy over execution — never over judgment.

// the drain, replayed — sanitized interactive record

The real 45-slice dependency graph from the epic, laid out by build depth: every column is a wave — each slice became buildable the moment the previous wave merged. Tall columns are exactly where the loop ran lanes in parallel; the critical path (22 hops) is the floor. Click a slice to trace what it waited on and what it unblocked. Identifiers and titles are scrubbed; the topology, risk tiers, verification depth, and merge timeline are real.

WS-A · foundation flagWS-B · core write pathWS-C · limits & overridesWS-D · lifecycle & schedulingWS-E · single-item flowWS-F · bulk changeWS-G · bulk addWS-H · enablementH heavy riskL lightX human-owned
wave 0
wave 1
wave 2
wave 3
wave 4
wave 5
wave 6
wave 7
wave 8
wave 9
wave 10
wave 11
wave 12
wave 13
wave 14
wave 15
wave 16
wave 17
wave 18
wave 19
wave 20
wave 21
wave 22
every fullstack merge · jul 13 15:17 → jul 15 01:59
Jul 14Jul 15operator pauseoperator pauseABCDEFGHS-01 — backend feature flag + mode resolution + API gate (07-13 15:17)S-02 — frontend gate + zero-change guard (07-13 15:53)S-03 — drawer → full-page host + back-nav (07-13 17:01)S-04 — durable intent store + API contract (07-13 17:01)S-05 — self-service change modal (07-13 18:02)S-06 — immediate apply path — re-base + resume (07-13 19:03)S-07 — cycle-boundary deferred executor (07-13 20:37)S-08 — one-per-cycle / supersede rules + display (07-13 21:49)S-10 — durable override record + API (07-13 22:54)S-11 — five-state status row (07-14 03:40)S-12 — edit modals + validation (07-14 04:35)S-13 — effective-threshold stop predicate (07-14 05:26)S-14 — reset to org default (07-14 05:06)S-15 — manual-state record + precedence resolver + audit (07-14 03:40)S-16 — shared status-chip taxonomy (07-14 04:35)S-17 — state modal — two modes (07-14 05:53)S-18 — reverse modal + success banner (07-14 11:13)S-19 — auto-resume scheduler (07-14 14:59)S-20 — edit-date modal + write path (07-14 11:13)S-21 — page controls + live status summary (07-14 14:59)S-22 — per-item manage tab (07-14 16:13)S-23 — two sub-lists + add-list derivation (07-14 16:13)S-24 — add modal + adaptive copy (07-14 17:17)S-25 — confirm → additive enable write (07-14 18:41)S-26 — post-add optimistic reflection (07-14 19:20)S-27 — checkbox + FAB scaffolding (shared bulk infra) (07-14 20:03)S-28 — shared 2-step shell + stepper (07-14 20:32)S-29 — step-1 selection chips + cards (07-14 20:58)S-30 — bulk classification engine (07-14 20:49)S-31 — grouped review + per-item exclusions (07-14 21:21)S-32 — bulk apply write path (07-14 22:12)S-33 — bulk success screen + totals (07-14 22:44)S-34 — bulk-add entry + gates (shared-infra fork) (07-14 21:29)S-35 — step-1 availability derivation (07-14 22:00)S-36 — catalog allowlist + eligibility gates (07-14 22:58)S-37 — bulk-add review breakdown (07-14 23:21)S-38 — bulk-add on-confirm writes (07-15 00:00)S-39 — bulk-add success + outcome report (07-15 00:17)S-40 — cohort tab — active / available (07-14 23:28)S-41 — shared enable service (audit-and-pin) (07-15 00:35)S-42 — prerequisite endpoints + pick modal (07-15 01:26)S-43 — pool attach + metering (audit-and-pin) (07-15 01:11)S-44 — bulk enable from item tab (07-15 01:59)S-45 — edge semantics (audit-and-pin) (07-15 01:50)first merge — S-01last merge — S-44 · epic drained

44 of 45 slices shipped & merged; the one exclusion (S-09) was ruled human-owned at the drain gate and deliberately gates nothing. Gaps in the timeline are operator pacing — the loop's reconcile-first design makes resume free.

// outcome

A repeatable pipeline, not a lucky run: prototype → spec → ticket graph → drain, with human judgment concentrated into eight named gates and every merge backed by observed verification. The loop is the easy part — the graph, the gates, and the memory are the engineering.

[02] suite

##compound-engineering-suite

The engine under the drain: 13 compound commands, 6 spec commands, and a deterministic debate engine sharing one build spine.

Two pipelines share one engine. Small work enters through a triage front door and runs one lane to a PR; big features enter through the spec-decomposition funnel and end in an epic drain. Every lane — solo or drained — runs the same spine: real-data sync, a file-domain-isolated strike team with a QA loop, live verification against the running app, multi-lens read-only review, fix-every-finding iteration, and learnings capture before ship.

Plans argue for their lives before execution: the debate engine runs a 3-lens reviewer panel (correctness, coverage, consistency) that traces the requirement through the codebase before reading the plan, then an author agent validates every blocker against real code — as deterministic workflow code with severity gates, round caps, token reserves, and a formal dispute-escalation path that hands genuine disagreements to the human, never auto-resolves them.

Everything runs under budgets and stop conditions: spawn caps, a 3-strike rule keyed on root-cause tags (not failure counts), broken-baseline hard stops, and an operator-owned-decision rule — a genuine product call always stops the loop and hands back. Subagents never return prose; every fan-out is schema-validated, so orchestration consumes typed data.

// outcome

The same engine serves supervised daily work and unattended epic drains — the throttle changes, the guarantees don't. It fails closed: budgets exceed or schemas don't validate and the workflow halts and escalates instead of silently degrading.

[03] survey

##cross-team-prompt-pattern-survey

Surveyed another team's prompt suite, identified five patterns that travel, adopted them into a different greenfield codebase, and wrote the playbook.

Prompt engineering is converging across teams, but nobody's harvesting what travels. I surveyed a brownfield team's suite — roughly 6,800 lines, 21 slash commands, 5 subagent templates — the way you'd read another engineer's library: what's generalizable versus what's load-bearing on their specific context.

Five patterns travelled: risk-driven mode selection, file-domain isolation between subagents, task-log files as durable phase contracts, active-fixer review agents, and frontmatter-registered subagents. I adopted all five into a different team's greenfield suite and wrote a teammate-facing report so other AI engineers could pilot the same patterns without re-doing the archaeology.

// outcome

Multi-team capability lift from one engineer's archaeology. The meta-skill is pattern extraction across codebases — knowing which conventions survive translation and which are scaffolding.

##artifacts

Every run leaves the repo richer than it found it. Code is only one of four outputs — the other three are what make the next run smarter. This is the "compound" in compound engineering, and the line between agentic engineering and vibe-coding.

[01] code

##code

The change itself — built to a debated plan, QA-looped, multi-lens reviewed, and verified against the running app (live browser drives, direct DB reads) before any PR opens.

[02] specs

##functional-and-nonfunctional-specs

Versioned requirement catalogs with permanent, immutable IDs — superseded rows tombstoned with a pointer, never deleted. Consulted at write time, checked at review gates, snapshotted at ship. Plus non-functional catalogs: security baseline, HIPAA overlay, PHI handling.

[03] learnings

##learnings

A grep-able solved-incident catalog, captured before ship and auto-applied by future planning runs. One session's debugging becomes the next session's head start — the system's failures become its rules.

[04] e2e

##e2e-coverage

Playwright tests annotated to the requirement IDs they cover, audited continuously and snapshotted at every ship — so the requirement catalog stays testable, not aspirational.

// compliance-by-construction

The spec machinery extends to security and compliance. I ran a STRIDE threat model on a healthcare AI product and promoted its findings into three living non-functional spec catalogs — a security baseline (secrets, auth realms, tenant isolation, transport, log hygiene), a HIPAA overlay (technical safeguards as engineering controls), and a PHI-handling catalog (the 18 identifiers; logging, URLs, proxying, retention, de-identification). Live posture gaps became a prioritized, requirement-cited, drainable backlog — each ticket mapped to the specific rule it violates and the file it lives in. The pipeline checks these catalogs at its review gates, so compliance posture is maintained by construction rather than rediscovered in the next audit.

##philosophy

"Concentrate judgment. Automate the span. Compound the learnings."// agentic loops & graphs — the takeaway

The discipline keeps leveling up. Prompt engineering asked "what do I say?" Context engineering asked "what does the agent know?" Loop and graph engineering asks "what does the system do while I'm not watching — and what does it leave behind?"

"Agent loops" get hyped as a prompt: point an agent at the repo, walk away, magic. What actually runs one is a dependency graph, a versioned spec, named human gates, an autonomy dial, and isolated parallel lanes. The loop is the easy part. Everything around it is the work.

Two dials, often confused. Level-3 prompting is a design-time discipline — shaping how an agent reasons before it decides, not just what it does. The autonomy dial (L0–L3) is a run-time policy — how far a pipeline may proceed without a human, with hard ceilings it cannot raise for itself. One governs the quality of agent thought; the other bounds the blast radius of agent action. You need both.

A pipeline that only produces code is a vibe. Mine produces four artifacts every run — code, specs, learnings, e2e tests — so each run leaves the repo richer than it found it. Find the bottleneck. Give the agent eyes and hands. Encode the learnings. Compound.

##skills

###prompt-engineering

Designing the prompts and the systems that hold them.

[pe-01]

##claude-code-mastery

CLAUDE.md · Skills · Rules · Hooks · Commands · Memory

System prompt design, evaluation suites, and full-stack context engineering across the complete Claude Code toolkit. Behavioral specs, capability modules, constraint systems, automation hooks, and persistent memory — orchestrated for reliable agent execution.

[pe-02]

##multi-agent-orchestration

plan → work → review · file-domain isolation · JSON schema enforcement

Multi-phase workflows with subagent teams. File-domain isolation, hard tool-call and retry budgets, JSON-schema-enforced outputs, risk-driven mode selection, durable task-log contracts between phases. Registered subagents with frontmatter, restricted tools, and active-fixer contracts.

[pe-2b]

##spec-pipeline-engineering

decompose → reconcile → author → tickets · immutable requirement IDs

Turning prototypes and PRDs into versioned requirement catalogs before any code: parallel-reader decomposition, reconciliation against shipped specs, permanent immutable IDs with tombstoned supersession, and requirement ↔ e2e coverage audits snapshotted at every ship.

[pe-03]

##schema-first-prompt-design

JSON Schema · output contracts · typed disagreement

The prompt populates a schema; the schema is the artifact. JSON-schema-enforced subagent outputs make multi-agent disagreement typeable and downstream consumption parser-free.

[pe-04]

##friction-driven-refinement

iterative agent calibration

Converting conversation friction into persistent context. Building "compressed histories of agent failures" that evolve from project learnings.

[pe-05]

##behavioral-pattern-analysis

agent failure studies · constraint design

Studying how agents fail to understand why. Converting failure patterns into behavioral constraints that prevent entire categories of errors.

[pe-06]

##counter-argument-design

steelman prompts · challenge loops

Building structured disagreement into agent workflows. Forcing agents to argue against their conclusions before presenting them — L3 behavioral engineering.

###agent-tooling

The infrastructure agents work inside of — local CLI, MCP, parallel orchestration.

[at-01]

##ai-sdlc-tooling

slash commands · registered subagents · output design

Designing the workflows engineering teams use to ship AI features safely. Slash commands, registered subagents, output design as a first-class concern, schema-bounded contracts. The meta-tools, not the agents.

[at-1b]

##epic-drain-orchestration

dependency graphs · computable readiness · parallel lanes · autonomy dial

Looping N parallel agent lanes over a blocked-by ticket graph until the epic drains: readiness derived from the graph, reconcile-first resume (a mid-drain context wipe costs nothing), per-slice verification tiered to risk, and an L0–L3 autonomy dial with hard ceilings the agent cannot raise.

[at-02]

##cdp-self-verification

Puppeteer · Chrome DevTools Protocol

Enabling agents to see and interact with the UI. Local CLI tools have far less overhead than MCP for autonomous debugging workflows.

[at-03]

##parallel-worktree-orchestration

port management · CDP integration

Spinning up isolated worktrees for parallel AI agents with deterministic port allocation. Agents start and work reliably by design.

[at-04]

##MCP-server-integration

Remote MCP · tool exposure

Exposing tools to agents as MCP servers. Figma Remote MCP for design integration, custom CLI tools for validation and verification.

[at-05]

##llm-driven-automation

launchd · perl · structured prompt pipelines

Health-check pipelines delivering structured notifications via launchd-scheduled diagnostics. Multi-line prompt substitution via perl + env vars. Self-locating data files for scripts deployed outside the repo. Autonomous PM-style workflows.

###production-stack

What ships the AI features once the agent's work is done.

[ps-01]

##frontend

React 19 · Next.js · Vite 7 · TypeScript

Building responsive and interactive user interfaces with modern React features, Next.js for optimal performance, and Vite for fast development.

[ps-02]

##backend

FastAPI · Python 3.12 · Node.js · ASP.NET Core

Creating robust server-side applications with FastAPI microservices, async programming, and clean architecture.

[ps-03]

##async-python-at-scale

asyncpg · asyncio.gather · SQLAlchemy AsyncSession · Celery

asyncpg, asyncio.gather concurrency-safety, SQLAlchemy AsyncSession lifecycle. Familiar with the asymmetries that matter in production — what SQLite tolerates that asyncpg crashes on, where Loguru silently swallows extra= kwargs, when a bound async session can and can't be shared.

[ps-04]

##databases

PostgreSQL 16 · SQLAlchemy 2.0 · Supabase · SQL Server

Designing and implementing efficient database schemas with async ORMs, migrations (Alembic), and secure data management.

[ps-05]

##cross-boundary-debugging

Pydantic / SQLAlchemy / FastAPI / React / TypeScript

Production root-cause work across Pydantic, SQLAlchemy, FastAPI, React, TypeScript. Multi-layer defenses for schema invariants (Alembic clamp + DB constraint + Pydantic + read-time helper). Backend/frontend parser parity (snake_case ↔ camelCase, JSON-escape normalization). Migration safety on existing rows.

[ps-06]

##ui-ux-systems

Tailwind CSS 4 · Radix UI · Storybook · Figma Code Connect

Crafting beautiful and intuitive user interfaces with modern design principles, component libraries, and bidirectional design system sync.

[ps-07]

##testing-quality

pytest · Vitest · React Testing Library · MSW · Playwright

Comprehensive testing strategies including unit, integration, API mocking, and Playwright e2e suites annotated to requirement IDs — coverage audited against the spec catalog, not just line counts.

[ps-08]

##compliance-engineering

STRIDE · HIPAA technical safeguards · PHI handling

Threat modeling promoted into living non-functional spec catalogs — security baseline, HIPAA overlay, PHI-handling rules — enforced at the pipeline's review gates and tracked as a requirement-cited backlog. Compliance by construction, not audit archaeology.

###higher-order

Dispositions — how I think about engineering teams, not just code.

[ho-01]

##cross-team-pattern-extraction

survey · identify · encode

Surveys other teams' prompt suites and tooling, identifies what travels and what's team-specific, encodes shared patterns into reusable tooling. The meta-skill is knowing which patterns survive contact with a different codebase.

[ho-02]

##ai-sdlc-innovation

meta-tools, not agents

Builds the meta-tools engineering teams use to ship AI features safely. Treats the SDLC itself as a product surface — multi-agent workflows, subagent contracts, output design, schema-first prompts.

[ho-03]

##output-design-first-class

decomposition before polish

Treats agent output presentation as a design decision downstream of work decomposition, not a polish layer. What the agent says is determined by how the work is broken up; the prompt's structure is the user interface.

[ho-04]

##bridging-creative-systems-modes

creator's default ↔ engineer's default

Comfortable in both modes — "creator's default" (conversational, exploratory, narrating) and "engineer's default" (state machines, budgets, schemas, silence-until-result). Knows which mode each task calls for.

##education

[degree-01]

##bachelors-degree-in-mathematics-and-computer-science

University of California at Riverside

##contact

// get in touch
[loc]
Hermosa Beach, CA

// open to AI engineering roles · prompt engineering · agent orchestration