Bengaluru, IndiaOpen to AI and full-stack internships

Rudra Pratap Singh

I'm a third-year computer science student at Cambridge Institute of Technology, Bengaluru. I've built four AI projects that anyone can use today: a support inbox that sorts most tickets with a small model I fine-tuned and calls an LLM only when it's unsure, a security gateway that stops AI agents from leaking your data, a research assistant that answers in English, Hindi, Kannada and Hinglish and shows the page each answer comes from, and an agent that finds flats in Bengaluru.

Before that, I was the founding engineering intern at FERMOR. The website I redesigned got a month's worth of visitors on launch day.

Each planet is a section of this page. Click one to go straight to it.

The Sun · About

The person at the centre.

I like building a product end to end, from the interface to the model. Most of what I know I learned by shipping something, watching it break, and finding out why.

I don't trust a feature until I've measured it, so every project number on this page comes from an eval or a test you can re-run from the code.

— Rudra

Based in
Bengaluru, India
Looking for
An AI or full-stack internship
Studying
B.E. Computer Science, 5th semester
Learning next
Fine-tuning a small model (QLoRA) to replace Dwarpal's policy judge

Planet 1 · Experience

Where I've worked.

Founding Software Engineer Intern

FERMOR · Sep – Oct 2026 · Bengaluru, hybrid

  • Redesigned key website pages end to end for a cleaner, more usable UI.
  • Reworked page structure, headings, metadata and content for SEO.
  • Used analytics to measure the launch and decide what to do next.

~30xthe usual daily traffic on launch day, a month's worth in a single day

Planet 2 · Education

Where I've studied.

Undergraduate · 2024 – 2028

B.E. in Computer Science and Engineering

Cambridge Institute of Technology, North Campus, Bengaluru · Visvesvaraya Technological University (VTU) · now in the 5th semester

8.0/ 10 CGPA

Class XII · CBSE

Senior Secondary, PCM

Physics, Chemistry and Mathematics

74%

Class X · CBSE

Secondary

Central Board of Secondary Education

74%

Planet 3 · Skills

What I work with.

Each group says where you can see it used.

AI / ML

Fine-tuning transformers (MiniLM, LoRA), model distillation, confidence calibration, ONNX int8 quantization, ML + LLM cascades, LangGraph agents, Model Context Protocol (MCP), AI security (prompt injection, guardrails), RAG, tool-calling agents, embeddings, semantic and hybrid search (BM25, RRF), LLM-as-a-judge evaluation, structured outputs, prompt engineering, Gemini API, Groq API, PyTorch, Hugging Face

Fine-tuning and the cascade in Triage; agents in Dwarpal and NestFinder; RAG in AyurIP-Sahayak

Backend

FastAPI, Node.js, Express.js, REST APIs, WebSockets, BullMQ job queues, PostgreSQL, pgvector, Redis, MongoDB, JWT authentication

Queue, WebSockets and Redis in Triage; Postgres and pgvector in Dwarpal; FastAPI in AyurIP-Sahayak; Express and MongoDB in NestFinder

Frontend

Next.js, React, TypeScript, Vite, Tailwind CSS, HTML, CSS

Next.js dashboard in Triage, the other project interfaces, and the website redesign at FERMOR

DevOps & tools

Docker, Kubernetes, Helm, GitHub Actions, Git, Linux, pytest, Playwright, Vercel, Render, Langfuse, OpenTelemetry

Playwright and CI in Triage; Helm chart tested on Kubernetes in CI for Dwarpal; Langfuse on NestFinder

Languages

Python, TypeScript, Java, JavaScript, SQL

Python and TypeScript in Triage, Python for Dwarpal and AyurIP-Sahayak, JavaScript for NestFinder

Core CS

Object-oriented programming, operating systems, DBMS, computer networks

From my B.E. coursework

Planets 4 to 7 · Projects

Four systems, all live, all measured.

Triage

Support-ticket router, small model + LLM · Python · TypeScript · live

A support inbox that sorts every ticket by team and urgency. A small model I fine-tuned handles the easy ones in milliseconds; only the tickets it is unsure about go to an LLM, and the ticket shows why.

57%of tickets never reach the LLM80.7%accuracy, vs 81.0% LLM-only8 msper ticket on one CPU core23 MBmodel after int8

