~/bpabatao
← back to index

AI-Augmented SDLC

Four AI tools built for a small team running a large fleet - one kept, one shelved on evidence, one designed and not yet run live, one shipped into its own case study - with humans keeping every approval gate.

Role
Sole author
Period
2026 - present
Stack
AWS Bedrock (Claude) · GitHub · Jira · Claude Code plugins · Python
RUNS IN CI · keptpull requestclaude reviewerhuman reviewSHIPPED · knowledge basequestionkb agentcurated firstDESIGNED · dry-run onlyticketplandraft prhuman gatesmergeSHELVED · aug 2026bedrock auto-remediation · 12 of 13 failed
A Claude reviewer runs in CI ahead of human review and a knowledge-base agent answers from curated sources first; a ticket-to-merge pipeline with human approval gates is designed and dry-run only, and Bedrock auto-remediation was shelved in August 2026

Problem

A small team, one fleet: triage, code review, and backlog grooming eat the week if you let them. The interesting question wasn't whether AI could draft a fix - it was how to wire it in so speed goes up while accountability stays exactly where it was.

Approach

Every pipeline is built around human gates. State lives in labels on the ticket and PR, so any step is inspectable and reversible.

Decisions

Architecture

Kept - review: a Claude-based PR reviewer runs in CI ahead of the human pass. It was pulled from the portal pipelines when it crashed, then restored once guarded; it now runs across the API and portal repos.

Shelved - auto-remediation: an AWS Bedrock service (Claude via bedrock-runtime) built to triage production alerts, correlate them with recent changes, and open fix PRs.

Designed - delivery: an agentic pipeline from the ticket queue to GitHub - plan, branch, implement in an isolated worktree, open a draft PR - with human approval gates between intent and merge. Dry-run on one ticket, not yet run live.

Shipped - knowledge: the Bedrock knowledge-base agent over the billing system's (Oracle Utilities CCS) documentation and data, curated-first with a flagged SQL fallback; it has its own case study.

When it went wrong

I shipped three of the tooling's public Lambda Function URLs - the auto-fix, the ECS rollback and the Bitbucket bridge - with a fallback bearer token hardcoded in the source, and never overrode it live. In August 2026 I found what that meant: the URL plus a value anyone with repository access could read was enough to invoke them.

I gave each function its own secret, removed the fallback, rotated the credentials and wrote the change up. It made shelving the auto-fix a few days later an easy call - a tool that is not earning its keep should not also be an attack surface.

Outcome

view resume ↗ (opens in new tab)email me