<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: akash singh</title>
    <description>The latest articles on Forem by akash singh (@akash_singh_9936).</description>
    <link>https://forem.com/akash_singh_9936</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3880496%2Fbe54218e-f1b8-4a66-963b-388b8fb243f7.jpg</url>
      <title>Forem: akash singh</title>
      <link>https://forem.com/akash_singh_9936</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/akash_singh_9936"/>
    <language>en</language>
    <item>
      <title>I Built an AI System That Delivers PR-Ready Code Across 80+ Microservices</title>
      <dc:creator>akash singh</dc:creator>
      <pubDate>Sat, 18 Apr 2026 12:08:17 +0000</pubDate>
      <link>https://forem.com/akash_singh_9936/i-built-an-ai-system-that-delivers-pr-ready-code-across-80-microservices-48hh</link>
      <guid>https://forem.com/akash_singh_9936/i-built-an-ai-system-that-delivers-pr-ready-code-across-80-microservices-48hh</guid>
      <description>&lt;p&gt;I'm a software engineer at a fintech company with 80+ microservices. I built a structured AI system around Claude Code that takes an epic from description to PR-ready code — while I stay in control of every decision.&lt;/p&gt;

&lt;p&gt;Here's how it works, why I built it, and what it actually changed.    &lt;/p&gt;

&lt;p&gt;---                                                                   The Problem With Microservices at Scale A single product epic at Propelld can touch 5 to 10 services simultaneously. Before I built this system, the pain was predictable:                                                                                                &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dependencies got missed mid-sprint
&lt;/li&gt;
&lt;li&gt;Architecture decisions lived in Slack and died there
&lt;/li&gt;
&lt;li&gt;Code review surfaced patterns that should have been caught in design&lt;/li&gt;
&lt;li&gt;The same mistakes repeated across epics because nobody remembered what was decided three months ago
                                                                                                               Standard tools don't solve this. Copilot suggests the next line. ChatGPT gives you a plan. Neither knows your codebase, your service boundaries, or your team's conventions.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I needed something that could reason about my system — not a generic one.                                        &lt;/p&gt;




