Skip to content
Harin Rishabh

Five builds across LLMs, machine learning, information retrieval, data engineering and the web. Most of them worked. The rest taught me more.

01

LLM From Scratch

Taking the modern LLM stack apart, then building one back up.

A self-directed attempt to understand large language models from the inside. It runs from tokens, embeddings and retrieval through agents and serving, then on to the main event: building a GPT from the ground up and fine-tuning it with LoRA. Every experiment gets logged, and the local work runs on a laptop with no GPU, which keeps the ambition honest. The repo stays private until the loss is presentable.

10M

parameter GPT

4-bit

quantization target

0

contributions to the GPU Apocalypse

  1. How LLMs work
  2. Embeddings & RAG
  3. Agents & MCP (not started yet)
  4. Tiny GPT from scratch (not started yet)
  5. LoRA fine-tuning (not started yet)

2 of 5 stages complete.

  • Python
  • PyTorch
  • Ollama
  • Embeddings
  • RAG
Work in progress · Private repo

02

Bank Churn Prediction

From raw banking records to live predictions, end to end.

An end-to-end machine learning system. An eleven-step pipeline handles cleaning, encoding, outlier removal and feature engineering, including a balance-to-salary ratio as a signal of financial stability. Seven classifiers then compete head to head, from logistic regression to XGBoost. The deployed support vector machine serves real-time predictions through a four-tab Streamlit dashboard, so bankers can act before the goodbye email.

7

classifiers benchmarked

92%

accuracy

11

pipeline steps

  1. Clean & encode
  2. Engineer features
  3. Benchmark 7 models
  4. Deploy SVM
  5. Live dashboard
  • Python
  • Scikit-learn
  • XGBoost
  • Pandas
  • Streamlit
  • Plotly

03

Search Engine

A working miniature of web search: crawl, graph, rank, visualize.

Web search in miniature, built end-to-end. A resumable crawler walks real sites and persists pages and links in a relational schema. An iterative PageRank engine scores the resulting graph, redistributing rank lost along the way and reporting convergence on every pass. D3 then renders the top pages as an interactive force-directed network you can drag around.

5

pipeline programs

3

relational tables

1

force-directed network

  1. Crawl
  2. Store link graph
  3. Iterate PageRank
  4. Converge
  5. D3 force graph
  • Python
  • SQLite
  • BeautifulSoup
  • PageRank
  • D3

04

MailDB

An ETL pipeline for one of the messiest data sources there is: real email.

A fault-tolerant spider pulls a developer mailing list archive into a raw store, then a modeling stage rebuilds it as a normalized, compressed database, often around ten times smaller. Along the way it parses inconsistent date formats, canonicalizes domains and merges the many addresses one person uses over the years. D3 turns the result into activity timelines and word clouds. People change email addresses more often than you'd think.

10×

smaller, often, once modeled

4

normalized tables

2

stage ETL design

  1. Spider archive
  2. Raw store
  3. Resolve identities
  4. Normalize & compress
  5. D3 visuals

05

This Website

This portfolio might as well be a project.

The site you're reading is its own engineering project. Every page is prerendered to static HTML, with server components by default and JavaScript shipped only where interaction earns it. Writing lives in MDX with code highlighted at build time, and motion combines spring physics with the browser's native View Transitions API, all of it respecting reduced-motion settings. It also represents an old-school, StackOverflow-dependent backend developer's attempt at reluctantly vibe coding a pretty front-end.

100%

of pages prerendered

10

motion patterns

2

themes

  1. MDX content
  2. Server components
  3. Static prerender
  4. Selective hydration
  5. View transitions
  • Next.js
  • React
  • TypeScript
  • Tailwind
  • Motion
  • MDX
Private repo