Case study2024

TV Leaderboard — live sales standings on the office screens

A digital signage app wired into the client's CRM

Agent performance was visible only inside the CRM — that is, only if you went and looked. We put it on the office screens: a leaderboard that cycles itself, refreshes itself from the CRM and, when something breaks, repairs itself. Nobody climbs on a chair with a keyboard.

StackReactVercelServerlessCRM API
TOP OF THE MONTH · US OFFICEReconnecting…GROSS PROFITCONVERSION1M. Reyes$48,32034%2A. Kapoor$41,90531%3J. Okafor$37,14029%4L. Marin$28,66024%SLIDE 3 / 5
Client
Sales agency with offices in the US and India
Project type
Digital signage / display application
Our role
Architecture, development, CRM integration, deploy
Status
Running permanently on the office screens
The context

The leaderboard existed. Nobody ever saw it.

The client runs sales teams across two offices. Each agent's performance lived inside the CRM — visible only if you went in and looked. Management wanted something else: the standings in the air, on the office screens, all the time. Who's first today. Who's leading this month. How your office compares to the other one.

It isn't a hard technical problem. It's a motivation problem — and the solution had to run by itself, indefinitely, on a TV nobody wants to walk over and refresh.

  • Performance buried in the CRM — visible only if you go looking for it
  • No visible comparison between the two offices
  • An office screen has nobody around to restart it
  • The data is sensitive: profits, conversion rates, who produces what
They wanted the standings in plain sight, permanently — and a system that never asks anyone to go and hit refresh.
What we built

A screen that cycles itself, on loop.

Every 15 seconds the app rotates through a set of slides: today's top agents, the week's top, the month's top, then the other office's top — and finally a team performance slide where the two offices go head to head, each with its supervisor on screen. Then it starts over.

Client CRM
Proxy layer (IP allowlist)
Office screen

The data never goes straight from the CRM to a public screen. It passes through our own layer, which accepts only the client's office IP addresses.

What's on the screen

Automatic rotation, every 15 seconds

Today's top, the week's, the month's, the other office's — plus a team slide putting the two offices head to head, each with its supervisor. Then round again.

Every agent, with their face and their numbers

Photo, rank — crown and medals for the top three — total gross profit generated, and their conversion rate.

The data arrives on its own

An agent who closes a sale climbs the on-screen standings without anyone touching anything.

Each office, its own perspective

Open the app with your office's parameter and your standings always come first, with the other office as the benchmark. One app, two experiences — with no second version to maintain.

Security

The data doesn't leave the office.

The leaderboard carries sensitive information — who produces what, profits, conversion rates. Not something you want reachable on the open internet, at an address anyone who guesses it can open.

So the app never talks to the CRM directly. It goes through our own proxy layer, which checks the IP address the request came from and accepts only the client's office IPs. From anywhere else, the app returns a refusal and the page shows nothing. The data stays in the office, even though the address is public.

No direct CRM access

The screen never speaks to the CRM directly. Every request goes through a layer we control.

Office IPs only

The proxy checks the requesting IP and accepts only the client's offices. From anywhere else — refused.

Public address, private data

Even if someone guesses the URL, the page shows nothing. Confidentiality doesn't rest on the link staying secret.

The real challenge

Running by itself, for months on end.

01

A frozen screen motivates nobody

An office screen has nobody to restart it. If it hangs, it stays hung until somebody notices — and by then it isn't motivating anyone, it's a joke.

The real challenge

We built the app to recover from anything, on its own. There's no scenario that ends with someone climbing on a chair with a keyboard.

02

When the CRM goes quiet, the screen doesn't go blank

Maintenance, a deploy, a network blip — every data source drops eventually. And a big white screen with an ugly error in the middle of the office is worse than no screen at all.

The real challenge

The app keeps the last data it had on screen and quietly shows a “Reconnecting…” indicator in the corner. The standings stay up; only their freshness is flagged, honestly.

03

When it's down, it checks more often

A fixed refresh interval means that once the CRM comes back, the screen can sit on stale data for another half minute.

The real challenge

It normally refreshes every 30 seconds; the moment it detects a problem, it drops to 7 — so it snaps back the instant the CRM returns, not long after.

04

The safety net: it reloads itself

Some things don't get fixed by retrying: the power cut out, the IP changed, something broke deeper in the page.

The real challenge

If it still isn't working after roughly 2 minutes, the app reloads the page itself. That's the difference between a screen that runs forever and one someone has to go fix.

The outcome

The standings are in plain sight. All the time.

The leaderboard now runs in both offices, permanently. Who's first today, who's leading this month, how your office stacks up against the other — visible without anyone logging into anything.

And it runs unattended: nobody starts it in the morning, nobody restarts it when it breaks — because it fixes itself.

15s
Automatic rotation between leaderboard slides
30s → 7s
Refresh interval, tightened automatically when the CRM drops
~2 min
After which the page reloads itself, as the safety net
2
Offices, one app, two perspectives

Got data that would drive the team, sitting hidden in a CRM?

We put it on the screen — in an app that runs unattended for months and never lets the data leave the office.