projects

Fifteen things I built,
start to finish.

Agent orchestration, retrieval, data platforms and machines that move on their own. Showing 15 of 15.

agentic

Multi-Agent AI Workflow System ↗

LangGraph · FastAPI

Multi-agent orchestration that decomposes a task, retrieves documents, searches the web and writes the report — exposed over FastAPI with real-time streaming.

  • LangGraph
  • FastAPI
  • Next.js
  • pgvector
  • Redis
  • Kubernetes
Why
One model answering a research question in a single pass gets shallow answers. Splitting the job across agents that each do one thing well gets a better one.
How it works
A planner breaks the question down, a retriever and a web searcher run in parallel, a synthesiser writes the draft, and a verifier checks it before the report goes out — the whole loop is a LangGraph state machine.
Notable
It ships with the unglamorous parts: a worker queue, pgvector for embeddings, Kubernetes manifests, and Prometheus/OpenTelemetry so you can see where a run spent its time.
agentic

CMDR ↗

Agentic AI terminal · browser-native · built on ttyd

A terminal that runs in the browser — persistent sessions, an auto-update channel, a FastAPI cloud backend and an AI command bar that writes the command for you.

  • C
  • xterm.js
  • FastAPI
  • React
  • Docker
  • PostgreSQL
Why
A terminal you can open from any machine, that remembers where you left off, and that can turn a sentence into the right command.
How it works
The core is built on ttyd, extended with persistent sessions and an auto-update channel. A FastAPI service handles accounts and history; the front end is React and TypeScript over xterm.js with WebGL rendering.
Notable
The AI command bar is Gemini-backed — you describe what you want, it drafts the command, you decide whether to run it.
rag

RAG Chatbot ↗

FastAPI + Next.js full-stack

Production-ready retrieval chatbot: FastAPI backend, Next.js front end, ChromaDB/FAISS vector search, shipped to AWS behind Docker and Terraform.

  • FastAPI
  • Next.js
  • LangChain
  • ChromaDB
  • FAISS
  • AWS
Why
Most retrieval demos answer confidently and cite nothing. This one hands back the passage it used, so you can check it.
How it works
Documents are chunked and embedded into Chroma or FAISS; a FastAPI service does the retrieval and calls the model; a Next.js front end streams the answer with its citations attached.
Notable
Deployed rather than demoed — Terraform stands up the AWS ECS infrastructure, and the whole thing runs in Docker.
robotics

AmiBot ↗

Humanoid robot · Raspberry Pi

A humanoid robot I designed and built: camera vision, hand-gesture recognition, voice in and out, and Gemini-backed conversation, driving the servos over Bluetooth.

  • Python
  • OpenCV
  • Gemini API
  • SpeechRecognition
  • PyBluez
  • Raspberry Pi
Why
I wanted a robot you talk to rather than program — one that sees a gesture, hears a question, and answers out loud.
How it works
A Raspberry Pi runs the vision loop in OpenCV, a gesture recogniser, and speech in and out. Gemini handles the conversation; the resulting motions go to the servos over a Bluetooth link.
Notable
The body is mine too — the whole chassis is modelled in SolidWorks around AX-12A Dynamixel servos, in the amibot_cad repository.
robotics

AmiBot · CAD ↗

SolidWorks · bipedal chassis

The humanoid itself, modelled part by part — hip, thigh, knee, chest, wrist and hand, all dimensioned around AX-12A Dynamixel servos.

  • SolidWorks
  • STL
  • Dynamixel AX-12A
  • Mechanical design
Why
Off-the-shelf humanoid kits don't fit the servos or the budget, so the frame had to be drawn from scratch.
How it works
Around a hundred SolidWorks parts and assemblies covering both legs, the torso and the arms, each one dimensioned to the AX-12A horn pattern and exported to STL for printing.
Notable
The mechanical constraints came first — joint travel and servo torque decided the link lengths, not the other way round.
robotics

Robot Cloud ↗

ROS2 · off-board inference

The brain a campus robot is too small to carry: Qwen3 running locally through llama.cpp alongside Whisper, served to the robot's Pi over the LAN.

  • ROS2
  • llama.cpp
  • Whisper
  • Vulkan
  • Python
  • systemd
Why
A Raspberry Pi cannot run a 4B model and speech recognition at once. A laptop on the same network can.
How it works
Qwen3-4B runs through llama.cpp on Vulkan, with Whisper handling speech-to-text. Both sit behind systemd services the robot calls over the LAN, so the robot only carries sensors and motors.
Notable
The split is the point — it keeps latency predictable and means the robot's battery isn't paying for inference.
robotics

RosClaw ↗

Natural language → ROS2 · being re-architected

Tell a robot what to do in plain English from Telegram or Slack, and an agent turns it into ROS2 commands.

  • TypeScript
  • ROS2
  • rosbridge
  • WebSocket
  • Docker
Why
Driving a robot normally means a terminal and the right topic names. It should be possible to just ask.
How it works
An agent plugin bridges chat platforms to a TypeScript rosbridge client, which talks to ROS2 discovery and agent nodes over WebSocket.
Notable
Chat is a surprisingly good robot console — it already has identity, history and a phone client.
fullstack

AutoChess ↗

Stockfish in the browser

