Skip to content
Raj Dholakia

Raj Dholakia

Check my fit for a roleConnect your agentPrivacy
  • nowLead Software Developer, Eddy Solutions
  • baseToronto
  • stackTypeScript, Python, C#
  • shipping since2020
  • dream teams
  1. 2016Nuclear engineeringBEng, University of Manchester
  2. 2020SoftwareDuit.io, then full-stack roles
  3. 2024GenAI infrastructureCreate Club, now Eddy Solutions
  • I work in focused deep dives: take one problem, go to the bottom of it for a few weeks, ship it, then carry what I learned into the next domain.
  • I design for reliability first, because the people using these systems make decisions with the answers.
  • I build with Claude Code daily.
Read the full summary

I build LLM features that make it past the demo: MCP servers, RAG pipelines, agents, and the evals and guardrails around them.

Software engineer with 6 years shipping production systems, the last two and a half focused on LLM-powered products.

I work in focused deep dives: take one problem, go to the bottom of it for a few weeks, ship it, then carry what I learned into the next domain. That is how I moved from nuclear engineering into software, and from full-stack work into GenAI infrastructure.

I design for reliability first, because the people using these systems make decisions with the answers. I build with Claude Code daily.

Numbers from the resume

  • 6

    years shipping production systems

  • 150,000+

    LoRaWAN devices whose telemetry my scripts turn into actionable insights

  • 80+

    weekly processes replaced by LangChain agents, about 60% less manual work

  • 15 to 2 min

    deploys, down from 15 minutes with a new AWS pipeline

  • 100K

    job postings searchable in plain language, three vectors each

  • 40+

    nuclear regulatory documents grounded in one cited RAG chat

Work

Hover a skill to light up the lines that use it. Click one to filter.

AI

Stack

Practice

Full skill list
GenAI
MCP servers (tool design, context engineering); LangChain; Anthropic and OpenAI APIs; RAG (retrieval quality, chunking strategy, hybrid search, BM25); pgvector, Qdrant Query API (named vectors, filtered multi-vector search); Reranking; LLM-based evaluations, Inspect AI; Guardrails; Rate limiting
Code and data
Python; TypeScript; C#/.NET; Node.js and Next.js; PostgreSQL; ETL and REST APIs; Kafka; Azure Storage Queues; AuthN and AuthZ
Cloud and tooling
AWS (EC2, ECS, Lambda, RDS, S3, API Gateway, CloudFormation); Kubernetes/EKS; GCP; Cloudflare Workers; Docker and GitHub Actions; Monitoring; Codex/Claude CLI

Duit.ioAROPinhousCreate ClubEddy4 buildsEarned, a habit-tracking app with an AI coach, Jan 2026Natural-language search over 100K job postings, Feb 2026The Pulse, a living-analytics app, May 2026Grounded regulatory assistant for the Canadian nuclear industry, Jul 2026

Year-only dates have soft ends. Click a bar to open that role or build.

