Live assistant

Ask about Andrew

Ask about his AI work, his roles, or paste a job description. Each question stands on its own. It reads his resume and shows the notes it opened.

5 questions left today

Start with his agents, or paste a role to see where he fits.

Technical skills

AI applications
OpenAI Chat Completions and Responses APIs, Gemini API, Vercel AI SDK, tool calling, structured outputs, strict JSON Schema and Zod, few-shot grounding, multimodal image editing.
Agent context
Open Knowledge Format, AGENTS.md and CLAUDE.md, task routers, path-scoped rules, knowledge graphs, CI knowledge validation, documentation provenance.
AI-assisted delivery
Claude Code, Codex, Cursor, MCP servers, plugins, hooks, and skills, multi-agent orchestration, worktrees, cross-model review, adversarial testing.
Backend and data
C#, ASP.NET Core, TypeScript, Python, Node.js, SQL Server, PostgreSQL and Supabase, Entity Framework Core, REST, GraphQL, Kafka.
Frontend and cloud
React, Angular, Next.js, Astro, Azure, AWS, Cloudflare Workers, Docker.
Security and testing
OAuth 2.0 and OIDC, PKCE, SAML, Azure AD B2C, Auth0, Key Vault, FHIR and SMART on FHIR, xUnit, Vitest, GitHub Actions.

What I work on

AI agents and LLM integration

Tool-calling assistants, MCP servers, and coding-agent plugins. Typed tools, bounded loops, streamed tool steps, and role limits. Day-to-day delivery with Claude Code, Cursor, and Codex, including cross-model review.

Healthcare data and integrations

Tenant-aware SMART on FHIR authorization on a .NET and Aidbox FHIR R4 platform: scope and role constraints, token exchange, launch contexts, introspection, and membership. Provider and administration apps in React, TypeScript, TanStack, and Tailwind CSS with SMART/PKCE sign-in.

Identity and security

SAML and OIDC/PKCE single sign-on, just-in-time provisioning, tenant access control, Auth0, Azure AD B2C, and Azure Key Vault. Includes an Okta to Azure AD B2C handoff for a state social-services integration.

Distributed backend

.NET APIs and Kotlin/Kafka services for event-driven fulfillment and third-party data delivery, plus an import service with production monitoring on AWS and Docker.

Selected work

Coding-agent plugins and context

Coding agents working in a healthcare codebase needed a required reading list and a way to catch unsafe changes. I authored okf-live and okf-lens, two TypeScript Claude Code plugins that track agent and subagent document reads, expose an MCP task-route tool, and check for secrets, protected health information in logs, and architecture violations. I tested bypass attempts in headless and interactive sessions.

The context they route is Open Knowledge Format for the platform: 100+ concepts, about 30 architecture decision records, task routing, shared AGENTS.md and CLAUDE.md instructions, path-scoped rules, and CI checks on metadata and links. AI-authored documents stay in a human-verification state until someone checks them.

A bounded questionnaire assistant

Authors needed help inside the product without unrestricted writes. I built a GPT-4o prototype in .NET and Angular: a custom Chat Completions client, about 20 domain tools, a six-round cap, and Angular streaming over server-sent events. Update and delete tools stay off the list. The tools cover rule simulation, publish-readiness checks, and role-restricted publishing. This is a working prototype, not a shipped product feature.

Round 6 of 6

Conversation

User

Is the intake questionnaire ready to publish?

Assistant

Not yet. Two branches can never be reached, so publish-readiness fails. Here are the questions on those branches. Removing them is your call.

User

Push it to production anyway.

Assistant

I can't push to production with your role. An administrator can run that step.

Agent trace

Round 1 of 6. tool: find_questionnaire("intake")

found, status draft

Round 2 of 6. tool: simulate_rules(intake)

2 branches never reached

Round 3 of 6. tool: check_publish_readiness(intake)

not ready, unreachable branches

Blocked. model wants: delete_question(...)

not on the tool list. Nothing was changed.

Round 4 of 6.

answer streamed to the author

Denied. Round 5 of 6. tool: push_to_environment("production")

denied, role required

Stopped.

answer streamed. Hard cap is 6 rounds.

Replay of the control flow, not a live model. Tool names are simplified, and no customer data is shown.
  1. Request

    The author asks in the app.

  2. Tool list Stop

    About 20 typed tools. No update or delete tools exist.

  3. Role check Stop

    Cross-environment push needs the right role.

  4. Round cap Stop

    The loop stops after six rounds.

  5. Streamed result

    Each tool step shows up as it runs.

Single sign-on for a healthcare partner

A healthcare partner needed IdP-initiated sign-on into a multi-tenant product, including provisioning. I built SAML single sign-on with tenant mapping and Microsoft Graph provisioning, and moved the signing keys into Azure Key Vault. It has been in production since early 2024.

An always-on operations agent

I designed and operate a Claude Code agent, with MCP and Python, used daily by business partners and two outside clients for email and guest-message drafting, pricing briefs, research, and web development. Resources are isolated across 20+ Discord channels. Outbound messages require human approval, and each channel's sender address is locked in code and checked with Google OAuth.

A separate scheduled agent researches, writes, and self-scores sourced articles, then delegates translation into five languages to parallel subagents. It has published 40+ posts to a production hospitality site since September 2026. The validator scores the draft. It is not a hard gate on publishing.

How I build with AI

I use Claude Code, Cursor, and Codex for architecture, implementation, debugging, and cross-model review. The controls sit in the repository.

Experience

  1. Nov 2023 to Oct 2026

    Senior Software Engineer, Opeeka

    Coding-agent context and plugins, a bounded GPT-4o assistant prototype, production SAML, and SMART on FHIR APIs.

  2. Apr 2023 to Oct 2023

    Senior Software Engineer - Lead, BENlabs

    Browser extensions across Angular, React, and Vue, with .NET services and JWT authentication for AI integrations.

  3. Sep 2020 to Dec 2022

    Senior Software Engineer, Filevine

    Owned the Import service. Angular and Svelte front-end workflows, and mentorship on architecture and APIs.

  4. Nov 2019 to Sep 2020

    Senior Software Engineer, Young Living

    Seven Kotlin/Kafka microservices for fulfillment, from design through production, with Splunk monitoring and offshore coordination.

  5. May 2017 to Nov 2019

    Senior Software Architect and Engineer, Alpine Testing Solutions

    Legacy platform redesign, WCF services moved to GraphQL, and mentoring for remote engineers.

  6. 2013 to 2017

    Earlier

    .NET and Angular at Jeunesse Global, Megaplex Theatres, Virtuoso Branding, and Gold Point Systems.

BS, Computer Science, Weber State University.

How I work

Contact

Email or LinkedIn is the best way to reach me.