Grid Dashboard

Handcrafting Juspay's AI infrastructure control plane

An internal platform serving 510+ engineers daily, built from scratch. Did the research, architecture, visual design, and shipped the production code.

Role

Design + Frontend Code + Visual System

Stack

React · TypeScript · Vite · Blend Design System

I designed and built Grid Dashboard the same way this photo looks: a row of coding agents running on one monitor, the design open on the other, and no real handoff between the two. Same person deciding what a screen should say and then writing the frontend that says it. This is the short version of what got made, and why.

A pull request list titled infra / grid-ai-onboarding, showing a scattered trail of UI-fix and config PRs

The problem? A platform running blind

Juspay runs a serious chunk of its AI workloads on self-hosted GPU infrastructure - models like Kimi, GLM, and Minimax sitting on expensive hardware that costs money every hour, whether or not anyone's actually using it.

The team already had LiteLLM in front of all of it: an open-source AI gateway that puts one OpenAI-shaped endpoint over 100+ models and handles the platform plumbing - virtual keys, per-team budgets, spend tracking, an admin UI. 682 keys, 510+ engineers a day, every call routed through one door. It handled routing beautifully.

What it couldn't tell you was everything that came next. Are the GPUs being used right now, or burning money idle? Which team is eating the most budget? Why is the cost-analysis number different from what GCP billing says?

Those were the questions my team actually kept asking, and none of them were the gateway's job.

Grid Dashboard was Juspay's answer.

This is what the current LiteLLM dashboard looks like - rows of keys and spend, and not much else.

Where the gateway stopped. The gap

A gateway sees requests. It tracks spend per key beautifully. But our spend didn't live in one place - it was split across Vertex AI, self-hosted GPU models, and SaaS plans like Claude Pro, each billing in a different shape. LiteLLM could tell you a key cost money; it couldn't reconcile three billing worlds into one honest number.

And it knew nothing about the hardware underneath a self-hosted model. GPU utilization, off-peak idle, hours burned versus hours wasted, model health when something quietly fell over - all invisible.

The people questioning whether the numbers were even right had a point, because no view actually tied the infrastructure to the cost.

So we built Grid on top of it

Grid keeps LiteLLM as the gateway and turns its request logs into an actual control plane. Two audiences, two completely different jobs, one dataset.

For everyone else, "the non-admin experience."

Most of those 500 engineers don't want a cost cockpit; they want to ship. So they get a clean path: onboarding, their own keys, model discovery, and their personal usage - and none of the admin machinery they'd never touch.

Welcome to Grid sign-in screen with a Sign in with Google button

Login Page

Select your team screen with a round table illustration

Onboarding and Team Selection

Setting up OpenCode guide with step-by-step instructions for creating an API key
Landing Page
Usage guidelines table ranking models by speed and total tokens, with three how-to-decide cards below
Usage Guidelines to setup Coding Agents
Create New API Key modal with a key name field and expiry duration options

Creating API Keys

Four glowing isometric server racks on pedestals

Visual Explorations for the GPU Pulse Page

OpenCode setup documentation with a code snippet showing a getPaymentPriority function
Coding Agents Sections

For admins

One view that reconciles Vertex, self-hosted GPU, and SaaS spend into a single trustworthy figure, checked against GCP billing so people stop doubting it - with the GPU story finally attached: utilization, off-peak idle, hours versus wastage. Moved aggregation into the database and cached it every six hours. The 5-15 second wait became sub-two-second.

Cost Analysis Dashboard showing total spend, hosted VLLM and Vertex AI split, and a team spending details table
Cost Analysis Dashboard for admins
Batch Budget Update table with selected users and a floating Budget Settings modal
Budget Settings modal with budget limit and duration fields
Budget Settings of Users

Internal tools get treated like plumbing

The dashboard doesn't need to be boring. Nobody's watching, so nobody bothers - you get grey tables, default components, and the unspoken assumption that if it works, looks don't matter.

Grid serves 500 engineers every day. That's not a reason to care less about how it looks. It's the reason to care more.

So I designed it like it was going in front of customers. A real visual system, not stock dashboard parts: the gauges, heat cells, status chips, and dense tables you've been scrolling past are all deliberate, all built to a consistent language. Craft and clarity aren't a trade-off. The tables load in under two seconds and they look like someone gave a damn.

Bengaluru, India--:--
You made it to the bottom. Respect.