Docs / PigPro / Trading card anatomy

Every field on the PigPro player card, and where it comes from.

Trading card anatomy

The PigPro trading card is the single player surface across the whole app. Clicking any player name or PigPro score pill โ€” on /draft-analytics, /lineup, /waivers, /offseason-intel, /players, the dashboard, the draft board โ€” opens the same card, backed by the same endpoint (/api/pigpro/card/<identifier>).

Layout

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                                                   โ”‚  โ† foil border colored by tier
โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”                                          โ”‚
โ”‚   โ”‚    โ”‚   RB                      โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ     โ”‚
โ”‚   โ”‚ H  โ”‚   Player Name             โ”‚ 8.33   โ”‚     โ”‚  โ† PigPro score ring
โ”‚   โ”‚ S  โ”‚   TEAM ยท 26 y ยท 4 yrs     โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ     โ”‚
โ”‚   โ””โ”€โ”€โ”€โ”€โ”˜                           PRIME          โ”‚  โ† tier strip
โ”‚                                    PRIME โ†‘+0.3   โ”‚  โ† tier label + ฮ”7d
โ”‚                                                   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   PROJECTED      CEILING         FLOOR            โ”‚
โ”‚     276            345             207            โ”‚
โ”‚   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€        โ”‚
โ”‚ ๐ŸŽฏ COMPONENT BREAKDOWN                            โ”‚
โ”‚   ML Projection  27.6%  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ  9.61 (+2.65)  โ”‚
โ”‚   ADP Value      23.0%  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ  9.86 (+2.27)  โ”‚
โ”‚   VOR            18.4%  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž  9.74 (+1.79)  โ”‚
โ”‚   Consistency     9.2%  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–    7.22 (+0.66)  โ”‚
โ”‚   Boom Potential  9.2%  โ–ˆโ–ˆ          1.89 (+0.17)  โ”‚
โ”‚   Usage           8.0%  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ    7.80 (+0.62)  โ”‚
โ”‚   Situation       2.3%                            โ”‚
โ”‚   Recent News     2.3%  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ       5.00 (+0.12)  โ”‚
โ”‚                                                   โ”‚
โ”‚ ๐Ÿˆ CONTEXT                                        โ”‚
โ”‚   League ADP: 10.0 (drafted 2x, rd 1)             โ”‚
โ”‚   NFL Draft: 2020 ยท R1 ยท #22 overall              โ”‚
โ”‚   Combine: 4.51s 40 ยท 205 lb                      โ”‚
โ”‚                                                   โ”‚
โ”‚ ๐Ÿ“ˆ 30-DAY TREND                                   โ”‚
โ”‚   [sparkline SVG]                                 โ”‚
โ”‚                                                   โ”‚
โ”‚                         Updated 2026-04-19        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Hero section

Foil border

