All Work
Product BuildDelivery intelligence

SPOT

A project-management intelligence platform for software teams. It aggregates Jira, GitHub, ClickUp and Linear into sprint health, velocity trends, burndown risk and client-facing project visibility.

In development — parts of this product have not shipped yet.

SPOT — Sign in — captured from the running app against a local database.
Sign in — captured from the running app against a local database.

The problem

A delivery lead running several teams has four tools telling them four partial stories. Jira knows the tickets, GitHub knows the code, ClickUp and Linear know whatever a given team migrated to. None of them knows whether the sprint is in trouble.

SPOT pulls all four into one model and answers the question the tools cannot: is this on track, and if not, where did it start going wrong.

The scale of the data problem

One hundred and fourteen data models and three hundred and twenty-four API routes is not incidental complexity — it is what it costs to normalise four project trackers that disagree about what a task, a sprint and a status even are.

Most of the design work on a product like this is deciding what not to show. The aggregation is the hard part; the interface earns its keep by hiding almost all of it.

Under the interface

A hundred and fourteen Prisma models and three hundred and twenty-four API routes are what it takes to make four trackers agree. Jira, GitHub, ClickUp and Linear each model a task, a sprint and a status differently; the data layer's whole job is to reconcile them into one before a single chart is drawn.

The front end — seventy-five screens and a hundred and eighty-three components on Next.js 15 and React 19 — is deliberately the smaller half of the codebase. Turborepo keeps the shared model and the app that renders it in one place.

The command centre

The dashboard is the product's one opinionated screen. Project cards show sprint health at a glance, and in their pre-sync state — before any tracker is connected — they render progress skeletons rather than invented numbers, because a delivery tool that fakes a green status on day one has taught its user not to trust the green ones.

Everything the aggregation makes possible is filtered through the question a delivery lead actually asks: is this on track. Velocity trends, burndown risk and the client-facing views all hang off that one question rather than leading with data nobody asked for.

Scope

Screens
75
Components
183
API routes
324
Data models
114

Screens

SPOT — The command centre. Project cards sit in their pre-sync state — no tracker is connected, so they show progress skeletons rather than invented numbers.
The command centre. Project cards sit in their pre-sync state — no tracker is connected, so they show progress skeletons rather than invented numbers.

What we did

  • Product design
  • Interface design — 75 screens
  • Data modelling
  • Full-stack build
  • Integrations

Built with

  • Next.js 15
  • React 19
  • TypeScript
  • Tailwind
  • Prisma
  • PostgreSQL
  • Turborepo