5 roles, 17 lines
  1. Apr 2026 – Present
    now
    Eddy SolutionsLead Software Developer150,000+ devicesNext.jsRAGEvals5 lines

    Eddy makes water-leak detection hardware. I lead software on the team that turns that device data into web apps and insights.

    • Building a RAG system over internal sensor engineering docs and ISO whitepapers, gated by an Inspect AI eval suite.
    • Built the company's work tracker from scratch (Next.js, PostgreSQL), with adoption across Service, Product, Tech, field technicians and vendors in place of a shared Excel sheet, Jira and email chains.
    • Built an MCP server and agent on top of the work tracker inside the same Next.js app, so users can ask questions, search and update work items with chat history storing important context about specific incidents/work items.
    • Led C#/.NET and TypeScript services on AWS and Azure; added monitoring in web apps, Python scripts that turn telemetry from 150,000+ LoRaWAN devices (via Azure Storage Queues) into actionable insights.
    • Agent-driven development with Codex/Claude CLI, rolled out AGENTS.md instructions and pull request review guidelines to several repositories while being thoughtful about context stuffing.
  2. Aug 2024 – Mar 2026Create ClubCo-Founder & AI Engineer80+ processes automatedAgentsLangChainLLM APIs3 lines

    A small studio that built web applications and AI tooling for clients.

    • Built LangChain agents on the Anthropic and OpenAI APIs for a global beverage company (via a consultancy) that pulled weekly reports, applied required changes and loaded them into internal systems, replacing 80+ weekly processes and cutting manual work by about 60%.
    • Prototyped an MCP server over a client's self-hosted IMAP mail. Showed that acceptable latency needed a local index plus a response cache and estimated the cost to build and run it.
    • Shipped 4+ production apps including production-grade payment flows for clients (Next.js, Node.js, PostgreSQL, Docker, Stripe API).
  3. Jan 2024 – Feb 2025Pinhous Inc.Product Lead & Cloud Engineer15 → 2 min deploysProductLeadershipETL & APIs4 lines
    • Led 3 interns, including 2 developers and 1 designer, building the company's React web and mobile apps: owned the architecture and shared REST API layer, ran sprint planning and code review, and mentored on design patterns.
    • Introduced Kafka to make the backend event-driven: with data showing a buyer co-located properties from several sources, and streamed their updates as new events.
    • Built the AWS deploy pipeline (GitHub Actions, Docker images to ECS, stacks in CloudFormation via CDK): reduced deployments from 15 minutes to 2, with health checks and automatic rollbacks.
    • Ran a LangChain PoC for personalized home recommendations from images and tags buyers liked; concluded that per-user cost was too high to ship.
  4. May 2022 – Dec 2023ARO Inc.Lead Application Developer20% fewer repeat incidentsPythonETL & APIsMonitoring3 lines

    Application Developer until January 2023.

    • Built Python document-processing automations (automated extraction, tagging) that better aligned with downstream use-cases.
    • Built ETL and integration layers between client and internal CRM systems, cutting manual work for 40% of the workflows.
    • Owned the technical documentation and on-call preventive fixes that cut repeat incidents by 20%.
  5. Sep 2020 – Aug 2021Duit.ioAssociate Software Engineer15 s → 5 s signalsGCPPythonETL & APIs2 lines
    • Built a fintech analytics platform on GCP (Python, SQL) that computed buy/sell signals over NSE market data; cut signal latency from 15 seconds to 5.
    • Deployed Cloud Functions and IAM roles for the backends and data pipelines behind real-time dashboards.

Independent builds

hit@8 across releases95.7%baseline96.7%embeddingupgrade91.3%corpus grew,release held

Jul 2026

Grounded regulatory assistant for the Canadian nuclear industry

Live app ↗
  • 40+ documents
  • 14 safety areas
  • shall vs should, shown apart
  • Next.js
  • TypeScript
  • OpenAI
  • Supabase pgvector
  • Cloudflare Workers
5 lines
  • Built a RAG chat over 40+ Canadian Nuclear Safety Commission documents: 15 priority REGDOCs plus 26 best-practice documents spanning all 14 safety and control areas. Answers cite the source document and section, and requirements (shall/must) are visually separated from guidance (should/may).
  • Ingested and chunked the documents with section metadata and a requirement-type tag, embedded with text-embedding-3-large stored as half-precision vectors in pgvector, and retrieved and reranked top-k chunks that are wrapped as untrusted context before generation.
  • Wrote an evaluation harness with a golden set, LLM-as-judge faithfulness and citation-support scoring, out-of-corpus rejection probes and ID-based hit@k and MRR. Used it to justify the embedding upgrade (hit@8 95.7% to 96.7%, recall@8 82.6% to 86.0%), and later to catch a real regression when the corpus grew (hit@8 96.7% to 91.3%, 15 queries worse, none better). Root-caused it to near-identical boilerplate sections colliding in retrieval, recovered half the loss by dropping them, and held the production release pending a generation eval.
  • Added production guardrails: per-tier rate limiting, input sanitization with jailbreak-pattern detection, a streaming output guard that truncates on deny-list hits, and PII-safe logging that hashes IPs and user IDs with a daily salt and never stores query or response text.
  • Built a licence-manifest-driven fetcher for growing the corpus: 15 US NRC regulatory guides fetched and validated through the PDF path but held from ingestion until citations are source-aware, and 16 IAEA standards catalogued as reference-only because their licence does not allow full-corpus storage.
