Build the part people have to trust.Make it hold under pressure.
I build software around the failure cases that matter: concurrent edits, unsafe agent actions, unverifiable analytics, and private data — from an AI writing engine used by 10M+ weekly users to local-first tools.
I started with a browser SDK, moved into financial audit software, and then built writing tools used at large scale.
5K+
daily interactions · Mamaearth
40%
audit-time cut · Barclays
10M+
weekly active users · QuillBot
QuillBot · Software Engineer
Dec 2024 – Aug 2026
Architected the AI writing assistant's insert/replace engine for Google Docs, Gmail, MS Word, ChatGPT, and other web editors, preserving block-level formatting across Shadow DOM and cross-frame boundaries. Shipped AI-assisted writing to 10M+ weekly active users on a Manifest V3 extension and its SSR web app. Optimized the selection hot path (~60 calls/sec onto a 300ms debounce; removed forced-layout reflows and a requestIdleCallback leak), led free-to-Premium A/B growth experiments, and owned CI health on an nx monorepo (Node 24, 234 suites / 3100+ tests green).
Barclays · Software Developer
Aug 2022 – Nov 2024
Built responsive financial dashboards with Python, FastAPI, React and TypeScript, automating manual report reviews. Queried 100k+ daily transactions over KDB+ and SQL (15% faster complex-query retrieval); React interfaces on a KDB+ backend cut audit completion time by 40%. Monthly Agile releases with CI/CD (TeamCity, OpenShift) and 90% coverage via SonarQube.
Mamaearth · SDE Intern
Jan 2022 – Jun 2022
Spearheaded a User Collaboration & Research SaaS for targeted surveys (+10% user feedback) and a responsive JavaScript web SDK capturing 5K+ daily interactions. Shipped Node.js (Express) and React microservices via Docker and GitLab CI/CD for 20% faster release cycles.
02 — CONCURRENCY AT SCALE
Editing at scale is a browser problem, not a textbox.
At QuillBot, I built an insert/replace engine that writes AI suggestions back into Google Docs, Gmail, Word, and other editor surfaces while preserving the document’s formatting.
03 — TRANSITION
The job changed. The work continued.
I kept building the tools I wanted to use: projects with a clear problem, a deliberate technical boundary, and enough depth to explain how they work.
04 — THESIS
Each project starts with a failure mode the design must prevent.
Concurrent edits must converge. Agents must not approve themselves. Analytics must show their SQL. Contrast must be measured. Private inputs must stay encrypted.
05 — SPLIT · DRIFT · CONVERGE
Weft
Keep editing when the connection drops.
Weft lets collaborators keep writing offline, then merges every edit when they reconnect. It stores the document as a tree of characters, so the same operations produce the same document on every peer without a conflict dialog.
A from-scratch Fugue sequence CRDT (Weidner & Kleppmann, 2023) gives every character a stable place in the document, so collaborators can edit offline, reconnect, and reach the same result without a conflict dialog.
Honest sync states — in memory, "on this device" (IndexedDB), and "Saved" (append + fsync + server ack). The green Saved pill comes from the ack, never a timer.
The server is a pure relay/log writer that never imports CRDT semantics.
Zeno is a local-first Windows agent suite that brings hosted coding agents and local Ollama models into one governed interface. It keeps reasoning separate from the authority to change the machine.
Each agent-proposed side effect is captured as a content-addressed proposal. Approval checks that the target has not changed, permits one execution, and records the result in a signed receipt chain.
The separation is structural: an agent can propose work but cannot approve its own proposal. High-risk payment and biometric effects are not permitted.
Command holds goals, context, conversations and approvals. Forge plans and runs repository tasks in an isolated worktree with skills and typed MCP tools. Counsel turns consented meeting audio into cited decisions and actions.
Forge can pause a run for approval, reject it if the workspace has moved, and resume from the decision. Commands typed directly by the owner in Forge's terminal run with owner authority.
TypeScriptNode 22ElectronMCPEd25519SSEOllama
Problem · contribution · proof
Problem
A model request is not a safe authorization boundary for machine side effects.
Contribution
Built the path from goal intake and bounded context through provider routing, tool use, approval interruption, execution, and signed receipts.
Proof
Current package and browser checks cover owner-token separation, stale-proposal rejection, repository jailing, resumable work, and receipt integrity; hardware-only cases stay labelled blocked.
Raw LLM-generated SQL is difficult to trust and easy to manipulate. Vantage limits the model to a typed query specification, then compiles that specification into parameterized, read-only SQL that users can inspect.
The model never writes SQL: it fills a typed QuerySpec (funnel, retention, trend, paths, count), and a pure compiler turns it into a parameterized SELECT run as a read-only Postgres role, in a read-only transaction, with a 5-second timeout and row caps.
Exposed as an MCP server with 8 read-only tools — no run_sql, no ask — so Claude can query it with no LLM key of its own, and every result carries the exact SQL it ran.
Hand-computed fixture proves the August funnel: signup 13 → create_project 6 → invite_teammate 3 in a 7-day window.
Private computation, cited answers, and shared clinical workflows.
SHIELDAI
ShieldAI
The private key never leaves the browser.
An educational Paillier partial-homomorphic-encryption demo: the browser generates a 1024-bit keypair, encrypts four derived indicators and sends only the public modulus and ciphertexts. The server computes an encrypted weighted sum and returns a total the browser decrypts locally to 37.5/100 — raw fields and the key never reach the server.
PythonFlaskVanilla JSPaillier PHE
Encrypt in browser, compute on ciphertext, decrypt locallyProblem · contribution · proof
Problem
A server should not need raw private fields to calculate a weighted score.
Contribution
Kept key generation, encryption, and decryption in the browser while the server computes on ciphertext.
Proof
The privacy receipt shows the POST boundary and local decryption path for the synthetic example.
A private, citation-first RAG workspace: indexes a PDF/DOCX/TXT into sentence-aware chunks (180 words, 36 overlap), retrieves the top-4 passages by cosine similarity and returns the answer with its cited excerpts. Local BGE ONNX embeddings on CPU; Claude writes the final answer; retrieved text is wrapped as untrusted data.
FastAPIpgvectorBGE ONNXNeon
Private workspace: index a document and inspect cited answersProblem · contribution · proof
Problem
Document answers are hard to trust when their evidence is hidden.
Contribution
Built local embeddings, bounded retrieval, untrusted-context handling, and citation-first answers.
Proof
The read-only demo returns seeded answers with inline citations and source excerpts.
A synthetic health-camp workflow: IT, ENT, Vision, General and Dental share one clinic-scoped draft over Socket.IO; the full flow can stitch five sections into a formatted .docx report. The public release is deliberately read-only—its sample data, uploads, reset and submit controls are disabled. It is not an EHR, access-controlled service, or compliance claim.
React 18Socket.IOFlaskpython-docx
Authenticated test-data flow: one synthetic patient across five departmentsProblem · contribution · proof
Problem
Sequential departments need one coherent draft without overwriting each other.
Contribution
Built a shared Socket.IO workflow and report assembly across five clinical sections.
Proof
The public sample exposes every department with synthetic data and refuses all writes.
Several projects needed the same colors, spacing, surfaces, and accessible states. glass packages those decisions into one framework-neutral stylesheet and verifies contrast on every theme.
Framework-neutral CSS: semantic OKLCH tokens, eleven product themes, six component sheets and a Tailwind v3 adapter — no React, no Web Component, no JS runtime.
The contrast law is verified, not asserted: a dependency-free script proves 1111 assertions across 11 themes × 2 grounds = 22 palettes (WCAG 4.5:1 text, 3:1 graphic) on every push.
Consumed in production by Zeno, Weft and Vantage — this very page reuses its tokens.
Helm is the deployed operations console for this project suite. It checks public endpoints from the server, keeps a rolling latency history, and makes the current fleet state easy to inspect.
Live now: server-side health probes, rolling latency, uptime, p50/p95, alerts, a service map, and dry-run deployment commands that show exactly what would run.
Node 22ExpressServer-side probesMCPglass
7 web apps
probed from the server
Dry run
deployment commands preview first
Problem · contribution · proof
Problem
Portfolio releases need one place to see availability, latency, freshness, and failures.
Contribution
Built server-side probes, rolling histories, alerts, a service map, and bounded dry-run controls.
Proof
Each metric names its source and age; local-only Zeno and sample-only metrics remain explicit.
The projects share a practical goal: turn a hard computer-science idea into software with a clear boundary and evidence that it works. The portfolio assistant answers questions from a fixed, cited set of project facts.