Built since Deloitte

A working log, kept current.

7 projects since Deloitte: products shipped on Cloud Run, a CLI on npm, lab research at Georgia Tech, and the tooling I use at IT4Causes. Each entry shows the evidence, not just the stack.

Neydran

NSE stock screener and trading journal

Solo: architecture, backend, frontend, infrastructure

A live screener for Indian equities that shows its working. Instead of a score, every result carries the rules, numbers, and failed breakouts behind it.

  • Ingests 5 years of NSE market data (3.3M+ price rows, 140 indices) into PostgreSQL and screens the Nifty 500 against an 8-rule trend template, recording every rule per stock.
  • Terraform-managed Cloud Run stack with keyless GitHub WIF deploys. CI gates on Trivy, pip-audit, and gitleaks before Alembic migrations and a health check.
  • Mandatory TOTP 2FA enforced at three layers (Next.js routes, FastAPI aal2 checks, Postgres row-level security). Chart queries cut from 1.28s to 0.09s with a composite index verified via EXPLAIN ANALYZE.
  • NSE's bot filter returns 403 to cloud IPs, so ingestion runs as a scheduled job on a home machine, watched by a Cloud Run watchdog that alerts on missed trading days.
price rows ingested
3.3M+
chart query
1.28s → 0.09s
backend tests
116

Next.js · FastAPI · PostgreSQL · Terraform · Cloud Run · GitHub Actions

INKY Workspace Helper

Chrome extension for email-security rollouts

Solo, built for IT4Causes deployers

One panel, in Google Admin console orderUS data center shown
  1. 1Hosts

    Gmail → Hosts

    • Inbound gateway host, name, port
    • Outbound gateway host, name, port
  2. 2Inbound gateway

    Gmail → Spam, phishing, and malware

    • 21 INKY gateway IPs
    • 28 Google IP blocks
    • Header regexp for spam scoring
    • 4 checkboxes on

    Leave OFF: “Reject all mail not from gateway IPs”

  3. 3SMTP relay

    Gmail → Routing → SMTP relay

    • 10 relay IPs
    • Relay description and policy

Deploying INKY into a nonprofit's Google Workspace means getting 200+ settings right, and one wrong checkbox can stop a client's mail. This extension turns that into one guided panel.

  • Covers the full deployment: hosts, inbound gateway, and SMTP relay, with every IP range, header rule, and checkbox laid out in console order.
  • Separate US and EU data-center profiles, each value sourced from INKY's documentation and dated so stale entries are easy to spot.
  • Built while leading INKY rollouts across IT4Causes' nonprofit client tenants, from pilot testing through portfolio-wide rollout.
settings per deployment
200+
console sections
3
data centers
2

Chrome MV3 · JavaScript · Google Workspace Admin

YOM

Bill-splitting app for iOS, Android, and web

Backend, AI receipt pipeline, and all infrastructure, with one co-developer

“You Owe Me”: split a bill and share it in under a minute, with no account needed for the first split or for the friend receiving it.

  • Benchmarked several OpenAI vision models on ambiguous receipts and fed their output into a pure-integer ledger engine, so money math never depends on the model.
  • Hardened the FastAPI backend for public launch: rate limiting, request-size limits, security headers, hashed one-time guest tokens, and app-store-compliant account deletion, backed by 160+ tests.
  • Production on Cloud Run with Terraform-managed WIF, Trivy-gated CI/CD, and Cloudflare DNS. Resolved 5 launch-day incidents, including a blank web app caused by an untransformed import.meta in the static bundle.
API tests
160+
launch incidents resolved
5
long-lived deploy keys
0

Expo · React Native · FastAPI · PostgreSQL · OpenAI vision · Terraform · Cloud Run

AGENTS.md library

Coding-agent framework for research, build, and review

Solo

