RISHET MEHRA

Developer tools · Open source

I build tools
people install.

codex-spend , 1,474 npm downloads in 12 months. Local-only, strangers keep installing it. No auth, no telemetry.

Currently looking for internships where I ship , not a research audience, a user audience.

- PRs · - merged · github.com/Rishet11 · live via GitHub API.

Every number is a link to its proof.

Rishet Mehra, GitHub avatar
Rishet MehraAug 2026
-PRs
-merged
-repos

live via GitHub API · github.com/Rishet11

I plan before I prompt, audit every diff, and keep budgets small. I ship tools people install, with every number linked to proof. Paxel report has the detail.

Featured work

Four tools, four different shapes.

Each one links to proof. Each one names a limitation.

01 / codex-spend live on npm · terminal

See what Codex actually burned.

A local CLI that parses Codex sessions and shows token burn by model and by file. 1,474 downloads in 12 months, no telemetry, no auth.

Stack: Node · Commander · no deps
  • Parses Codex JSONL on disk , no API call needed
  • Groups by model and by file so the costly file stands out
  • 7-day and 30-day windows with one flag
  • Zero config , runs from npx
  • No telemetry, no auth, no network
  • Built for the question I kept asking: where did tokens go?

Limitation: only as good as Codex's own session logs. Breaks if the log format shifts.

src/parse.js , the core
// read local Codex sessions, sum tokens by model
for (const s of sessions) {
  tokens[s.model] = (tokens[s.model]||0) + s.usage.total;
} // no network, no auth , just files on disk
Read the code on GitHub →
codex-spendlocal · no telemetry
$ npx codex-spend --last 7d
 12 sessions · 1.2M tokens
  gpt-4o  820k  ████████░░
  gpt-4o-mini  380k  ███░░░░░░░
 priciest file: src/eval/harness.py  41k

Local-only. Parses the session files already on disk.

02 / VidWise · eval harness

Eval harness · no metric until reproduced
chunk recall@KWilson CI · versioned run artifact required
citation accuracyGrounding check against transcript spans
negative-query abstentionRefuse when video does not contain answer
Custom harness, not RAGAS. Python 3.11Repo →

Evaluation before claims.

RAG over video transcripts. The interesting part is the custom eval harness , defined metrics, Wilson intervals, abstention tests, and a policy of no committed numbers until a versioned run reproduces them.

Stack: Python · custom harness · not RAGAS

  • Chunked transcript retrieval , not whole-video prompts
  • Recall@K with Wilson confidence intervals
  • Citation must ground to a transcript span or it fails
  • Negative queries: must abstain, not hallucinate
  • Versioned run artifacts , no metric without a reproducer
  • Plain Python , no RAGAS dependency to hide behind

Limitation: chunking is heuristic. Long, noisy transcripts still degrade recall.

eval/harness.py , the core
# Wilson interval on recall , one run is not a claim
recall = hits / total
lo, hi = wilson_ci(hits, total, 0.95)
# only commit if hi - lo is small and run is versioned
Read the code on GitHub →

03 / LeadPilot ● live app · live app - not a demo

Live SaaS - open it, run it, keep the data.

Self-serve B2B lead generation you can clone and run today - not screenshots. FastAPI + Next.js 16 with worker, Postgres-backed, batch + cron, ships with make dev / docker-compose up. Verified via /tmp/LeadPilot - full API, auth, and exports, not a mock flow.

Stack: Next.js 16 · FastAPI · Gemini · Apify · Docker · Railway

  • Multi-source discovery: Google Maps via Apify + Instagram + email crawler on real domains
  • Gemini intelligence: smart scoring + review-grounded outreach - configurable model via env
  • Batch + daily cron: python main.py --city "London" --agent --find-emails and run_daily.sh
  • Full product: api/ + frontend/ + worker.py - make dev starts all three
  • Auth + rate limits + exports: Google login, paginated leads, CSV export, status pipeline
  • Live architecture: vercel.json (sin1), railway.toml, docker-compose - one command to run

Limitation: Apify + Gemini are required for live scrape - without keys, guest preview runs in demo mode (GUEST_PREVIEW_MODE=demo).

Test it locally - verified, not mocked
# clone + run - frontend, api, worker (one command)
git clone https://github.com/Rishet11/LeadPilot.git
make dev  # api :8000 + worker + frontend :3000
# or
docker-compose up --build  # same stack, containerized
Read the code on GitHub →
LeadPilot - live · testable now
StackFastAPI + Next.js 16
Runmake dev
Deployvercel · railway · docker
Clone & run →

Verified in /tmp/LeadPilot · 36 files · pytest suite · not a demo.

↗ live app - clone it, it runs

04 / OmniCommand · omx npm: omx-cmd · interactive demo

The terminal tool for every format.

