The sales-floor board — a standalone 1920×1080 leaderboard served
straight from the API and cast onto the floor TVs. It is not part of this app and keeps its own
arena palette; this page is the reference for what it shows and how it behaves.
Standings load live. The board pulls them from
/api/rankings/data, and the 18 Aug 2026 capture was serialized as
served — before that fetch resolved. The wall, the ticker, the score bug, the pipeline chips and the
sync label were all still empty. Every figure below is therefore shown as —, which is the board’s
own rendering for a null value. No rep, team or deal number on this page has been invented to fill a gap.
Divisions
Six columns on the wall, left to right — the three-letter chip is the
abbreviation the DIVISION RACE panel uses
ICE
Ice
Column 1 · awaiting live data
Your division
MTD / goal—
REPS —Active / goal
Team Maverick · 31 active reps · Blake Woodruff
FIR
Fire
Column 2 · awaiting live data
MTD / goal—
REPS —Active / goal
Teams and rosters arrive with the feed
STL
Steel
Column 3 · awaiting live data
MTD / goal—
REPS —Active / goal
Teams and rosters arrive with the feed
GXY
Galaxy
Column 4 · awaiting live data
MTD / goal—
REPS —Active / goal
Teams and rosters arrive with the feed
SPA
Sparta
Column 5 · awaiting live data
MTD / goal—
REPS —Active / goal
Teams and rosters arrive with the feed
OLY
Olympus
Column 6 · awaiting live data
MTD / goal—
REPS —Active / goal
Teams and rosters arrive with the feed
On the board
Eight regions, top to bottom
Layout
A fixed 1920×1080 stage, scaled and letterboxed to whatever screen it
lands on; below 700px it unstacks into a single scrolling column with the goal panel first
FLOOR WIRE
The top band. Approvals, major deals, big days and on-fire streaks scroll left as one woven marquee, with the TENURE key pinned to the right.
38px
Top bar
The month championship lockup on the left, the LIGHTNING vs THUNDER score bug centred, and the control cluster on the right over a row of pipeline chips.
86px
The wall
Six division roster columns, ICE through OLYMPUS, each a stack of team blocks that auto-pages through its roster so a long division still gets screen time.
6 columns
COMPANY GOAL
Achieved over goal in one enormous number, a bar with a hatched shortfall band and a PACE marker, then DEALS TO GO, ACHIEVED and MONTH GONE over /DAY ACTUAL, /DAY NEEDED and LIFT.
3 tiles
TOP 20 MANAGERS
RK · TEAM · MTD · GOAL · WK, each row railed in its team’s division colour.
20 rows
TOP 15 REPS
The same rank chips and division rail, with the rep’s volume under the name and the deal count on the right.
15 rows
DIVISION RACE
Six bars ordered by MTD, labelled with the three-letter abbreviations and read as MTD/GL.
6 rows
Rep card
Any rep row opens it: seven stat tiles over a thirteen-column deal log, ending in a TOTALS row.
on demand
Standings
Six division rosters — teams, reps, MTD and previous-month counts
No standings in this capture
Rows are built entirely in the browser from the live feed, and the capture
caught the page before that feed arrived. Nothing was lost here — there was nothing in the
markup to lose.
When a filter empties a division the board says so in its own words —
“NO 1ST / 2ND / 3RD-MONTH REPS HERE”, “NO NEW-MANAGER TEAMS HERE” or
“NO VETERAN-MANAGER TEAMS HERE”.
Controls
Top right of the board, above the pipeline chips
Filters and search
The board’s four controls, in its own wording — each one persists its
choice and re-renders the board in place
On the board these filter the wall in place. Here they are inert — there are no
standings to filter, and the month select is disabled because the board itself hides it until the feed
offers two or more months. SEARCH REP… is pointed at this app’s command
palette instead, which searches pages, reps and actions; the board’s own dropdown matches on rep,
team or manager name and shows at most eight hits.
Header readouts
Everything the top bar reports comes from the same payload, so all of it is a
placeholder here
LIVE
Pipeline chips
APPR —PEND —RCVD —DECL —
LIGHTNING—Conference MTD
THUNDER—Conference MTD
DEALS TO GO—Company goal
ACHIEVED—Percent of goal
MONTH GONE—Percent of month
/DAY NEEDED—Run rate to close
The sync label reads SYNCED {TIME}, and switches to
SYNCED {MON D} · {TIME} when the last good sync was not today in
America/Chicago — a time-only label would hide day-level staleness on a TV nobody is watching.
The header line under the logo counts divisions, teams and active reps, where active means a rep with
at least one deal this month; it was still showing its static fallback,
SALES FLOOR · 6 DIVISIONS · 39 TEAMS · 566 REPS,
when the capture was taken.
How the board works
Behaviour read out of the board’s own script
Data, refresh and filters
One endpoint, a self-healing refresh loop and three filters — all of it running
unattended on a screen with no keyboard
Fetches /api/rankings/data
Kicked off in the first inline script with cache: no-store so it is already in flight while the page parses; the board waits on it at load. A past month is a one-off fetch of the same endpoint with a month parameter.
GET
Re-fetches every 5 minutes
A 20-second tick drives a 5-minute cadence plus 0–30 seconds of per-tab jitter, so a wall of TVs does not all reload on the same second. Between 00:00 and 05:00 America/Chicago it drops to once an hour.
5 min
Re-renders in place
The refresh tears down every tracked timer and listener and rebuilds the DOM rather than reloading — a reload would drop the TV out of fullscreen.
never reloads
Waits its turn
A refresh is skipped while a rep card, a celebration or the search dropdown is open — unless it is more than 10 minutes overdue, in which case freshness wins.
busy guard
Hard-reloads only when it must
A new ETag on the page itself, 24 hours of uptime, six consecutive failed fetches (about 30 minutes), or a failed first fetch. Reloads are deferred while fullscreen is engaged, up to a 30-minute cap.
4 triggers
Dead-man switch
A separate 5-minute interval reloads the page outright if the board never signalled that it came alive within 15 minutes, so a wedged tab cannot sit dead on a TV.
15 min
Manager cohort
ALL MGRS, NEW MGRS or OLD MGRS, persisted as board-cohort. The select is hidden entirely — and the cohort forced back to all — until the new-manager roster sheet has synced.
3 options
NEW REPS toggle
Narrows the wall rosters and the TOP 15 REPS rail to first-, second- and third-month reps. The company goal, the conference race, the division race and the manager rail stay full-floor, so a filtered view keeps its context.
board-reps
Month select
Only revealed when the feed offers two or more months. Picking a past month fetches once and pauses the live loop; returning to the current month resumes it. The select is disabled during the fetch and snaps back if it fails.
2+ months
Vested tick
Reps and managers listed as vested carry a verified tick on their row, labelled “Vested for residuals”.
residuals
LIVE chip
The pulsing red LIVE chip is static markup, not data-driven. It says the layout is live; it says nothing about whether the last fetch succeeded — the SYNCED label is the one to read for that.
always on
When the feed is down
The body is replaced with “Board data unavailable” over the error message and “— retrying shortly”, and the page reloads itself after 60 seconds.
60s retry
Five keys of local state, and a janitor that deletes anything else under the board’s prefixes
on boot, so no forgotten data lingers on a shared TV:board-themeboard-cohortboard-soundboard-celebratedboard-reps
Board design language
A spec, not data — the board keeps its own dark arena palette and this
page deliberately does not borrow it
Medals and tenure
Rank chips on the manager and rep rails; tenure on every wall row
Rank medals
1First place · gold #F5C044
2Second place · silver #C9D2DE
3Third place · bronze #D0894C
Tenure tiers
11ST MO · first month #FFD54D · light #A87A0E
22ND MO · second month #3DD9E8 · light #0B7E91
33RD MO · third month #43D986 · light #128A52
Fourth place and below drop the chip entirely and render the number in the board’s
dim ink. Tenure paints the rep row’s left border and name, the TENURE key on the floor wire and
the pill on the rep card; the three tier colours are the only ones the board re-mixes for its own light
theme, because the dark values are too bright on white.
Division colours
One hue per division, carried on a custom property
Ice ICE#52A7F0
Fire FIR#FF6B4A
Steel STL#A8BACC
Galaxy GXY#9C7BFF
Sparta SPA#E84C5D
Olympus OLY#F0B94A
Each division’s hue is set once per column and reused by the column header rule,
the team header wash, the left rail on manager and rep rows, the dot on the division race and the glow
around an open rep card. The division cards at the top of this page use the same values, applied the
same way.
esc
↑↓ navigate↵ openG then a letter jumps/ filter this page