How the AGENTS.md router turns one task into a short reading list
  1. Task

    “Add a FastAPI endpoint for split receipts.”

  2. AGENTS.md routes it to 4 of 30+ guides

    • core/clean-code.md
    • core/error-handling.md
    • domains/python-fastapi/engineering.md
    • domains/python-fastapi/api-conventions.md
  3. Before “done”

    Adversarial review: skeptics must name a concrete attack, then the definition-of-done gate.

Engineering discipline for coding agents, in plain Markdown. One router file tells the agent exactly which few guides to read for the task in front of it.

  • An ~80-line router classifies each task and hands the agent a 2–4 file reading list from 30+ guides covering core engineering rules and FastAPI, Terraform, React, database, ETL, and Ansible domains.
  • Decision-council and adversarial-review protocols in which skeptic agents must document concrete attacks before work is marked done, runnable as parallel subagents or single-threaded.
  • Neydran and YOM are standardized on its changelog, decision-record, and API conventions. It stays agent-agnostic: Claude Code, Cursor, or Codex.
line router
~80
guides
30+
files read per task
2–4

Markdown · Claude Code · Cursor · Codex

bring

Workspace-first terminal UI for dev containers

Solo

~/dataflow-api · bring

Bring a project's dev container up, take it down, inspect it, and clean up after it, without remembering devcontainer or docker syntax.

  • TypeScript CLI and full-screen TUI (Ink/React) published to npm across 6 releases through v0.3.0, managing any project's dev container by path, with ‑‑json output for scripting.
  • Adds the stop and remove commands the upstream Dev Containers CLI lacks by locating containers through devcontainer labels and managing them via Docker, spawning every command without a shell.
  • ~300 tests across a hermetic suite (fake binaries, temp state) and a real-lifecycle integration suite against Docker. Dotfiles profiles bring new containers up preconfigured.
npm releases
6
tests
~300
open source
Apache-2.0

TypeScript · Node.js · Ink · React · Docker · Dev Containers

$ npm i -g @ritvikcs/bring
npmGitHub

Multi-tenant RAG

Retrieval research, Georgia Tech D2I lab

Retrieval pipeline and model backends, with a lab teammate

Retrieval path, measured stage by stageMuSiQue multi-hop QA
  1. 1Embed the question

    Qwen3-Embedding-8B

  2. 2Search sentences

    Sentence-level index instead of whole chunks

  3. 3Lift to parent chunks

    Hits pooled back to the chunk they came from

  4. 4Generate

    vLLM or OpenAI, chosen by config

Every change ran against the benchmark; changes that regressed were reverted.

A reproducible multi-hop RAG baseline on the MuSiQue benchmark with per-user indexes, built to find out exactly where a naive pipeline loses answers.

  • Ran a step-by-step ablation (indexing granularity, context format, system prompt, generator), measuring every change on the benchmark and reverting the ones that regressed.
  • Rebuilt retrieval around a sentence-level embedding index (Qwen3-Embedding-8B) that maps each hit back to its parent chunk before generation.
  • Instrumented per-stage latency and added pluggable vLLM and OpenAI generator backends behind one config-driven pipeline.
multi-hop QA benchmark
MuSiQue
embedding model
Qwen3-8B
generator backends
vLLM · OpenAI

Python · Qwen3-Embedding-8B · vLLM · OpenAI · NumPy · Streamlit

FitAI

Adaptive AI fitness coach and HCI study, Georgia Tech CS 6641

Lead engineer on a three-person team

An LLM coach that rewrites tomorrow's workout from how sore you are today, built to test whether adaptive plans actually feel more personal.

  • Built the full stack: a Next.js app, a FastAPI coach service that checks the Supabase JWT on every route, and Postgres with row-level security across 19 migrations.
  • Tap the muscles that are sore and GPT-4o mini proposes tomorrow's swaps through a forced tool call. A validator rejects any exercise outside the 1,273-entry catalog before the plan changes.
  • Ran a within-subjects crossover study comparing adaptive AI plans against static ones, from protocol design through analysis.
study design
Crossover
exercise catalog
1,273
database migrations
19

Next.js · FastAPI · Supabase · OpenAI · Gemini