FoamGPTLab contribution

Fine-tuning LLMs on OpenFOAM (computational fluid dynamics) tutorials and documentation, so models can generate and troubleshoot CFD simulation setups. Built in Prof. Shaowu Pan's Computational Scientific Machine Learning Lab at RPI. See the Pan & FoamGPT work experience entry.

Made a real, substantial commit rewriting the fine-tuning pipeline, environment config, and README (Sept 2025). This project resulted in a published NeurIPS 2025 ML4PS workshop paper by the lab; not an authorship credit for this contribution.

PythonHugging Face TransformersPEFT / LoRAbitsandbytesTRLFAISSconda

POEM: Psychometrics Ontology of Entities and MeasuresLab contribution

An RPI Tetherless World Constellation ontology structuring relationships between psychological/clinical assessment instruments (e.g. RCADS, PHQ-9) and their components, for interoperability across mental-healthcare data. Directly related to the AI Systems Engineer role above.

Authored and merged the embedding/retrieval pipeline (RDF/SPARQL over an in-memory graph, Dockerized Apache Jena Fuseki + TDB2 triple store, an OpenAI-compatible client against a self-hosted embedding model), then expanded the evaluation harness from 12 to 50 queries and fixed a retrieval-quality bug in the unscoped search path.

UML class diagram of the POEM ontology showing HAScO, VSTO Instruments, SIO, and POEM classes connected by hasMember, isAbout, hasAttribute, and subClassOf relations
POEM's ontology class diagram: the schema the embedding/retrieval pipeline above is built on.
JavaRDF / SPARQLrdflibApache Jena FusekiTDB2DockerChromaDBNumPyJekyll

Personal WebsiteYou're on it right now

Wanted one place where people could get a complete view of who I am — professionally and personally — rather than a resume that only ever covers half of it. Built the whole site myself: every page, the design system, and an “Ask about Armaan” AI chatbot on every page.

The chatbot is a small RAG (retrieval-augmented generation) pipeline I wrote from scratch: a build script parses the site's own HTML into a knowledge graph and embeds each chunk with Voyage AI, then a Lambda function embeds each visitor's question, retrieves the most relevant chunks by cosine similarity, and hands them to Claude to write an answer grounded only in what's actually on the site — nothing invented. The topic pill under each answer is picked by a small multi-signal consensus (chunk-level embedding similarity, page-level embedding similarity, and a strict literal-keyword check) rather than raw cosine similarity alone, so it lands on the one page that's actually relevant instead of whatever happened to ride along in a single metric's top results. The goal was to let visitors ask a direct question and get pointed straight to the right page instead of digging through the nav themselves.

JavaScriptNode.jsHTML/CSSRAGVoyage AIEmbeddings / Vector Similarity SearchClaude APIAWS LambdaAWS API GatewayAWS S3AWS CloudFront

No GitHub repo for this one — all the code (site, chatbot build script, and Lambda handler) is written locally and deployed by hand: static files uploaded straight to S3, and the Lambda code zipped and uploaded through the AWS Console, with no CI/CD pipeline.

Poker Equity Calculator

A Texas Hold'em odds calculator: give it hole and community cards and it estimates each player's win probability via Monte Carlo simulation, recalculating live as cards are dealt. Ships an interactive CLI and a live-camera mode. A fine-tuned YOLOv8 model reads cards off a physical table through a webcam, feeding a PySide6 GUI with an animated table, per-seat calibration, and a REINFORCE-trained RL agent that advises fold/call/raise.

Ace of spades King of spades Queen of spades Jack of spades Ten of spades
The card-face assets from the repo, used for both UI rendering and YOLOv8 detector training/output.
PythonPyTorchYOLOv8OpenCVPySide6NumPyReinforcement Learning

Jarvis: Computer-Vision Home SecurityShowcase (source private)

One module of a larger local-first, voice-driven, multi-agent personal assistant: recognizes known faces (InsightFace ArcFace), detects and tracks objects (YOLOv8n + ByteTrack), and runs an always-on lockdown mode that alarms, records, and uploads footage on an unrecognized face or motion-without-owner. The broader assistant routes requests through a local model (Ollama/vLLM) before falling back to Claude, orchestrates ~40 tool integrations across sub-agents, and talks/listens fully offline via Whisper and Piper.

Architecture diagram: camera feed splits into YOLOv8n object detection with ByteTrack tracking on one side and face-crop ArcFace embedding matching on the other, both feeding a lockdown decision engine that triggers siren, recording, Drive upload, and owner notification
System architecture, from the project README.
Stylized mockup of the lockdown alert UI showing a bounding box labeled 'unknown, 0.31 similarity' under a red LOCKDOWN banner
Illustrative mockup of the lockdown alert UI (not a live capture).
PythonOpenCVYOLOv8ONNX RuntimeInsightFaceByteTrackOllamavLLMClaude APIWhisperPiperPlaywright

Source and camera/face data are private (real home cameras and family members' faces, live OAuth tokens). This showcase repo has the architecture and README only, so the tech stack here is self-reported, not independently code-verified.

Email AIIn progress

A Next.js app that uses AI to help compose email, with Google/Outlook integration and multi-user support. Built with Prisma over SQLite in development (Postgres via Neon in production), NextAuth with Google and Azure OAuth, and the Anthropic API for generation; deploys to Railway.

TypeScriptNext.jsReactPrismaPostgreSQLSQLiteNextAuthOAuthClaude APIRailway

Handwritten Digit Classifier

A neural network built entirely from scratch (no PyTorch or TensorFlow), extending an RPI machine learning course assignment. Hand-implements backpropagation, SGD, and one-vs-all classification over 284 engineered features. Achieves 94.5% accuracy on the USPS ZIP Digits dataset and 83% on my own handwritten samples.

PythonNumPyPillowMatplotlibNeural Networks (from scratch)

djGPTIn progress

An intelligent music-playlist generator and player that uses LLMs and Spotify's API to curate, order, and enhance playlists based on vibe and metadata. Fine-tunes Qwen3-235B-A22B-Thinking on Hugging Face-hosted datasets built from Spotify audio analysis, and evaluates model choices with scikit-learn accuracy metrics.

PythonHugging FaceFine-TuningSpotify Web APIpandasscikit-learn

Graph Neural Networks for Material Property Prediction

Research code from RPI's DMREF ("Designing Materials to Revolutionize and Engineer our Future") project, applying deep learning — autoencoders and graph neural networks — to material properties for aircraft-engine components under extreme conditions. Full write-up on the ML Engineer, Autoencoder Research entry.

PyTorchKerasTensorFlowscikit-learnGraph Neural NetworksGoogle Colab

Facial RecognitionEarly-stage

Custom 2D/3D convolutional neural networks in PyTorch for face recognition, built from scratch rather than a library like dlib or face_recognition.

PythonPyTorchtorchvision