Sameer Chohan

↖ All work

Repo Ops Agent

An LLM agent that triages GitHub issues in production, wrapped in a validation layer that verifies every model decision before it can act.

Year2026
RolePersonal project, solo architected
StackTypeScript, Node, DeepSeek API, PostgreSQL, React, Docker, GitHub Actions
LinksSource code ↗
A

Case study

Problem

Issue triage on an active repository is repetitive work: read the issue, hunt for duplicates, label it, set a priority. I wanted to know if an LLM agent could do that job safely, where safely means there is real code, not a prompt, standing between the model and anything that mutates state.

Design

The agent runs a multi-turn tool-calling loop against DeepSeek's API. The model reads an issue, calls tools to search for duplicates or fetch related issues, sees the results, and decides on an action. The decision that shaped the whole system: every mutating action passes through a validation layer that independently re-checks the model's stated premise against the actual GitHub data before executing. The model does not get trusted. It gets verified.

The bug it caught

During testing, the model flagged an issue as a duplicate and stated the other issue was older, so the newer one should be closed. The timestamps said the opposite. The validation layer re-fetched both issues, compared creation dates, and rejected the action before anything was written to GitHub. Both the rejection and the model's reasoning are preserved in the audit log.

Shipped

Every action, whether proposed, rejected, or executed, is written to a Postgres audit log. A React dashboard replays any triage run step by step, so you can see exactly what the model claimed and what the code did about it. The full stack is containerized with Docker, with a GitHub Actions pipeline building and validating images on every push. The API runs on Railway and the dashboard on Vercel.