RSSAmplifier

Blog

ryantsuji.dev — engineering / design / product

Ryan Tsuji's personal blog

ryantsuji.devRSS feed ↗20 posts

Latest posts

When Shipping Gets Cheap, Deciding Gets Expensive: Guardrails for AI-Era Cloud Costs

We spent a week going through our AI platform's cloud bill. Cloud Run instance-based billing dropped 84%, container image storage dropped 65%. But the numbers aren't the point. When implementation gets cheap, the slowness that used to force you to ask whether something was worth building disappears with it. This is about what replaced that gate: a cost check at merge time, daily visibility, and…

GitHub Actions Getting Expensive? We Cut CI Costs to a Quarter With a One-Line Change

AI-driven development inflates CI cost on two axes at once: more runs, and more tasks you now want CI to do. We migrated our GitHub Actions runners twice, from GitHub-hosted to Blacksmith to Namespace, and measured everything along the way. Per-run CI cost dropped to roughly a quarter, p90 came down 37%, and silent never-finishing runs went from 32 to zero. Failure story included: we skipped…

AI-Native Redesign: The Principles Don't Change — Only the Machinery Does

Every organization eventually faces the same design problem: keeping important information stored, current, and reachable at scale. This post frames that as a three-node loop (creation / maintenance / consumption) and works through what redesigning it with AI as a given looks like, as opposed to bolting AI onto a human-first setup. Along the way it recasts earlier posts on cortex — code-graph,…

Observability Design for the AI Era — Reconciling PII Protection With AI Searchability, and Driving Self-Healing

Part 1 laid out four monitoring axes (application / infrastructure / CI / LLM) and the shape each one ends up in. Part 2 picks up where the data actually flows: it's production data, with PII in it. This post is about a multi-layer PII design that hashes at both write and search time with the same function, an integration surface where humans (web dashboard) and AI (MCP) share the same backend,…

Observability Design for the AI Era — Application / Infrastructure / CI / LLM, Each in Its Own Shape

The previous code-graph series was about reshaping a static analysis graph so AI could query it. The same kind of reshaping is needed on the observability side. This post walks through four axes — application / infrastructure / CI / LLM — and the deliberately different shapes each one ends up in. The design judgments worth calling out: computing Gemini cost client-side instead of from billing API,…

Making the Context Across 46 Repositories Semantically Searchable for AI

The biggest issue Part 1 left open was that AI couldn't reach the 46-repo codebase by natural-language query (the entry-point problem). This post is how I solved it — by reusing the pattern proven in db-graph (1,133-table semantic search), then layering minimal annotations only around boundary nodes. Covers the separate-branch operation that keeps engineers' daily workflow untouched, the SLO that…

Building One Knowledge Graph Across 46 Repositories With Static Analysis

A static-analysis approach to unifying 46 repositories (37 air-closet-side + 9 mall-side) of legacy production code into one knowledge graph. Why simply 'letting AI read the code' isn't enough, why I had to chase down boundary nodes (API endpoints, DB tables, Event topics), how I dealt with framework and library diversity, and what 3 months of trial and error solved or didn't solve — looking back…

AI Isn't Something to Trust — It's Something to Design

Series Final. The four mechanisms covered across this series — knowledge graph, Auto Review, Self-Healing, Recurrence Prevention — plus the non-engineer-PR application that sits on top of them, all hang off a single conviction: AI isn't something to trust; it's something to design. The 'I don't trust AI to fill in the blanks for me' framing this lives inside isn't doubt about generation quality,…

The Author Doesn't Have to Be an Engineer: How the Harness Holds Quality

Series Part 5. With the harness handling quality at the gate, the people closest to the requirements -- business-side managers, PMOs -- now open PRs to production directly, no engineer in between. Two recent examples (a deep root-cause fix and a +1,742 line feature build), the boundary of what they can and can't take on (anything on top of an existing stack vs. standing up new infrastructure), why…

Fixed Before Anyone Notices, Stronger After Every Fix: Self-Healing + Recurrence Prevention

Series Part 4. Production alerts trigger AI investigation, fix PR, auto-review, auto-merge, auto-redeploy. The same fix PR is required to add a new Guide -- a lint rule, CI guard, type constraint, or guideline entry -- so the same anti-pattern gets auto-rejected from then on. 115 Self-Healing PRs merged in the past 30 days, and the quality gates compound over time.

Human-on-the-Loop: AI Reviewing AI PRs at cortex -- 769 PRs/month while raising the quality bar

Series Part 3. The common critiques of AI-assisted development -- 'review becomes the new bottleneck' and 'AI code drops the quality bar' -- largely don't apply when AI also does the reviewing. Full walkthrough of our pipeline: webhook -> cpg context -> AI review with [Graph]/[Doc]/[Impact] tags -> auto-fix by a separate AI -> re-review -> auto-merge -> parallel deploy. 769 PRs merged in 30 days,…

The Heart of the AI Harness: A Knowledge Graph of the AI, by the AI, for the AI

Series Part 2: how we built cortex-product-graph (cpg) — a unified knowledge graph of code, docs, DB schemas, and infrastructure for the cortex AI platform. Build pipeline with JSDoc/Pulumi/docs as SSoT, plus the Runbook tool-design pattern that guides AI through the graph.

Building a Real AI Harness: Auto-Reviewed PRs, Self-Healing Ops, and Non-Engineer Contributors

Series intro to cortex, airCloset's internal AI platform that auto-reviews PRs, self-heals ops, and lets non-engineers ship apps. Why harness engineering matters now.

Graph RAG Isn't a One-Shot Anymore — The Case for Agentic Graph RAG MCPs

Vector RAG and one-shot Graph RAG both flatten the search step. Agentic Graph RAG hands the graph to an LLM as an MCP and lets it traverse relationships iteratively.

Cutting Self-Built MCP Server Token Usage by 90% — The Parking Pattern

MCP responses fill the context window fast. The parking pattern stores heavy payloads externally and returns only a key — about 90% token savings in production.

Bridging 'I Want to Build' and 'I Want to Publish Safely' for Non-Engineers — Sandbox MCP

Non-engineers can build AI apps, but publishing safely is still gated by engineers. Sandbox MCP gives them a one-command path to deploy Web/API/DB/Cron with guardrails.

Still Measuring Initiative Impact Manually? How We Used Graph RAG + MCP to Make It Explorable

Measuring 'did that initiative actually work?' usually means manual SQL spelunking. We modeled initiatives × KPIs as a graph and let an LLM traverse it via MCP.

How We Built an Automated Meeting Intelligence System with Google Meet, Slack, and RAG

AI summaries aren't enough — context dies when a meeting ends. We pipe Google Meet recordings to Slack, transcribe everything, and make history queryable in natural language.

We Built 17 MCP Servers to Let AI Run Our Internal Operations

Overview of 17 MCP servers we built in three months at airCloset, covering DBs, infra, docs, project management, observability, CI/CD, and even non-engineer code edits.

Democratizing Internal Data — Building an MCP Server That Lets You Search 991 Tables in Natural Language

Internal data lives across 15 schemas, 991 tables, 11 SQL DBs and 6 MongoDBs. DB Graph MCP lets Claude search and query the whole thing in natural language.