How it works

  • Distilled, then calibrated: MiniLM fine-tuned on 18,000 real support tweets labelled by an LLM, with two heads (team and urgency); temperature scaling cut calibration error from 0.108 to 0.066, so its confidence can decide when to escalate.
  • Fixed a real export bug: the int8 ONNX model matched PyTorch on only 92% of tickets; the old exporter had baked the sequence length into the mask. Moving to the new exporter brought it back in line.
  • Built like a service: BullMQ queue on Redis, live updates over WebSockets, a circuit breaker when the LLM quota runs out, and a Next.js dashboard with a results page. Tried a reranker and request batching, measured both, and dropped both.

Python · PyTorch · ONNX Runtime · FastAPI · Gemini API · Node.js · BullMQ · Redis · WebSockets · Next.js · TypeScript · Playwright

Results and design decisions →
Triage inbox: the small model was unsure whether a ticket was high or medium priority, so it was escalated and the LLM changed it to medium

Dwarpal

Security gateway for AI agents · Python · live

A gatekeeper between an AI agent and its tools. It stops poisoned tools, tools that quietly change after approval, and private data leaking to the wrong server, whether the attack is written in English, Hindi, Hinglish or Kannada.

0/25attack runs leaked, with Dwarpal5/25leaked without it0false blocks34tests, CI on Kubernetes

How it works

  • One policy graph (LangGraph): tool fingerprints, data-flow tracking across servers, multilingual rules, Prompt Guard 2 and an LLM policy judge; cheap checks first, and a person approves borderline calls.
  • Found what classic guards miss: Prompt Guard 2 scored a politely worded attack 0.001 (safe), and the agent followed it and leaked a phone number. Dwarpal stopped it every time.
  • Built like a product: Postgres with pgvector, a Redis cache, runs as an MCP server for any client, and a Helm chart tested on Kubernetes in CI.

Python · LangGraph · MCP · FastAPI · PostgreSQL + pgvector · Redis · Docker · Kubernetes · Helm · React

Results and design decisions →
Dwarpal playground: without Dwarpal the agent sends the user's phone number to the attacker's weather tool; with Dwarpal the tool is quarantined and nothing leaks

AyurIP-Sahayak

Multilingual RAG assistant · Python · live

A research assistant for Ayurveda, traditional knowledge and Indian IP law. Ask in English, Hindi, Kannada or Hinglish; it answers only from its sources and cites the exact page behind every claim.

0.99answer faithfulness0.95retrieval Hit@147tests, with CI4languages

How it works

  • Retrieval written by hand: section-aware PDF chunks, Gemini embeddings and NumPy cosine search, plus BM25 and RRF built to compare against.
  • Decisions from data: hybrid search lowered MRR from 0.97 to 0.93 on 38 labelled questions, so dense search stayed the default.
  • Answers judged, and the judge tested: a model from another family checks every claim; it caught all 15 errors I planted.

Python · FastAPI · Gemini API · NumPy · React · Docker · GitHub Actions

Full write-up with architecture →
AyurIP-Sahayak answering a question about the turmeric patent case with numbered citations

NestFinder

Tool-calling AI agent · Node.js · live

An AI flat finder for Bengaluru. Describe how you live, and an agent decides which tools to call to find flats that fit, check whether the rent is fair, and compare a shortlist.

20/20tool choice on the eval2.4 smedian replyRefusedprompt injection26unit tests

How it works

  • An agent loop from scratch: five tools, streamed replies, at most three tool rounds, a repair step for rejected calls and a fallback model on rate limits.
  • The AI talks, the code decides: match scores, fair-rent medians and distances come from a unit-tested rules engine.
  • Observable and safe: every model call traced in Langfuse with phone numbers masked; only the user can book a visit.

Node.js · Express.js · React · MongoDB · Groq API · Langfuse · OpenTelemetry

Full write-up with architecture →

Try the agent

Pick a message. Watch which tools it chooses, then its reply.

Recorded runs from the 20-case agent eval (2026-11-01): real messages, tool calls and replies, cut where the eval log cuts them.

Planet 8 · Contact

Let's build something that works.

I'm looking for an AI or full-stack internship where I can ship real features and measure them. Email is the fastest way to reach me.