A browser extension that reads the chess.com board out of the page, thinks with Stockfish compiled to WebAssembly, and plays the move.

  • TypeScript
  • WebAssembly
  • Stockfish
  • Vite
  • Vitest
  • Chrome MV3
Why
A small, self-contained problem with three hard edges: reading a live DOM, running an engine in the browser, and driving a UI convincingly.
How it works
A content script parses the board state out of the DOM, an embedded Stockfish WASM engine picks the move over UCI, and synthetic pointer events play it.
Notable
Gated to games against bots, and covered by 84 tests — the engine bridge is the part worth trusting.
fullstack

TECHNIKI ↗

Club site · certificates

The university technical club's site: event pages, a team directory, and certificates that verify by QR code.

  • Next.js 15
  • TypeScript
  • Tailwind v4
  • React
  • Vercel
Why
Every event ended with someone generating certificates by hand, and no way to check whether one was real.
How it works
Next.js 15 with an API route that issues certificates and a verification endpoint behind a QR code, so anyone can confirm a certificate in one scan.
Notable
I run the club, so this one had to survive actual use by people who did not build it.
agentic

HVAC Alert ↗

LLM triage on sensor data · prototype

A mobile prototype where an LLM reads multi-sensor HVAC data, throws out the false alarms and writes the technician's task list instead.

  • React Native
  • Expo
  • TypeScript
  • OpenAI
  • Anthropic API
Why
Sensor thresholds fire constantly and most of it is noise. The useful output is not an alert, it's a job.
How it works
Readings from several sensors go to a model that decides whether they add up to a real fault, and if so writes the task a technician can act on.
Notable
Deliberately a prototype — the README is honest about what it does and does not handle.
fullstack

MediBot ↗

Medical chatbot · Rasa + Flutter

Personalised medical guidance with nearby doctor and hospital lookup, covering both conventional and Ayurvedic practice — built on Rasa NLU with a Flutter client.

  • Rasa NLU
  • NLP
  • Flutter
  • Dart
  • Python
Why
Health questions get asked in the middle of the night, in the user's own words, and the answer needs a nearby doctor attached.
How it works
Rasa handles the dialogue and intent recognition; a Flutter app is the front end; location lookup finds the nearest clinics.
Notable
This repo consolidates three earlier versions of the project into one — an archaeology exercise as much as a build.
robotics

AquaWings ↗

Rescue drone prototype · early prototype

Drone-based water safety: navigation scripts and an ESP32 link aimed at spotting swimmers in trouble from the air.

  • Python
  • ESP32
  • Drone navigation
Why
Lifeguards can only watch one stretch of water at a time. A drone can watch the whole beach.
How it works
Navigation scripts drive the flight path, with an ESP32 handling the radio link back to the ground.
Notable
Early-stage and honest about it — the flying and comms parts work, the detection model is the unfinished half.
robotics

Glider CAD ↗

Fixed-wing airframe

A fixed-wing RC glider modelled part by part — wing, ailerons, elevator, fuselage, canopy and landing gear.

  • CAD
  • STL
  • Aerodynamics
  • 3D printing
Why
Learning airframe design properly means drawing every rib and control surface yourself.
How it works
Forty-seven printable components covering the full airframe, from the wing sections through to the landing gear.
Notable
No code in this one at all — it is a reminder that some of the work happens in CAD.
data

TN Election 2026 ↗

Fifty years of results · exploratory, by its own README

Tamil Nadu election results from 1971 to 2021, and an honest attempt at predicting the next one.

  • pandas
  • scikit-learn
  • Jupyter
  • matplotlib
  • seaborn
Why
Elections look predictable in hindsight. I wanted to find out how much of that is real signal.
How it works
Five decades of constituency results cleaned into one dataset, then explored for swing patterns and turnout effects before any model gets involved.
Notable
The README files it as exploratory rather than production, which is the correct call — the prediction is the least interesting part.
data

Trader Sentiment ↗

Fear & Greed vs. behaviour

Correlating the Bitcoin Fear & Greed index against trader profitability, trade frequency and appetite for risk.

  • pandas
  • matplotlib
  • seaborn
  • Jupyter
Why
Everyone quotes the Fear & Greed index. Fewer people check whether it lines up with what traders actually do.
How it works
Sentiment readings joined against trade-level data, then split by profitability, frequency and position size to see where the correlation holds.
Notable
The interesting result is behavioural, not predictive — sentiment tracks how people trade better than whether they win.

every repository

The rest of the shelf.

Pulled from the GitHub API when this page loads — newest push first, forks left out. If the network says no, you are looking at the snapshot baked in at build time.

not on github

Built somewhere else.

Coursework, client and internal projects that live in private repositories. Happy to walk through any of them.

off-repo work

  • Document Intelligence System — OCR, layout analysis and LLM extraction from scanned paper into a PostgreSQL star schema
  • SQL + LLM Analytics Dashboard — natural-language questions answered against Snowflake, surfaced in Power BI
  • TamilGPT — a LoRA/QLoRA fine-tune for Tamil with a Pinecone-backed retrieval pipeline
  • Autonomous Rover — real-time SLAM with LiDAR and sensor fusion on a Jetson Nano
  • GeoTag — geofenced GPS toll collection on a Raspberry Pi, Django and MongoDB