I build software that shows its work.

I'm Om Prakash Reddy, a software engineer. What I build runs its own claims before it tells you they're true.

Three things I've built

Loki

An AI on-call engineer. When an alert fires, Loki reads the metrics, logs and recent deploys and forms a theory. Then it tries to reproduce the failure in a sandbox before it reports anything.

A second model checks every claim against the evidence. Only verified findings go into Loki's notebook, so it never learns from its own mistakes.

  • Found 14 of 15 incidents on a held-out test suite I built (a demo system, not production)
  • Takes alerts from Sentry, Datadog, PagerDuty and Grafana, and reports to Slack
  • Hands the fix to Claude Code over MCP
#incidents · Lokiposted

Checkout errors up 38x since 14:02

Cause
deploy v2.5.0 reads order["coupon"], which is absent when there's no coupon
Proof
replayed POST /charge in a sandbox v2.4.0 200 OKv2.5.0 500 KeyError
Critic
3 of 3 claims backed by evidence
Fix
guard with order.get("coupon"), sent to Claude Code
2 min 04 s · about 3 cents

Posted to #incidents, only after every claim checked out.

14:02:00drag to replay14:04:04

$ promptly "parse the dates in invoices.csv"

invoices.csv · 1,205 rows, first 3 shown
invoicedateparsed
INV-041712/04/20252025-04-12
INV-041831/04/2025None (logged)
INV-041918/04/20252025-04-18

Drag a date into row 2, or tap one.

parse_dates.pyattempt 2 · passed
FMT = "%d/%m/%Y"
def parse(s):
try:
d = datetime.strptime(s, FMT)
except ValueError as e:
log.warning("skipped: %s", e)
return None
return d.date()
writingparse_dates.py
runningpython parse_dates.py
ValueError: day 31 must be in range 1..30 for month 4 in year 2025
fixingskip rows that won't parse, and log them
runningpython parse_dates.py
skipped: day 31 must be in range 1..30 for month 4 in year 2025
1,204 rows parsed · 1 skipped and logged
donethis code has already run once

Replayed in your browser. The parser really runs on your date; the fixes are pre-written.

Promptly

An AI coding tool that runs the code it writes. When the code fails, Promptly reads the error, fixes the code and runs it again. You get code that has already worked once, not code that only looks right.

Tara

An AI that interviews job candidates by voice. It reads the job description and the candidate's resume, eases in like a person would, then asks about the work on the resume.

It doesn't take an answer at face value. If someone says "we" the whole way through, it asks what they did themselves. If they talk in theory when asked for an example, it asks for a real one. If an answer contradicts an earlier one, it brings that up. Everything it flags goes into the recruiter's report, with the evidence.

  • Talks in real time over LiveKit, with swappable speech and language models: Deepgram, Cartesia, OpenAI, Gemini, Sarvam
  • Screens resumes in a background queue (BullMQ on Redis) before anyone is invited
  • Next.js and Postgres run the hiring side: job posts, applications and reports
Tara · interview · backend engineerturn 3

TaraWalk me through the database migration on your resume.

What Tara caught

  • ownership_ambiguity1.00team-language count=5, first-person count=0
  • example_evasion0.68example requested but answer stayed theoretical or lacked specifics

Score change from these signals: -0.30

Its note to itself, never said aloud

[NEXT_TURN_DIRECTIVE - DO NOT SAY ALOUD]
DECISION: PROBE (EVIDENCE)
SIGNALS: ownership_ambiguity, example_evasion
OWNERSHIP PROBE: They used team language. Pick one specific thing they claimed the team did and ask what their personal role in that exact thing was.
Do not use a generic ownership question — anchor it to their words.
Wait for clear personal ownership language before moving on.
NEXT MOVE: Ask for a concrete example, named project, or real moment from work.
QUESTION STYLE: Move from claim to proof. Ask for the exact instance, not the summary.
PROBE INTENT: Anchor your question to something specific they actually said — a project name, a number, a claim. Don't use a generic opener.

Tara, nextYou said "we moved the orders data to Postgres". Take me to one moment in that: what did you do, and when?

The checks and the routing are ported from Tara's Python and run on what you type. In a real interview a model also scores depth and words the question; this wording is an example.

How I work

I don't trust a result until something has checked it. Loki replays the bug, Promptly runs the code, and Tara asks candidates for proof. Most of my time goes into that check.

Languages
Python, TypeScript
What I ship with
React Native, Next.js, FastAPI, Postgres
AI work
Claude tool use, evals, MCP servers, sandboxed execution
Running it
Docker, Prometheus, Grafana, Linux servers
It hunts bugs on its own. Move your cursor in here and it follows you; click to let a bug loose. 0 bugs checked

What I'm doing now

I'm based in Hyderabad, India, and graduated from VIT-AP in June 2026. I'm looking for a software engineering role on a product real people use.

  1. Nov 2025 – now
    Software engineer at Just Think Technologies. Remote. The Spring Boot backend and React operations dashboard for a micro-lending platform: borrower onboarding, KYC, loans, disbursals, repayments and collections, with JWT and role-based access, scheduled jobs for interest and overdue loans, and PDF loan agreements stored on S3.
  2. Now
    Running Loki pilots. One managed Loki per team, working on that team's own alerts.
  3. Aug – Nov 2025
    SDE intern at V-Soft Consulting. Built a resume parser in Python on the OpenAI API that fills 15+ candidate fields, and helped build an HR system in Django, React and Postgres, adding PgBouncer connection pooling and HTMX updates.
  4. 2022 – 2026
    B.Tech in Computer Science, VIT-AP. CGPA 8.20. AWS Academy certificates in Cloud Foundations and Cloud Architecting.