nitin.palleti
← Featured work

Work project · In production

Agentic Compass

Understand. Route. Build. Prove.

A human-supervised, understand-first AI agent for GitHub Copilot: give it a Jira ticket and it returns business context, evidence-backed analysis, a routed implementation plan, real test verification and an auditable history, with every remote write approved by a human. I built it in about a week in my current role as a Senior Software Engineer at MAS Global Consulting (client: JPMorganChase, Offers team), and after senior engineering lead reviews and UAT it is in production.

8real tickets it was validated on
5services across Java and Python
73unit tests, all passing
19routes; all 61 referenced skills resolved

Professional work. Internal names, tickets and service details are left out on purpose; results are described generically.

01

Problem

Engineers kept paying the same discovery cost before writing any code: reading the ticket, finding predecessor work and pull requests, choosing the right base branch, setting up runtimes, and working out which tests actually prove the acceptance criteria.

Generic "Jira-to-code" agents skip that work. They jump straight to code, miss hidden dependencies and say the code "should pass" without running anything. Meanwhile the organization already had many specialist AI skills (security remediation, testing, API governance, infrastructure) but no front door to pick the right one and no shared format for evidence.

02

Approach: the router pivot

I started out building another Jira-to-code agent. Then I realized capable specialist skills already existed. What was missing was understanding, routing and evidence.

So I turned Agentic Compass into an orchestrator: it understands the ticket first, then deterministically routes the domain work to the existing specialist skills instead of duplicating them. The strictest child-skill guardrail always wins, and the router never inherits the union of its children's permissions.

Review mode asks zero routine questions. The only mandatory human decision before coding is the base branch, and every claim is labeled VERIFIED, INFERRED or UNKNOWN with file:line or source citations.

The missing pieces were understanding, routing and evidence.
03

Architecture

  1. inputJira key
  2. askBusiness brief + acceptance criteria
  3. analysisRepo fit, history, overlapping PRs, blockers
  4. routeDeterministic route to specialist skills
  5. human"go" + verified base branch
  6. implementLocal changes only
  7. testsEach layer: what it proves and doesn't
  8. historyAppend-only event log
  9. humanConfirmed push / PR / evidence

Human decision: nothing happens past these steps without the engineer.

Small and dependency-free. Python 3.11+ standard library only, plus plain JavaScript, HTML and CSS with no framework or build step: about 5,000 lines across 7 single-responsibility modules (routing, skill resolution, a Jira fallback, repository preflight, workspaces, gated state, dashboard).

A resumable workspace per ticket, Git-excluded so it never pollutes a pull request: a summary, command proof records, versioned state, the event log, raw artifacts and Bruno API checks.

19 routes cover security findings, dependency and container vulnerabilities, component, contract and performance testing, feature work, API governance, infrastructure-as-code and an explicit "unknown" route. All 61 referenced specialist skills resolved.

A read-only dashboard with five tabs (Ask, Analysis, Implementation, Tests, History) plus Commands, bound to loopback, with secret redaction and scoped per repository.

04

Guardrails & governance

05

Results

Validated on 8 real tickets across 5 services before production rollout. Across them, the most useful output was often a reason to stop: it surfaced wrong ticket assumptions, overlapping pull requests, diverged branches, cosmetic security fixes and missing dependencies before coding, instead of guessing.

06

Tech stack

Agent
GitHub Copilot agent skills, MCP (Jira) with a bounded-retry CLI fallback, specialist skill routing
Code
Python 3.11+ standard library, plain JavaScript / HTML / CSS, no dependencies
Verification
Maven, JaCoCo, Bruno (API checks), component, contract, coverage and performance test layers
Quality
73 unit tests; two-layer evals (skill-selection prompts, routing fixtures)
07

What I learned

  1. Check what already exists before building. The biggest design win was not writing another code generator: the specialist skills existed, and the gap was understanding, routing and evidence.
  2. Stopping is a feature. On real tickets, the most valuable result was often a reason not to code yet: a wrong assumption, an overlapping PR, a fix that would only have been cosmetic.
  3. Say what a test doesn't prove. Recording what each test layer proves, and what it doesn't, keeps unit, local, deployed and production evidence from being confused.
  4. Small is a safety property. Standard-library code with no dependencies means no dependency-scanning overhead and a small attack surface; a loopback-only, read-only dashboard and human-approved writes keep the risky actions with people.
08

What's next

Talk to me about it