The outer border uses a CSS linear-gradient that shimmers subtly. Color is keyed to tier:

  • Gold (#f59e0b โ†’ #fbbf24 โ†’ #fef3c7) โ€” Tier 1 / PRIME (score โ‰ฅ 7.5).
  • Silver (#94a3b8 โ†’ #cbd5e1 โ†’ #e2e8f0) โ€” Tier 2 / CHOICE (5.5 โ€“ 7.5).
  • Bronze (#92400e โ†’ #d97706 โ†’ #fcd34d) โ€” Tier 3 / SELECT (3.5 โ€“ 5.5).
  • Gray (#334155 โ†’ #64748b) โ€” Tier 4 / RESERVE (< 3.5).

Headshot

Pulled from nflverse_rosters.headshot_url. If null, falls back to an initials circle colored by position (QB blue, RB green, WR amber, TE red, K cyan, DEF gray).

Identity strip

  • Position โ€” colored strip (matches card's position color).
  • Name โ€” the player's full name (nflverse_player_ids.name).
  • Meta line โ€” team abbreviation (amber), age (years), years_exp, height (feetโ€“inches), weight (lb). Any of these that are null are simply omitted.

Score panel

  • PigPro ring โ€” big radial gradient gold circle with the 0โ€“10 score to 2 decimal places. Score font size is 20px inside a 72ร—72 ring.
  • Tier strip โ€” PRIME / CHOICE / SELECT / RESERVE. Capitalized, 9pt, white on tier color.
  • Recommendation pill โ€” same label as the tier (PRIME / CHOICE / SELECT / RESERVE), colored by tier.
  • ฮ”7d โ€” change in pigpro_score versus 7 days ago. Green โ–ฒ for positive, red โ–ผ for negative, dash for flat. Requires at least 7 days of snapshot history; shows nothing until we've had 7 days of nightly pigpro-scoring runs.

Stats strip

Three big numbers. All in PPR points.

Field Source Notes
PROJECTED player_projections.projected_points White. Total PPR we expect this season.
CEILING player_projections.ceiling_score Green. 1.25ร— projected.
FLOOR player_projections.floor_score Gray. 0.75ร— projected.

Component breakdown

Eight rows, one per component (v1.1 Hybrid). Each row shows:

  • Label โ€” human-readable ("ML Projection", "Recent News", etc.).
  • Weight โ€” the weight as a percent, to match the formula.
  • Fill bar โ€” width = value / 10 ร— 100%, gradient from position color to gold.
  • Value (contribution) โ€” the 0โ€“10 value, and in parentheses the contribution to the final score (value ร— weight ร— position_multiplier). The contributions sum to the PigPro score.

The contribution math is live

These numbers are read directly from player_projections.model_features (JSONB) for the latest scoring run โ€” they're not retroactively computed in the browser. If the formula changes, restart pigpro-scoring and the cards update on the next refresh.

Context section

Only shown when there's data in at least one row.

  • League ADP โ€” live Yahoo ADP from adp_records (source='yahoo'), refreshed daily by the yahoo-adp-persist CronJob. Shows mean pick number, average round, and percent drafted.
  • NFL Draft โ€” year, round, overall pick. Pulled from nflverse_player_ids.draft_* fields.
  • Combine โ€” 40 time, weight, vertical, broad jump, cone, shuttle. Only recent classes have data (2024 onward in our table).

News impacts

If the news-digest CronJob has extracted recent news for this player, up to 3 items show here. Each row:

  • Direction badge โ€” color-coded left border (green positive, red negative, gray neutral).
  • Magnitude score (0โ€“1).
  • One-sentence reason (what the LLM said the news means).
  • Date.

During offseason quiet periods (like right now, April 2026) this section may be empty. During season with actual beat-writer news, it lights up.

30-day sparkline

SVG polyline of the last 30 snapshots of this player's pigpro_score. Each daily pigpro-scoring run adds one row to pigpro_score_history; we plot them chronologically. Y-axis auto-scales to the player's own range, so a consistent-high player looks flat (by design โ€” they ARE consistent).

If fewer than 2 snapshots exist (brand-new player, or first week of the tool), the section shows "No history yet โ€” check back after a few daily snapshots."

  • College (left) โ€” pulled from nflverse_player_ids.college.
  • Updated date (right) โ€” players.pigpro_updated_at. Typically same-day since pigpro-scoring runs every morning.

How to open a card

Surface Trigger
/draft-analytics Click the PigPro score cell (colored pill) in the Player Database table.
/lineup Click the player's name OR PigPro pill.
/waivers Click anywhere on the pickup card.
/offseason-intel Click the expand arrow on a Player Focus List row; the inline expand shows subscores, clicking the name opens the full card.
/players (Player Hub) Click any player name or player card.
/draft, /draft-visualizations, dashboard Same โ€” any element with data-player-name attribute.

All surfaces share one JS module (static/js/pigpro-card.js) and one CSS file (static/css/pigpro-card.css). A legacy bridge catches any lingering openPlayerCard() / openPlayerCardByName() call sites and routes them to the same card.

Want more on the card?

See the formula for why the component weights are what they are, and the API reference for the exact response shape.