Local-first file conversion CLI - npm install -g omx-cmd, run omx. Routes docs via pdfjs-dist / built-in docx → markdown, images via Sharp, media via ffmpeg-static. Plain phrases like omx convert report.pdf to markdown - no FFmpeg/Pandoc flags to memorize. Cloned to /tmp/OmniCommand, live at rishet11.github.io/OmniCommand.

Stack: TypeScript · Node 20+ · Sharp · ffmpeg-static · pdfjs-dist · optional Gemini --refine + MCP

  • omx doctor - verifies ffmpeg, sharp, pandoc, Node version in one line
  • omx convert / compress / trim / extract / resize - natural language, batch first-class
  • Batch + scripts: --dry-run, --json, --quiet, progress + ETA on long FFmpeg jobs
  • Smart outputs: compress PNG→WebP, absolute 200kb targets via quality search, EXIF respected
  • Local by default; --refine opts into Gemini Vision OCR for scanned / two-column PDFs
  • MCP server dist/mcp.js - same workflows over stdio for agents

Limitation: scanned / complex-script PDFs without unicode maps warn and suggest --refine; otherwise text-layer only.

cli/src/index.ts - the real entry
#!/usr/bin/env node  ·  omx-cmd 1.1.0
program.name('omx').description('The terminal tool for every format.')
  .option('--json') .option('--dry-run') .option('--overwrite')
// convert / compress / trim / extract / resize / doctor / config
Read the code on GitHub →
bash - omx● interactive
$
Try:

Replica of the demo at rishet11.github.io/OmniCommand - same doctor / convert / compress flows, extracted from src/components/Terminal.tsx. Click chips or type - progress animates, bash window on deploy does the same.

Source: /tmp/OmniCommand/src/components/Terminal.tsxGitHubLive

Open source

PRs that got merged.

Live from GitHub , author:Rishet11. Includes Graphify-Labs/graphify where available. Filter by type, every card links to the PR.

,total
,merged
,open
Live via GitHub API , fetching…

Fetching PRs from GitHub API…

mergedcodex-spend

Token burn by model , grouped table

Added per-model breakdown to the summary table. Small change, most-used flag.

PR #12View →
mergedVidWise-AI

Wilson CI on recall@K

Confidence intervals on the eval harness so a single run does not over-claim.

openLeadPilot

Bulk enrichment queue

Queued bulk runs so rate limits do not drop leads. In review.

mergedomx-cmd

Help output alignment

Fixed column alignment for --help on narrow terminals.

Open source matters , PRs fetched live from api.github.com/search/issues?q=author:Rishet11+type:pr. Graphify-Labs/graphify + T3 contributions appear here when present. View all on GitHub →

Experience

Where I shipped.

Two internships , data pipeline reliability at Zanista AI and large backlog triage at BharatFare. Both taught me how agents and pipelines fail and how to make them observable.

Resume , one page, updated Aug 2026 pdf

Download

AI Research & Development Intern · Zanista AI (UK)

Jul 2025 – Sep 2025

Built scrapers with Scrapy, Playwright and Selenium for JS rendered pages behind paywalls and auth, with retries and rate limit handling to ingest 10,000+ articles daily. Parsed messy HTML and JSON with regex, deduplicated and normalized into PostgreSQL with schema validation, and built LLM pipelines for summarization, NER, sentiment and topic clustering. Lens: reliability under rate limits, observability, and eval before claims.

Zanista AIScrapyPlaywrightPostgreSQLLLM pipelinesReliability

UI/UX & Web Development Intern · BharatFare Travel & Technologies (UK)

Nov 2025 – Jan 2026

Triaged a 281 issue backlog and shipped 40 plus fixes across core user flows, cutting page load times and stabilizing critical paths. Ran competitor analysis that surfaced 3 UX gaps adopted into the roadmap. Lens: agent orchestration needs the same triage discipline, prioritize, ship small, measure load time impact.

BharatFareBacklog triage40+ fixesPerformanceUX

Co-Head · E-Cell DTU

2024 , present

Ran E-Cell DTU events and builder weeks. Shipped the site and the ops.

LeadershipOpsEvents

DTU · Math & Computing

'27

B.Tech, Delhi Technological University. Building between classes.

DTUMCE

Shelf

Wins, linked to proof.

Certificate scan per win. Count equals scans.

2026 · certHackathon win , one line, one scanscan →
pending assetHackathon wins and notes to building appear when certificate scans are supplied. See ASSETS_NEEDED.md

Writing

Notes on building.

Why I kept codex-spend local

The fastest way to kill a CLI is to add auth. The token data is already on disk , parse it there. That constraint shaped the whole tool.

Aug 2026

Proof

less more
github.com/Rishet11 →

Loading contributions…

anybody can write code, but writing code humans can understand

built