query pipelinequeryintentexplicitinferredcompanyrrftop 10

Feb 2026

Natural-language search over 100K job postings

YouTube explainer ↗
  • ~100K postings
  • 8 GB JSONL
  • 3 named vectors
  • Python
  • OpenAI
  • Qdrant
3 lines
  • Built a search engine over ~100K US job postings (8 GB JSONL) using Qdrant with three named embedding vectors per posting: explicit, inferred and company.
  • Query pipeline parses the user's request into structured intent with an LLM (including negations), embeds it, runs three filtered vector searches through the Qdrant Query API (remote, seniority, state, industry), fuses results with intent-weighted Reciprocal Rank Fusion, then applies salary and keyword boosts, a negation penalty and near-duplicate collapsing to return a top 10.
  • Supported conversational refinement by merging each follow-up into the previous intent.

May 2026

The Pulse, a living-analytics app

System design explanation ↗
  • Next.js
  • Cloudflare Workers
  • Shipped The Pulse, a Next.js / Cloudflare Workers living-analytics app ranking a pricing leader's decisions from a semantic mart.

Jan 2026

Earned, a habit-tracking app with an AI coach

Live app ↗
  • Built Earned, a habit-tracking app whose AI coach remembers user context to create personalized routines and recommend challenges.

Community

Jul 2026 – Present, Toronto, ON

Open Invite

Co-host & builder

  • Cake Picnic
  • Sip & Bedazzle
  • Next.js
  • Cloudflare Workers
  • D1
  • Stripe Checkout
  • Google Wallet
3 lines

Open Invite puts on small, open-to-everyone community events in Toronto. I help host them and built the platform behind them.

  • Help host small community events in Toronto, from the Cake Picnic, where every guest brings a cake to share, to Sip & Bedazzle, a crafts evening at a neighbourhood cafe.
  • Built openinviteto.ca end to end on Next.js and Cloudflare Workers with D1: ticket-shaped event cards that morph into each event page, Stripe Checkout fulfilled only by a signed webhook, Google Wallet passes and transactional email.
  • Built the team's operations dashboard for sales, guests, expenses and settlement, including an LLM pipeline that reads invoices from photos into the expense ledger and records every processing step so a wrong extraction can be traced and fixed on the spot.
Open to everyoneopeninviteto.ca ↗

Study

  • 2024Certificate in Technical Product ManagementBrainStation, Toronto
  • 2021 – 2022Graduate Certificate in AI Design & ImplementationDurham College, Toronto
  • 2016 – 2019BEng Mechanical (Nuclear) EngineeringUniversity of Manchester, UK

Fit

Paste a job description. My clone scores the fit against what I’ve actually done, shows the evidence, and says what it can’t tell.

More fieldscompany, culture

Agents

Point your screening agent here. It can interview my clone, pull my resume and run a fit check over MCP.

MCP endpoint:https://curlycloud.dev/mcp
claude mcp add --transport http raj-dholakia https://curlycloud.dev/mcp

With a key, add the header Authorization: Bearer rc_…

Pick a tool to see what it does.

Also: resource resume://raj-dholakia/ai-engineer, prompt evaluate_candidate, a plain-text brief at /llms.txt.

Anonymous access has a daily limit. For more, email me for a key.

How the clone answers

Public: every line of this resume. Private: my own answers to interview questions about principles, decisions and stories, written offline in a HyperCard-style stack. Those answers stay on the server.

Prefer a shell?Open the terminalMac ’84

Say hello

Toronto, --:--

About the clone and your privacy

“Ask Raj” is an AI that answers from my resume and my own written answers. It can be wrong, and it’s no substitute for talking to me. Questions and answers are logged so I can correct it. Logs keep a hashed visitor id that changes daily — never your IP address — and email addresses or phone numbers in questions are redacted.

© 2026 Raj DholakiaTerminalMac ’84llms.txtMCP