01 — Work
Things I've built and shipped
AI-powered spaced repetition, built end to end
Upload a document; Manthan turns it into concept cards, tags them, works out
which ideas depend on which, and shows you the whole structure as a 3D graph
you can fly through. I own it — architecture, roadmap, billing, all of it.
Knowledge mode
A roadmap view built on a Sugiyama-style layered layout — topological leveling,
barycenter crossing-reduction, coordinate straightening — so a deck's prerequisite
structure reads at a glance. Ranked by a custom leverage metric:
downstream value unlocked per unit of reading cost.
The engine
A stateless Python/FastAPI microservice using DSPy for card structuring and tagging,
behind a Kotlin/Spring Boot API. SM-2 scheduling for reviews, real-time card creation
through a chat interface, and a direct JSON/Markdown import path.
The unglamorous half
Keycloak SSO across multiple realms, and a subscription billing system written from
scratch — Razorpay and Dodo Payments, webhook-verified activation, prorated plan
switching.
Agent-native
An MCP server at api.sirune.tech/mcp — decks and cards can be listed and
created straight from Claude Code, Claude Desktop, or any MCP client. The tool works
without opening the tool.
DSPy · FastAPI · Kotlin/Spring Boot · Three.js · PostgreSQL · Keycloak · Cloud Run · MCP
VeriSolve
contributor
Rust-native agentic hardware-verification harness · SiRune
A 26-crate Rust workspace — agent loop, permission and sandbox runtime, tool execution.
I contributed the Python side of it.
The DSPy bridge
A bounded Python stdio JSON-RPC worker exposing five tools to the Rust agent core,
including UVM log analysis. The split is the point: every dangerous capability —
shell, file writes, EDA submission — stays in Rust, while bounded reasoning is
delegated out to Python.
Into the harness
Wired worker launch into the TUI's turn-executor, added /agent <name>
for switching agents mid-session, fixed transcript auto-follow during token streaming,
and hardened the log analyzer's regex fallbacks.
Rust · Python · DSPy · JSON-RPC · TUI
Gridweave
private repo
An agent that writes React components and shows them to you instantly
A DSPy ReAct agent — Gemini, esbuild, SSE streaming — that generates, compiles, and renders
components live in the browser. The interesting part isn't the generation; it's the
self-optimizing prompt-evolution loop (GEPA) that measurably improves
output quality over iterations through an evaluation feedback loop, instead of leaning on
one hand-tuned prompt. Built for local and trusted-network use — no hosted demo by design.
DSPy · Gemini · esbuild · SSE · GEPA
Spaced repetition that lives inside your Obsidian vault
A Tauri/Rust desktop shell over a real SM-2 scheduling engine, parsing three different
flashcard syntaxes directly out of existing vault markdown — no separate database, no
re-entry. Includes an LLM "note to cards" workflow with an edit/accept step before
anything is written back.
Tauri · Rust · JavaScript · SM-2
concept-cards
prototype
Where Manthan started
A Rust TUI reader paired with a Python/DSPy document-to-flashcard converter and a
self-optimizing generation prompt. Terminal-native, and the direct ancestor of Manthan's
current architecture.
Rust · Python · DSPy
Grading handwritten answer sheets for government-school teachers
A collaborative project led by others. My contribution was rebuilding the OCR and grading
backend — moving off a local model stack (TrOCR/PaddleOCR/EasyOCR + torch) onto an
OpenRouter Gemini Vision pipeline — plus production deploy fixes across auth, routing,
MongoDB TLS, and stale service-worker caching.
Python · Gemini Vision · OpenRouter · MongoDB