&lt;p&gt;What I Built&lt;br&gt;&lt;br&gt;
                                                                                                                   An AI-assisted delivery system built on top of Claude Code (Anthropic's CLI for Claude). Not a side project. Not open source. Just something the team needed.&lt;br&gt;&lt;br&gt;
                                                                        The system takes an epic from description → code analysis → architecture decision → implementation → PR-ready code.                                                                 &lt;/p&gt;

&lt;p&gt;My role: make decisions, review diffs, raise the PR.&lt;br&gt;&lt;br&gt;
The system's role: everything else.&lt;br&gt;&lt;br&gt;
---                                                                                                              The 6-Phase Pipeline                                                  &lt;/p&gt;

&lt;p&gt;Every phase has a hard human gate. The AI cannot proceed until I explicitly approve.&lt;/p&gt;

&lt;p&gt;Phase 1 — Service Identification                                                                                 &lt;/p&gt;

&lt;p&gt;The system reads a service-index.json — a curated map of what each of the 80+ services does — and identifies which services the epic touches. No source code read yet. Just topology.                                      Then it stops and asks clarifying questions.                                                                     &lt;/p&gt;

&lt;p&gt;Phase 2 — Deep Code Analysis&lt;br&gt;&lt;br&gt;
                                                                        A sub-agent dives into actual source code. It finds patterns, import conventions, error handling styles, and inter-service dependencies. Everything gets saved as checkpoint files — JSON and Markdown artifacts that carry context forward without re-running the analysis. Then it stops and surfaces a summary.                                                                            &lt;/p&gt;

&lt;p&gt;Phase 3 — Architecture Options&lt;br&gt;&lt;br&gt;
                                                                        The system presents two or three architecture approaches with trade-offs. Pros, cons, complexity, risk. I choose. The AI never picks for me — this is a hard rule in the system prompt.&lt;/p&gt;

&lt;p&gt;Phase 3.5 — Decision Records&lt;br&gt;&lt;br&gt;
My choice gets saved as an Architecture Decision Record (ADR). Future epics reference past decisions automatically. This is how institutional knowledge stops dying in Slack.&lt;br&gt;
                                                                                                                   Phase 4 — Implementation Guide&lt;br&gt;&lt;br&gt;
A second agent generates a full implementation guide: BEFORE/AFTER code diffs, file paths, service mapping, story points per task. This happens before a single line of production code is written.&lt;br&gt;
                                                                                                                   Phase 5 — Handoff Options&lt;br&gt;&lt;br&gt;
  I choose how to proceed:                                                                                         &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI-guided execution with me driving&lt;/li&gt;
&lt;li&gt;TDD mode (AI writes tests first, then code)
&lt;/li&gt;
&lt;li&gt;Take the guide and go fully manual
                                                                                                               Phase 6 — Code Generation (TDD)
If I pick TDD mode, the AI writes code in an isolated workspace — never directly in the microservices directory. I review the diff. I raise the PR. No autonomous commits. No auto-formatting. No surprises.
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;The Architecture That Made It Work: Agents and Skills&lt;br&gt;
The heavy lifting doesn't happen in the main conversation thread. That was the key insight.&lt;br&gt;
I built custom agents and skills that run in parallel — like a lead engineer delegating to specialists:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One agent explores the service graph
&lt;/li&gt;
&lt;li&gt;Another analyzes source patterns&lt;/li&gt;
&lt;li&gt;Another generates the implementation guide
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each runs in its own context. Only the summary returns to the main thread.                                       &lt;/p&gt;

&lt;p&gt;Result: token usage dropped from ~75,000 to ~15,000 per epic. The main conversation stays clean enough to reason about.                                                                &lt;/p&gt;

&lt;p&gt;---                                                                   The Part People Underestimate: Pattern Matching&lt;br&gt;
This isn't vibe coding.&lt;/p&gt;

&lt;p&gt;Before generating any code, the system reads the existing codebase and extracts:                                 &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Brace style (Allman — braces on new lines, mandatory at Propelld)
&lt;/li&gt;
&lt;li&gt;Import patterns (import { logger } from "../config/logger" — not CommonJS requires)&lt;/li&gt;
&lt;li&gt;Error handling conventions (formatException(error) — not console.error)
&lt;/li&gt;
&lt;li&gt;Service client usage (&lt;a class="mentioned-user" href="https://dev.to/propelld"&gt;@propelld&lt;/a&gt;/service-clients — never raw HTTP calls)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Code that comes out matches what's already there. It doesn't invent new conventions. It follows what exists.     &lt;/p&gt;

&lt;p&gt;---                                                                                                              What Actually Changed After a Month                                   &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dependencies caught before a single line of code is written&lt;/li&gt;
&lt;li&gt;Architecture decisions documented and automatically referenced in future epics&lt;/li&gt;
&lt;li&gt;One engineer delivering PR-ready code across multiple services per sprint
&lt;/li&gt;
&lt;li&gt;End-to-end implementation flow for all major feature types&lt;/li&gt;
&lt;li&gt;No need to download each service manually, I have created start.sh which download all the service into a folder and letter Agents can refer those services for analysis.
                                                                                                               ---                                                                   What I'd Tell Anyone Thinking About This
                                                                    The system is only as good as the structure you impose on it. Unconstrained AI in a complex codebase is noise.
Constrained AI with explicit phase gates, checkpoint artifacts, and pattern-matching is leverage.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI isn't replacing judgment. It's handling the grunt work — so judgment is the only thing I'm spending time on.                                                                   &lt;/p&gt;

&lt;p&gt;That's the trade worth making.                                        &lt;/p&gt;




&lt;p&gt;Have you built structured AI workflows into your engineering process? I'm curious what's working and what isn't — drop it in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>claude</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
