Mining Exam Papers With Vision LLMs: Building a PDF Question Extractor

Building a scalable question bank extractor using vision language models. Qwen2-7B on serverless GPUs, PyMuPDF text extraction, structured JSON output, and parallel batch processing of 1000+ question papers. The hard parts, the broken parts, and what I’d do differently.

June 18, 2026 · 7 min · Sanjay Upadhyay

Your Own Private LLM Farm: Bare-Metal K8s With GPU Autoscaling

I wanted my own LLM inference setup on bare metal — GPU-backed K8s, autoscaling that actually works with vLLM metrics, and auth so random internet people can’t drain my GPU credits. Here’s how it went.

June 18, 2026 · 10 min · Sanjay Upadhyay

Pi.dev: The Coding Agent You Actually Control

Pi is a coding agent that doesn’t tell you how to work. Terminal-native, extensible via TypeScript, with 15+ providers and four operating modes. Here’s how it works, what makes it different from Cursor and Claude Code, and how to build your first extension.

June 3, 2026 · 7 min · Sanjay Upadhyay

How Architects Design Stuff That Actually Scales

A deep look at how architects like Gregor Hohpe (Google Cloud, AWS veteran) design frameworks that scale and handle failure. The 8-step framework, the cylinder problem, and why step 8 is the hardest.

May 18, 2026 · 7 min · Sanjay Upadhyay