pranav@harper ~ $ neofetch
██████╗ ███╗ ███╗ pranav @ san francisco
██╔══██╗████╗ ████║ ─────────────────────────────────────────────
██████╔╝██╔████╔██║ role forward deployed engineer, harper (yc w25)
██╔═══╝ ██║╚██╔╝██║ uptime 1,100+ prs · 900+ merged · 60+ repos since oct '25
██║ ██║ ╚═╝ ██║ kernel voice agents, local coding agents, agent reliability
╚═╝ ╚═╝ ╚═╝ upstream merged into openai-agents-python, livekit/agents, inspect_ai
shell claude code, codex, cursor, opencode
prev salespatriot (yc w25) · sail · psu cs '25
Insurance has always run on agents. I build the new kind, at Harper (YC W25, $47M across Seed and Series A). First an intake copilot our operators live in, now a voice agent that answers the phone by itself and turns the call into an insurance application. The models were never the bottleneck. Getting an agent to behave when a caller says "don't email and text", or a carrier sends a scanned PDF sideways at 4:55pm on a Friday, that's the job.
On my own time I build the same thing at a different scale: a coding agent that runs on one laptop, and the benchmark rig that decides when it's allowed to claim it's good.
+ kryn v1 shipped. next: seal a holdout, climb the research ladder toward frontier-adjacent on a 9B model
+ voice live calls: realtime model talks, deepgram listens, code owns hang-ups, transfers, confirmations
+ irrevon waiting on a preregistration freeze before the first confirmatory benchmark run
+ upstream 4 merged, 7 in review across the openai, anthropic, livekit and python ecosystems| system | built with | what happened |
|---|---|---|
| voice intake agent | LiveKit, OpenAI Realtime, Deepgram Nova-3, SIP | takes intake calls alone. I own how calls end (hang-up, transfer, holds) and the confirmation loop where callers fix their own details before anything is filed. write-up |
| Dumbly: realtime intake copilot | OpenAI Realtime API, Electron, packet-recommendation rules engine | 20+ operators, 300-400 intakes/day, manual intake down ~70% |
| lead lifecycle pipeline | Temporal (python + go workers), Postgres | raw lead → qualified opportunity → submission handoff. dual-write migrations, typed backfills, no-downtime cutover |
| event backbone | schema registry, go SDK, NATS | event contracts for 5+ services. a schema change through every consumer in one day |
| growth attribution stack | GCLID/msclkid capture, offline conversions, Customer.io | ad-click to closed-policy attribution; lifecycle campaigns fired off production events |
| reliability layer | otel, logfire, feature flags | fail-closed guards on anything customer-facing. about 50 PRs nobody sees, which is the point |
| project | what it is | status |
|---|---|---|
| KRYN | local coding workspace for Apple Silicon: OpenCode + a guarded Qwen 9B on oMLX, plus a preregistered benchmark rig (matched pairs, hidden graders, SWE-bench + Terminal-Bench subsets). write-up | |
| Irrevon | reconciliation for irreversible agent actions: an identity the model can't regenerate, "ambiguous" as a real state, settlement from the destination's own evidence. write-up | |
| EONFOLK | deterministic civilization game where only one layer can write the world. models propose, Reality decides, a Chronicle that can't overclaim. write-up | pre-alpha |
| Interlock | turns a decision made in passing in Slack into one owner-approved, fail-closed action with a checkable receipt | hackathon build |
in review: anthropic-sdk-python#1750 · #1751 · claude-agent-sdk-python#1087 · openai-python#3505 · gpt-oss#252 · datasette#2826 · attrs#1584 · all of it
- A voice agent that takes the call alone
- The model doesn't get to write history
- Chasing frontier-level coding on one laptop
- The destination is the only witness
- Agents need a nervous system, not a bigger brain
more at pranavmishra.app/writing · rss
| paper | notes |
|---|---|
| τ-bench | agents following domain policy with a human in the loop. closest thing to a benchmark of my day job |
| SWE-bench | made coding agents measurable. KRYN's external subset runs on its official evaluator |
| Measuring AI ability to complete long software tasks | METR's time horizons. how I want to plot KRYN's long-session runs |
| ReAct | still the skeleton under most agent loops, including mine |
| Reflexion | self-critique as memory. cheap, and on a 9B model, harder than it looks |
| CoALA | a map of agent architectures. I disagree with parts, which is why I keep rereading it |
# toolchain.yaml
langs: [python, typescript, go, sql]
agents: [claude agent sdk + mcp, openai agents sdk, langgraph, evals]
voice: [livekit agents, openai realtime, deepgram nova-3, twilio sip]
local: [opencode, oMLX, mlx, qwen]
backbone: [temporal, nats, postgres + pgvector, supabase]
frontend: [react, next.js, electron, react native]
infra: [aws ecs, gcp, cloudflare, docker, github actions]
observability: [otel, logfire, posthog, grafana]
daily_drivers: [claude code, codex, cursor]$ curl -s pranavmishra.app/llms.txt | head -3


