Rejeesh Menon is an academic internal medicine physician and clinical assistant professor, not a trained software engineer. This site, and
the clinical software described on it, were built solo with Claude Code CLI and other AI coding agents, no
other engineers involved. The AI writes code, from prompts he writes himself. The clinical logic, the
architecture decisions, the safety boundaries, and the compliance calls are his, and he can defend every one
of them under questioning.
Three real calls, in the format a technical evaluator would actually want: the decision, the alternative
considered, and the consequence.
Deploy on Cloudflare Workers, not Cloudflare Pages
Context. The original build brief specified Cloudflare Pages. Partway through the build,
the current major version of the Astro Cloudflare adapter turned out to have dropped Pages support
entirely, targeting Workers with static assets instead.
Alternative considered. Pin to an older adapter version to match the original brief
exactly, or upgrade the plan to the adapter's current target.
Decision and why. Moved to Workers. Pinning an old major version of a dependency to satisfy
a spec written before that dependency changed is exactly the kind of technical debt a careful engineer
avoids creating on day one. The cost was small (different CLI commands, same free tier, same custom-domain
flow) and is documented in the design spec committed alongside the code, not silently absorbed.
SuperHuman's autonomy boundary
Context. A clinical-intelligence tool that consolidates labs, wearable data and
prescription history has to decide what it can act on and what it can only suggest.
Decision. Author of the clinical logic and the autonomy boundary, meaning what the tool decides on its own and what requires physician sign-off.
Consequence. Compliance decisions: BAA-covered data boundary, synthetic-data development, and a decision-support design built to meet the FDA's non-device clinical decision support criteria, not an autonomous diagnostic device.
Priya's escalation rules
Context. An automated WhatsApp/Instagram responder handling real patient messages across
seven clinics needs a hard boundary on what it will and won't say on its own.
Decision. Designed the automated responder "Priya", including forbidden clinical topics and red-flag escalation rules, with live log review each release.
A real bug, from building this site
The multi-agent design review that shaped this page's own layout (see the site's repository for the full
review) recommended a focus trap and an Escape handler for the floating chat panel, since neither existed
before. Adding them introduced a real regression.
The panel's close button removed the visible chat element from the page, but left an empty wrapper element
behind. The code that decides whether to open a new panel or reuse an existing one checks for that wrapper
first, found it still there, and silently did nothing on every attempt to reopen the chat after the first
close. No error, no console warning; the button just stopped working.
Found it by writing an actual open-close-reopen test against a running local build, not by inspection. Fixed
by removing the whole wrapper on close, not just the visible content inside it. It shipped in the same commit
as the fix that caused it, verified against the real bug before being called done, not assumed correct
because the code looked right.
How I actually work with the tool
Each system was specified, built and shipped solo, with AI-assisted development (Claude Code CLI and agentic tooling) and no other engineers. Rejeesh writes the prompts and owns the clinical logic, the autonomy boundaries and the compliance decisions.
Query this CV the way I query systems
Reading this page is one way to get these facts. Here is another: this site runs a real, spec-current
(2026-07-28, stateless Streamable HTTP) Model Context Protocol server, so an MCP client you already use can
query it directly, the same way it would query any other tool.
Every tool here is a direct read of the same source file that generates this page, cv.yaml
— nothing is a second copy that could drift out of sync. The one tool that generates text,
why_fit_for_role, reuses the exact grounding prompt the on-page chat uses, so
the two surfaces can never answer the same question differently.
Add it with Claude Code
claude mcp add --transport http menon-md https://menon.md/api/mcp
why_fit_for_role(role_description) — the one generative tool, grounded only on the CV
Public, read-only, no authentication, rate-limited. Built to demonstrate real fluency with the protocol
this audience ships for a living, not to perform novelty for its own sake.