Card Trend Intelligence
Architecture-ready PRD · v1.0
Product Requirements Document

Card Trend Intelligence

A deterministic early-warning system for collectible demand. It combines performance, cultural attention, card-market participation, liquidity, supply, grading, price, and catalyst evidence to identify under-the-radar, confirming, crowded, and fading trends.

Version1.0
Generated2026-08-09T23:54:16+00:00
SourcePRD Markdown v1.0

Product Requirements Document: Card Trend Intelligence System

Working name: Card Trend Intelligence (CTI)
Document type: Product Requirements Document (PRD)
Version: 1.0
Status: Architecture-ready
Generated: 2026-08-09
Primary audience: Product architecture, data architecture, application engineering, analytics engineering, AI/ML engineering, security, operations
Secondary audience: Collectors, hobby-market researchers, product stakeholders


1. Executive Summary

Card Trend Intelligence is a market-signal platform for identifying emerging, confirming, crowded, and fading trends in trading cards before those trends are obvious from price alone.

The system combines:

  • player or subject performance;
  • general search interest;
  • creator and social breadth;
  • card-specific attention;
  • transaction velocity;
  • active inventory;
  • grading activity;
  • population growth;
  • sealed-product activity;
  • price movement;
  • release and event catalysts;
  • market concentration;
  • provenance and evidence quality.

The core product question is:

What player, character, set, product, or card is gaining real-world or cultural momentum faster than its card market is repricing?

The inverse question is equally important:

Where has card-market enthusiasm become materially stronger than underlying performance, participation, liquidity, or demand?

The platform must not depend on a large language model to determine whether something is trending. Trend classification must be deterministic, explainable, reproducible, and traceable to source observations.

AI may assist with:

  • ambiguous entity resolution;
  • content classification;
  • summarization;
  • catalyst extraction;
  • narrative explanation;
  • analyst workflows.

AI must not be the authoritative scoring engine.

The product should initially focus on sports and major collectible-card ecosystems, while using a generalized ontology and signal model that allows later expansion to entertainment cards, TCGs, creators, and other collectible categories.


2. Product Decision

2.1 Recommendation

Build a signal intelligence platform, not a price guide and not a “top cards to buy” recommendation engine.

The product should rank market conditions and anomalies, not make unsupported investment claims.

The primary output should be:

  1. what is changing;
  2. why it is changing;
  3. how early or mature the trend is;
  4. whether independent sources agree;
  5. which cards or card families are participating;
  6. what evidence would invalidate the trend;
  7. what risks suggest the market may already be crowded.

2.2 Product thesis

Card markets often reprice after earlier signals appear elsewhere.

A simplified lifecycle is:

PLAYER / SUBJECT PERFORMANCE
        ↓
GENERAL ATTENTION
        ↓
CARD-SPECIFIC ATTENTION
        ↓
TRANSACTION VELOCITY
        ↓
INVENTORY ABSORPTION
        ↓
PRICE MOVEMENT
        ↓
GRADING / SUPPLY RESPONSE
        ↓
CROWDING / DISTRIBUTION / FADE

A useful system should identify divergence between these stages.

Examples:

  • performance rises sharply while hobby demand remains modest;
  • search and creator breadth accelerate before prices rise;
  • transaction velocity increases while inventory shrinks;
  • prices surge while sales liquidity falls;
  • graded population grows faster than demand;
  • sealed product appreciates while underlying singles remain weak;
  • one influencer creates apparent hype without broad participation.

3. Problem Statement

Collectors and hobby-market participants currently rely on fragmented signals.

Relevant information is distributed across:

  • sports statistics;
  • Google search behavior;
  • YouTube;
  • Instagram;
  • TikTok;
  • Reddit;
  • marketplaces;
  • grading companies;
  • price guides;
  • release calendars;
  • card manufacturers;
  • leagues;
  • team and player news;
  • live-commerce platforms;
  • card shows and community activity.

Most existing products emphasize:

  • historical prices;
  • recent sales;
  • population reports;
  • portfolio tracking;
  • individual marketplace search.

These products are useful but usually answer:

“What has already happened?”

The opportunity is to answer:

“What appears to be starting, how confident are we, and which evidence supports that conclusion?”


4. Goals

4.1 Primary goals

The system must:

  1. detect emerging player, subject, set, product, and card trends;
  2. detect market trends before price becomes the dominant signal;
  3. distinguish broad trends from concentrated or manufactured hype;
  4. identify performance-to-hobby divergence;
  5. identify player-to-card divergence;
  6. measure transaction and inventory confirmation;
  7. measure grading and population risk;
  8. classify trend maturity;
  9. retain complete source provenance;
  10. expose evidence behind every score and classification;
  11. support historical replay of prior trend decisions;
  12. support scheduled monitoring and alerts;
  13. allow independent replacement of data sources;
  14. support multiple sports and collectible categories without redesigning the core domain model.

4.2 Secondary goals

The system should:

  • support researcher-defined watchlists;
  • detect category-level trends;
  • discover related entities;
  • correlate catalysts with signal changes;
  • expose confidence separately from momentum;
  • support analyst notes and manual overrides;
  • allow later simulation or backtesting;
  • support portfolio/watchlist monitoring without requiring a brokerage-like model;
  • provide machine-readable APIs for future agents and applications.

5. Non-Goals

The initial system will not:

  • guarantee financial returns;
  • issue regulated financial advice;
  • execute purchases or sales;
  • automatically bid on auctions;
  • scrape websites in violation of terms of service;
  • depend on unrestricted TikTok or Instagram access;
  • use an LLM as a numerical trend oracle;
  • treat asking prices as equivalent to verified sales;
  • assume a /1 serial number is inherently valuable;
  • treat player popularity as equivalent to card liquidity;
  • infer card scarcity without population, print-run, or supply evidence;
  • build a generalized social-network crawler;
  • require Kafka, Kubernetes, or other high-complexity infrastructure for the MVP.

6. Target Users

6.1 Advanced collector

Needs to understand:

  • which players or card families are gaining momentum;
  • whether a trend is early or already crowded;
  • whether price movement is supported by liquidity;
  • which card expressions are receiving demand.

Primary action:

Investigate a candidate before making a collecting decision.


6.2 Market researcher

Needs to understand:

  • category and player trends;
  • causal catalysts;
  • cross-platform confirmation;
  • changes over time;
  • anomalies and divergences.

Primary action:

Explain what is changing in the hobby and why.


6.3 Data/technical user

Needs:

  • APIs;
  • raw observations;
  • entity mappings;
  • feature values;
  • source lineage;
  • reproducible scoring.

Primary action:

Build additional models, dashboards, workflows, or alerts.


6.4 Product operator

Needs:

  • collector health;
  • data-source status;
  • API quotas;
  • broken entity mappings;
  • unresolved aliases;
  • scoring-version history;
  • anomaly review.

Primary action:

Keep the trend intelligence trustworthy and operational.


7. Core Product Concepts

7.1 Observation

An immutable measurement from a source.

Examples:

  • Google search index for “Munetaka Murakami cards”;
  • number of YouTube creators mentioning a player;
  • eBay active listing count;
  • median verified sale price;
  • PSA population count;
  • Topps release date;
  • player home-run total;
  • Reddit post count;
  • number of new cards graded in seven days.

An observation is evidence, not interpretation.


7.2 Entity

A canonical thing the system tracks.

Examples:

  • NBA;
  • MLB;
  • Pokémon;
  • Cooper Flagg;
  • Charizard;
  • 2026 Topps Chrome Basketball;
  • 2026 Topps Chrome Cooper Flagg #201;
  • PSA 10 version of a card;
  • a serial-numbered parallel.

7.3 Signal

A derived metric produced from observations.

Examples:

  • seven-day search velocity;
  • creator-breadth acceleration;
  • inventory depletion;
  • transaction growth;
  • grading-population acceleration;
  • price momentum;
  • market concentration.

7.4 Trend

A deterministic classification derived from multiple signals.

Examples:

  • Emerging;
  • Confirming;
  • Established;
  • Crowded;
  • Fading;
  • Re-emerging.

7.5 Confidence

A separate measure representing how much independent evidence supports the trend.

High trend score with low confidence means:

Something is moving strongly, but evidence is concentrated or incomplete.

Moderate trend score with high confidence means:

Several independent signal families agree.


8. Domain Model

The system must support a generalized collectible graph.

8.1 Entity types

category
sport
league
team
ip
game
person
player
character
manufacturer
brand
set
product
card
parallel
variant
grade
grader
event
marketplace
source

The model must be extensible.


8.2 Example sports hierarchy

Sports
└── Basketball
    └── NBA
        └── Dallas Mavericks
            └── Cooper Flagg
                └── 2025-26 Topps Chrome
                    └── Cooper Flagg Rookie #201
                        ├── Base
                        ├── Refractor
                        ├── /99
                        ├── /25
                        ├── Auto
                        └── 1/1

8.3 Example TCG hierarchy

TCG
└── Pokémon
    └── Mega Evolution
        └── Charizard
            └── Charizard ex
                ├── Raw
                ├── PSA 9
                └── PSA 10

8.4 Relationship types

At minimum:

belongs_to
contains
appears_on
plays_for
part_of
manufactured_by
licensed_by
parallel_of
variant_of
graded_by
related_to
triggered_by
precedes
succeeds
alias_of

The architecture may implement this in relational tables initially.

A graph database is not required for MVP.


9. Signal Taxonomy

The system must maintain separate signal families.

9.1 Performance signals

For athletes:

  • recent production;
  • season production;
  • rate statistics;
  • advanced metrics;
  • minutes/playing time;
  • role changes;
  • lineup changes;
  • injuries and returns;
  • prospect call-ups;
  • rookie debuts;
  • awards;
  • records;
  • milestones;
  • team context;
  • playoff exposure.

For non-athlete subjects:

  • release activity;
  • media exposure;
  • tournament activity;
  • IP events;
  • anniversaries;
  • new products;
  • cultural events.

9.2 General attention signals

  • Google Trends;
  • search-result volume where defensible;
  • YouTube publication volume;
  • unique creator count;
  • YouTube views;
  • comments;
  • Reddit discussion volume;
  • general news frequency;
  • publicly accessible social activity.

9.3 Card-specific attention signals

  • videos explicitly mentioning cards;
  • card-specific search terms;
  • marketplace search volume if available;
  • watchlist counts if available;
  • card community mentions;
  • grading searches;
  • set-specific social discussion.

9.4 Commerce signals

  • verified sales per time window;
  • unique buyers where available;
  • unique sellers;
  • auction count;
  • number of bids;
  • median transaction price;
  • transaction price distribution;
  • active listing count;
  • active seller count;
  • inventory depletion;
  • sell-through rate;
  • days-to-sale;
  • bid depth.

9.5 Price signals

  • raw-card median price;
  • graded-card median price;
  • card-family index;
  • player index;
  • category index;
  • sealed-product market price;
  • MSRP;
  • spread between grades;
  • spread between raw and graded.

Asking prices must never be represented as verified transaction prices.


9.6 Collector conviction signals

  • grading submission velocity;
  • PSA/BGS/CGC/SGC population growth;
  • gem rate;
  • percentage of high-grade submissions;
  • sealed-product premium;
  • repeat transaction activity;
  • sustained volume after initial catalyst.

9.7 Supply-risk signals

  • population growth;
  • PSA 10 population growth;
  • listing growth;
  • seller growth;
  • print-run data;
  • serial-number parallel count;
  • number of equivalent “1/1” variants;
  • sealed supply;
  • reprint announcements.

9.8 Catalyst signals

  • release dates;
  • product announcements;
  • league events;
  • awards;
  • milestones;
  • player trades;
  • injuries;
  • debuts;
  • championships;
  • media appearances;
  • movie/game releases;
  • anniversaries;
  • card bounties;
  • conventions;
  • card shows;
  • licensing changes.

Catalysts must be modeled separately from trend scores.

A known catalyst can explain a trend but must not automatically create one.


10. Primary Derived Metrics

10.1 Player Momentum

Represents change in the underlying athlete or subject.

Initial conceptual model:

PlayerMomentum =
  RecentPerformance
+ RoleChange
+ RelativePerformance
+ Exposure
+ CatalystStrength

The exact feature weights must be configurable and versioned by sport.


10.2 Hobby Momentum

Represents card-market attention and participation.

HobbyMomentum =
  SearchAcceleration
+ CreatorBreadth
+ CardAttention
+ TransactionVelocity
+ InventoryAbsorption
+ GradingVelocity
+ PriceMomentum

10.3 Hobby Gap

Core under-the-radar measure.

HobbyGap = PlayerMomentum - HobbyMomentum

Interpretation:

  • large positive value: underlying subject momentum may be ahead of card demand;
  • near zero: hobby and subject momentum are aligned;
  • large negative value: hobby expectations may be ahead of underlying momentum.

Scores must be normalized before subtraction.


10.4 Card Momentum

Represents the market behavior of a specific card or card family.

CardMomentum =
  CardSearch
+ CardCreatorBreadth
+ TransactionVelocity
+ SellThrough
+ InventoryAbsorption
+ PriceMomentum
+ GradingDemand

10.5 Card Gap

Measures whether a particular card is participating in a player's broader trend.

CardGap = PlayerOrSubjectMomentum - CardMomentum

This enables conclusions such as:

Player trend: strong
Rookie autos: strong
Numbered parallels: confirming
Base PSA 10: weak
Mass-produced flagship base: fading

The product should avoid reducing a player thesis to “buy any card of this player.”


10.6 Supply Pressure

SupplyPressure =
  PopulationGrowth
+ ListingGrowth
+ SellerGrowth
+ PrintRunGrowth

10.7 Liquidity Quality

LiquidityQuality =
  TransactionCount
+ BuyerBreadth
+ SellerBreadth
+ BidDepth
- PriceDispersionPenalty
- ThinMarketPenalty

10.8 Creator Breadth

Number of distinct creators discussing an entity within a time window.

This must be reported separately from total views.


10.9 Creator Concentration

Use a concentration measure such as HHI.

HHI = Σ(s_i²)

where s_i is each creator's share of total measured attention.

A high HHI reduces confidence.


10.10 Sell-Through

Where sufficient data exists:

SellThrough =
  SoldListings /
  (SoldListings + ActiveListings)

Alternative fixed-window definitions may be used if marketplaces expose different data.

The chosen definition must be source-specific and documented.


11. Time-Series Requirements

The system must calculate rolling windows for:

  • 1 day;
  • 3 days;
  • 7 days;
  • 14 days;
  • 30 days;
  • 90 days;
  • 365 days where data exists.

For every metric, support:

  • current value;
  • previous-window value;
  • absolute delta;
  • percentage delta;
  • velocity;
  • acceleration;
  • percentile;
  • moving average;
  • volatility;
  • robust deviation;
  • data coverage.

12. Normalization

Absolute values are insufficient.

Every entity should primarily be compared against:

  1. its own historical baseline;
  2. its relevant peer cohort;
  3. its category.

Example:

A niche UFC fighter going from 100 to 700 searches may be more significant than Charizard moving from 500,000 to 530,000.

The initial engine should support:

Standard Z-score

z = (x - μ) / σ

Robust Z-score

Preferred for noisy social and market data:

RobustZ =
  (x - Median(x)) /
  (1.4826 × MAD(x))

Use robust normalization where outliers are common.


13. Trend Scoring

The trend engine must be deterministic and versioned.

An initial configurable model may be:

TrendScore =
  0.20 AttentionAcceleration
+ 0.15 CreatorBreadth
+ 0.25 TransactionVelocity
+ 0.10 SupplyAbsorption
+ 0.10 PriceMomentum
+ 0.08 SealedMomentum
+ 0.07 GradingMomentum
+ 0.05 CatalystContext
- RiskPenalty

These weights are a starting hypothesis, not an industry standard.

They must:

  • be configurable;
  • be stored with scoring version;
  • be testable;
  • support category-specific variants;
  • support later calibration using historical backtests.

14. Confidence Scoring

Confidence is not trend magnitude.

Confidence should increase when:

  • multiple independent source families agree;
  • source coverage is complete;
  • creator concentration is low;
  • transaction counts are sufficient;
  • observations persist across multiple windows;
  • market matching confidence is high;
  • entity resolution confidence is high.

Confidence should decrease when:

  • one source dominates;
  • one creator dominates;
  • transaction count is thin;
  • price dispersion is extreme;
  • entity matching is uncertain;
  • the source is stale;
  • a source is missing;
  • data was inferred rather than directly observed.

Example:

Trend: 91
Confidence: 32

Interpretation:
Strong movement, weak confirmation.

versus:

Trend: 73
Confidence: 94

Interpretation:
Broad, persistent trend confirmed across independent sources.

15. Trend Lifecycle State Machine

Required states:

Dormant
Emerging
Confirming
Established
Crowded
Fading
Re-Emerging

Conceptual transitions:

stateDiagram-v2
    [*] --> Dormant

    Dormant --> Emerging
    Emerging --> Confirming
    Emerging --> Dormant

    Confirming --> Established
    Confirming --> Fading

    Established --> Crowded
    Established --> Fading

    Crowded --> Fading
    Fading --> Dormant
    Fading --> ReEmerging
    ReEmerging --> Confirming

15.1 Example classification logic

Emerging

Typical characteristics:

  • player/subject momentum rising;
  • search acceleration rising;
  • creator breadth rising;
  • price still flat or modest;
  • commerce may be early.

Confirming

Typical characteristics:

  • multiple independent sources agree;
  • transaction velocity rising;
  • inventory contracting;
  • price beginning to respond.

Established

Typical characteristics:

  • sustained participation;
  • strong liquidity;
  • pricing and transactions agree;
  • broad collector participation.

Crowded

Typical characteristics:

  • population and listings rising rapidly;
  • price growth exceeds participation growth;
  • creator concentration increases;
  • underlying player momentum no longer leads hobby momentum.

Fading

Typical characteristics:

  • search declines;
  • creator breadth declines;
  • transaction volume declines;
  • listings increase;
  • prices become less liquid.

16. Hysteresis

The system must prevent daily state flapping.

Example:

Enter Confirming:
score >= 70 for three consecutive observations

Leave Confirming:
score < 55 for three consecutive observations

Entry and exit thresholds must be configurable.

State transitions must be recorded historically.


17. Divergence Detection

Divergences should be first-class outputs.

17.1 Early demand divergence

Search ↑↑
Creator breadth ↑↑
Sales ↑
Price →

Interpretation:

Potential early trend.


17.2 Supply-risk divergence

Graded population ↑↑↑
Sales ↑
Search →
Price ↑

Interpretation:

Potential population dilution.


17.3 Sealed speculation divergence

Sealed price ↑↑↑
Singles →
Transactions →
Social ↑

Interpretation:

Wax speculation may be ahead of underlying single-card demand.


17.4 Distribution divergence

Price ↑↑
Sales ↓
Search ↓
Listings ↑

Interpretation:

Potential market distribution into weakening liquidity.


18. Source Strategy

The data layer must use adapters.

No downstream component should depend on a source-specific schema.


18.1 Initial source priorities

Tier 1: MVP

  • sports statistics / official league data;
  • Google Trends or equivalent search-interest source;
  • YouTube Data API;
  • eBay active inventory;
  • GemRate;
  • PSA population pages or licensed source;
  • Card Ladder or equivalent market index/sales source where commercially available;
  • Topps / manufacturer release calendars;
  • official league/team/player news.

Tier 2: enrichment

  • Reddit;
  • Instagram where approved;
  • additional grading companies;
  • PriceCharting;
  • Fanatics;
  • auction houses;
  • Whatnot data where permitted;
  • card-show calendars.

Tier 3: restricted / optional

  • TikTok;
  • X;
  • premium market-data feeds;
  • proprietary marketplace analytics.

The MVP must remain useful without Tier 3 sources.


19. Source Adapter Contract

Each source adapter should implement a common interface.

Example:

export interface SignalCollector {
  id: string;
  version: string;

  collect(input: {
    entities: EntityRef[];
    since: Date;
    until: Date;
    cursor?: string;
  }): Promise<CollectorResult>;
}

CollectorResult should contain:

interface CollectorResult {
  observations: Observation[];
  nextCursor?: string;

  metadata: {
    source: string;
    collectedAt: string;
    requestCount: number;
    partial: boolean;
    warnings: string[];
  };
}

Collectors must not perform downstream scoring.


20. Observation Contract

Example:

interface Observation {
  id: string;

  source: string;
  sourceType:
    | "official_api"
    | "licensed_api"
    | "public_web"
    | "partner_feed"
    | "manual";

  entityId?: string;
  rawEntityText?: string;

  observedAt: string;
  collectedAt: string;

  metric: string;
  value: number;
  unit?: string;

  dimensions?: Record<string, string | number | boolean>;

  resolution?: {
    confidence: number;
    method: "exact" | "alias" | "fuzzy" | "rule" | "llm" | "manual";
  };

  provenance: Provenance;
}

Observations should be append-only.

Corrections should create new records or correction events rather than mutating historical evidence invisibly.


21. Provenance Requirements

Every observation must preserve:

  • source;
  • source URL or API endpoint identifier;
  • query or request parameters where permitted;
  • retrieval timestamp;
  • observation timestamp;
  • collector version;
  • normalization version;
  • entity-resolution version;
  • source confidence;
  • transformation steps;
  • raw source identifier;
  • licensing or usage constraints when known.

Every derived metric must preserve:

  • input observation IDs;
  • scoring version;
  • calculation time;
  • formula/version;
  • missing-data policy;
  • confidence calculation.

Every trend explanation must trace back to:

claim
→ feature
→ rollup
→ observations
→ source

22. Entity Resolution

Entity resolution is a critical subsystem.

Examples:

Cooper Flagg
Flagg
Flagg RC
2025-26 Flagg
Topps Chrome Flagg
Flagg rookie refractor

These may refer to related but distinct entities.

The system must resolve them hierarchically.


22.1 Resolution order

  1. exact canonical ID;
  2. exact alias;
  3. normalized alias;
  4. domain rules;
  5. fuzzy candidate generation;
  6. optional LLM adjudication;
  7. manual review.

22.2 Confidence thresholds

Example:

>= 0.95  auto-link
0.70–0.95  LLM or rule-assisted adjudication
< 0.70   unresolved/review queue

Thresholds must be configurable.


22.3 Learning aliases

Once a previously unresolved phrase is confidently mapped, store the alias.

Example:

"topps chrome flagg super"
→ CARD-229194

The system should not repeatedly pay AI or computational cost for known aliases.


23. AI Responsibilities

AI is optional and bounded.

Allowed

  • ambiguous entity resolution;
  • classify content as card-related or general;
  • identify likely catalyst from article/post;
  • summarize evidence;
  • generate narrative explanations;
  • create analyst briefings;
  • propose aliases;
  • extract card attributes from unstructured text;
  • cluster related content.

Not authoritative

AI must not:

  • invent prices;
  • infer sales without evidence;
  • set trend scores directly;
  • replace deterministic feature computation;
  • overwrite source data;
  • mark a card “buy” or “sell” without rule-defined evidence;
  • fabricate provenance.

All AI outputs must include:

  • model identifier;
  • prompt/template version;
  • input references;
  • output timestamp;
  • confidence or review status.

24. Player Performance Layer

Sports use cases require a player-performance subsystem.

Each sport needs a feature adapter.

Example MLB inputs:

  • plate appearances;
  • batting average;
  • OBP;
  • SLG;
  • OPS;
  • wRC+ if licensed;
  • home runs;
  • stolen bases;
  • Statcast measures where available;
  • lineup position;
  • playing time;
  • team context.

Example NBA inputs:

  • minutes;
  • points;
  • rebounds;
  • assists;
  • true shooting;
  • usage;
  • starting role;
  • injuries;
  • rookie ladder / awards context.

Player Momentum must use sport-specific normalization.

A 20-point NBA game and a two-home-run MLB game cannot be processed through a naive common metric.


25. Event Detection

The system should recognize unusual performance events.

Examples:

  • career high;
  • multi-home-run game;
  • triple-double;
  • record;
  • debut;
  • game-winning performance;
  • prospect call-up;
  • championship;
  • award;
  • viral moment.

Events should start an observation clock.

Example:

T0
6h
24h
48h
72h
7d
14d

The system should compare pre-event and post-event:

  • search;
  • creator activity;
  • card-specific attention;
  • sales;
  • listings;
  • price;
  • grading.

This allows evaluation of whether an event became a durable hobby trend.


26. Card Selection Layer

A player trend does not imply all cards are desirable.

The system must support card-family analysis.

For each player or subject, group cards by:

  • rookie vs non-rookie;
  • flagship;
  • chrome;
  • autograph;
  • patch;
  • serial-numbered;
  • parallel;
  • insert;
  • base;
  • raw;
  • graded;
  • grader;
  • grade;
  • population;
  • print run where known.

The product should support statements such as:

PLAYER
Kon Knueppel       ↑↑

CARD FAMILIES
Rookie Autos       ↑↑
Numbered Chrome    ↑
Chrome Base        ↓
Flagship Base      ↓↓

27. Risk Model

Trend output must include risks.

Potential penalties:

  • creator concentration;
  • thin transactions;
  • extreme bid/ask spread;
  • rapid population dilution;
  • rapidly increasing active listings;
  • low buyer breadth;
  • large known print run;
  • uncertain entity matching;
  • unverified marketplace transactions;
  • source disagreement;
  • event-only spike;
  • stale data;
  • low sample count.

A trend must never be presented without material risk indicators when they exist.


28. Market Manipulation / Hype Controls

The system must explicitly detect potential manufactured hype.

Signals:

  • one creator responsible for most views;
  • repeated reposts rather than unique creators;
  • sudden price jump on very low transaction count;
  • suspicious wash-like repeated sales if data permits;
  • rapid listing-price increases without verified sale confirmation;
  • highly concentrated seller inventory;
  • low-liquidity cards showing extreme percentage changes.

The product should label these:

Low Evidence
Concentrated Attention
Thin Market
Price Without Liquidity
Supply Expansion
Event Spike

These are evidence labels, not accusations of manipulation.


29. User-Facing Trend Labels

Avoid simplistic “BUY NOW” language.

Preferred labels:

Under Radar
Early Watch
Emerging
Confirming
Established
Crowded
Supply Risk
Event Spike
Fading
Re-Emerging

Optional analyst actions:

Investigate
Watch
Confirm
Avoid Chasing
Review Supply
Review Liquidity

30. Core Screens

30.1 Trend Radar

Primary question:

What is changing right now?

Example:

RANK  ENTITY              STATE         TREND  CONF  Δ7D
01    Hunter Goodman      Under Radar     88    78   ↑18
02    Murakami            Confirming      84    91   ↑11
03    UFC                 Emerging        82    87   ↑24
04    Pokémon Mega Evo    Established     78    94   ↑3
05    Roman Anthony       Crowded         76    89   ↓2

Actual values must come only from computed data.


30.2 Entity Detail

Must show:

  • current trend state;
  • trend score;
  • confidence;
  • player/subject momentum;
  • hobby momentum;
  • hobby gap;
  • card momentum;
  • supply pressure;
  • liquidity quality;
  • catalyst timeline;
  • evidence;
  • card-family breakdown;
  • history;
  • risks.

Example:

Search                  +42%
Independent creators    +67%
Sales/week              +38%
Active listings         -14%
Median verified price   +9%
Graded population       +6%

Known catalyst:
Upcoming product release

Confidence:
5 independent signal families agree

30.4 Under-the-Radar view

Rank by:

High Player Momentum
+
High Attention Acceleration
+
Early Commerce Confirmation
-
Price Saturation
-
Population Risk

This should be one of the primary product views.


30.5 Crowded / Risk view

Rank markets where:

  • hobby momentum exceeds player momentum;
  • price growth exceeds transaction growth;
  • population expands rapidly;
  • listings rise;
  • attention decelerates.

30.6 Card Expression view

For one player:

Player
├── Rookie Autos
├── Numbered Refractors
├── Base Chrome
├── Flagship Base
├── Inserts
└── Patches

Display trend and liquidity independently for each.


31. Visualization Requirements

Recommended visualizations:

  • trend lifecycle timeline;
  • attention vs commerce chart;
  • player momentum vs hobby momentum scatter;
  • trend vs confidence radar;
  • price vs sales velocity;
  • inventory depletion timeline;
  • population-growth timeline;
  • event/catalyst overlay;
  • card-family heat map.

Avoid charts that imply causation when only correlation exists.

Every chart must expose source and time window.


32. API Requirements

Initial API surface:

GET /entities
GET /entities/:id
GET /entities/:id/observations
GET /entities/:id/signals
GET /entities/:id/trend
GET /entities/:id/history
GET /entities/:id/cards
GET /entities/:id/catalysts

GET /trends
GET /trends/emerging
GET /trends/under-radar
GET /trends/crowded
GET /trends/fading

GET /cards/:id
GET /cards/:id/market
GET /cards/:id/population

GET /sources
GET /sources/health

POST /watchlists
POST /alerts

API responses must include:

  • generated timestamp;
  • scoring version;
  • source coverage;
  • confidence;
  • provenance links or IDs.

33. Alerting

Alert types:

33.1 Under-the-radar alert

Trigger when:

  • Player Momentum high;
  • Hobby Gap positive;
  • attention accelerating;
  • early commerce confirmation;
  • price still moderate;
  • confidence above threshold.

33.2 Confirmation alert

Trigger when:

  • transaction velocity increases;
  • inventory contracts;
  • multiple platforms agree.

33.3 Crowding alert

Trigger when:

  • price momentum materially exceeds liquidity;
  • population growth accelerates;
  • listing growth increases;
  • attention stops accelerating.

33.4 Fade alert

Trigger when:

  • attention rolls over;
  • transactions decline;
  • listings rise;
  • price remains elevated or begins declining.

Alert deduplication and hysteresis are mandatory.


34. Scheduling

Initial cadence:

Source type Suggested cadence
player stats hourly/daily depending on season
major events hourly
search interest daily
YouTube 6–24 hours
active inventory 6–24 hours
verified sales daily
grading daily
release calendars daily
category indexes daily
narrative brief daily

Cadence must respect API quotas and source agreements.


35. Data Storage

35.1 MVP

Recommended:

Node.js 24+
TypeScript
SQLite
Drizzle ORM
Hono or Fastify
scheduled jobs
native fetch
Zod
server-rendered or simple static HTML frontend

No distributed infrastructure is required initially.


35.2 Scale path

Potential progression:

SQLite
  ↓
PostgreSQL
  ↓
PostgreSQL + TimescaleDB

Or ClickHouse if analytical event volume becomes very large.

The architecture should not prematurely require a graph database.


36. Suggested Relational Schema

Core tables:

entities
entity_aliases
entity_relations

sources
source_collectors
source_health

observations
observation_corrections

metric_rollups
feature_values

trend_scores
trend_state_history

catalysts
catalyst_entity_links

cards
card_attributes
card_populations

market_listings
market_sales

ai_annotations
analyst_notes

provenance
scoring_versions
normalization_versions

37. Example Entity Schema

CREATE TABLE entities (
  id TEXT PRIMARY KEY,
  type TEXT NOT NULL,
  name TEXT NOT NULL,
  parent_id TEXT,
  canonical_key TEXT UNIQUE,
  created_at TEXT NOT NULL,
  updated_at TEXT NOT NULL
);

38. Example Observation Schema

CREATE TABLE observations (
  id TEXT PRIMARY KEY,
  entity_id TEXT,
  source_id TEXT NOT NULL,
  metric TEXT NOT NULL,
  value REAL NOT NULL,
  unit TEXT,
  observed_at TEXT NOT NULL,
  collected_at TEXT NOT NULL,
  dimensions_json TEXT,
  provenance_id TEXT NOT NULL,
  FOREIGN KEY(entity_id) REFERENCES entities(id)
);

39. Example Rollup Schema

CREATE TABLE metric_rollups (
  id TEXT PRIMARY KEY,
  entity_id TEXT NOT NULL,
  metric TEXT NOT NULL,
  window TEXT NOT NULL,
  value REAL,
  delta REAL,
  pct_delta REAL,
  velocity REAL,
  acceleration REAL,
  robust_z REAL,
  percentile REAL,
  coverage REAL,
  calculated_at TEXT NOT NULL,
  calculation_version TEXT NOT NULL
);

40. Example Trend Schema

CREATE TABLE trend_scores (
  id TEXT PRIMARY KEY,
  entity_id TEXT NOT NULL,

  attention REAL,
  commerce REAL,
  conviction REAL,
  catalyst REAL,
  supply_risk REAL,
  liquidity REAL,

  player_momentum REAL,
  hobby_momentum REAL,
  hobby_gap REAL,

  trend_score REAL NOT NULL,
  confidence REAL NOT NULL,
  state TEXT NOT NULL,

  scoring_version TEXT NOT NULL,
  calculated_at TEXT NOT NULL
);

41. Data Quality

Each metric must include:

  • sample count;
  • source freshness;
  • entity resolution confidence;
  • missing data;
  • source coverage;
  • estimated vs directly measured status.

The UI must not silently treat missing data as zero.

Required semantics:

0 = measured zero
null = unavailable / not observed
estimated = derived approximation

42. Source Health

Every collector should report:

  • last successful run;
  • last failed run;
  • API status;
  • quota remaining where available;
  • freshness;
  • record count;
  • parsing errors;
  • schema drift;
  • authentication status.

Source degradation must reduce confidence automatically when material.


43. Backtesting

The architecture must support historical replay.

Given:

date = 2026-05-01
scoring_version = v1.2

the system should be able to reconstruct:

  • observations available at that time;
  • feature values;
  • trend score;
  • confidence;
  • state.

This prevents hindsight bias.

Future scoring versions should be testable against historical outcomes.


44. Evaluation Framework

The product needs stronger evaluation than “did the price go up?”

Evaluate:

Detection quality

  • precision of Emerging labels;
  • false positive rate;
  • trend persistence;
  • time to confirmation;
  • time before price response.

Market-quality measures

  • increase in transaction velocity after detection;
  • reduction in inventory after detection;
  • sustained search/creator growth;
  • subsequent liquidity.

Risk detection

  • percentage of Crowded alerts followed by demand slowdown;
  • population-risk accuracy;
  • thin-market false-positive rate.

45. Success Metrics

MVP

The MVP succeeds if it can:

  1. track at least 100 player/subject entities;
  2. ingest at least four independent signal families;
  3. retain source provenance for >99% of observations;
  4. produce trend and confidence scores daily;
  5. identify under-the-radar and crowded candidates;
  6. explain every score through traceable evidence;
  7. replay prior scoring decisions;
  8. support at least MLB and NBA without rewriting the platform;
  9. operate for 30 days without manual data reconstruction.

Product success

Longer-term success indicators:

  • useful trends identified before significant price repricing;
  • high agreement between early signals and later transaction growth;
  • low rate of trend alerts based only on one social source;
  • low false-positive rate from thin markets;
  • user investigation time reduced materially;
  • evidence chain considered trustworthy by expert collectors.

46. Security Requirements

The system must:

  • store API credentials in secret management;
  • never expose source credentials to the browser;
  • enforce least privilege;
  • record administrative actions;
  • validate all external data;
  • sanitize untrusted content;
  • protect against HTML/script injection in titles/descriptions;
  • rate-limit public APIs;
  • isolate AI prompts from raw executable content;
  • treat public social/media text as untrusted input.

If deployed publicly:

  • add authentication;
  • add RBAC;
  • separate read-only analyst access from administrative operations.

47. Legal / Data Governance

Each source must record:

  • access method;
  • terms-of-service constraints;
  • commercial-use status;
  • retention restrictions;
  • attribution requirements;
  • redistribution restrictions.

Do not rely on unauthorized scraping for core product functionality.

If a source becomes unavailable, the adapter architecture must allow replacement.


48. Reliability Requirements

MVP target:

  • daily scoring completion >99%;
  • no silent collector failures;
  • failed collectors do not corrupt prior observations;
  • partial data produces partial confidence, not false certainty;
  • source failures must be visible.

All pipelines must be idempotent where possible.


49. Performance Requirements

Initial goals:

  • entity detail response <500 ms from precomputed rollups;
  • trend list <1 second;
  • daily scoring for 10,000 entities <10 minutes on commodity infrastructure;
  • raw ingestion may be asynchronous;
  • expensive AI analysis must not block deterministic scoring.

50. Explainability Requirements

Every trend must support:

Why is this trending?
What changed?
Which sources agree?
What is missing?
What catalyst occurred?
What risks exist?
What would invalidate this trend?
Which cards are actually participating?

The system should expose the top contributing features.

Example:

Trend drivers

+18 Search acceleration
+16 Creator breadth
+14 Transaction velocity
+11 Inventory depletion
 +6 Grading momentum
 +4 Price momentum

Risk penalties

 -5 Population expansion
 -3 Thin-market penalty

51. “Under Radar” Definition

A candidate qualifies only when multiple conditions are met.

Initial conceptual rule:

PlayerMomentum >= high threshold
HobbyGap >= positive threshold
AttentionAcceleration >= medium threshold
Commerce >= early-confirmation threshold
PriceMomentum < saturation threshold
SupplyRisk < high-risk threshold
Confidence >= minimum threshold

The exact values must be configurable and tuned through backtesting.


52. “Crowded” Definition

Conceptual rule:

HobbyMomentum >> PlayerMomentum
AND
PriceMomentum high
AND one or more:
  PopulationGrowth high
  ListingGrowth high
  TransactionGrowth slowing
  SearchAcceleration slowing
  CreatorConcentration increasing

53. Buy/Sell Language Policy

The platform should describe market conditions rather than guaranteeing actions.

Preferred:

Under Radar
Early Confirmation
Momentum Expanding
Crowded
Supply Risk
Liquidity Weakening
Fading

Avoid as authoritative system labels:

Guaranteed Buy
Guaranteed Sell
Moon
Can't Miss

If the product later provides strategy simulations, those must remain separate from observational trend classification.


54. MVP Build Plan

Phase 0 — Research harness

Goal:

Validate source accessibility and matching.

Build:

  • source registry;
  • manual entity list;
  • observation store;
  • simple collector runner;
  • provenance logging.

Track 25–50 entities.


Phase 1 — Core trend engine

Build:

  • entity graph;
  • aliases;
  • time-series rollups;
  • robust normalization;
  • player momentum;
  • hobby momentum;
  • hobby gap;
  • trend score;
  • confidence;
  • state machine.

Support MLB first.


Phase 2 — Market confirmation

Add:

  • eBay active inventory;
  • verified-sales source;
  • GemRate;
  • PSA population;
  • card-family grouping.

Introduce:

  • supply pressure;
  • liquidity quality;
  • card gap.

Phase 3 — Cross-sport support

Add NBA and NFL.

Abstract:

  • player-performance adapters;
  • sport-specific normalization;
  • season context.

Phase 4 — Social breadth

Add:

  • YouTube;
  • Reddit;
  • Instagram where approved;
  • creator concentration.

Phase 5 — Catalyst intelligence

Add:

  • release calendars;
  • league news;
  • official announcements;
  • event detection;
  • post-event observation windows.

Phase 6 — User product

Build:

  • radar;
  • entity pages;
  • watchlists;
  • alerts;
  • provenance drill-down;
  • history;
  • trend lifecycle visualization.

Phase 7 — Backtesting and calibration

Use historical data to:

  • calibrate weights;
  • compare scoring versions;
  • estimate false positives;
  • tune state thresholds;
  • tune risk penalties.

55. MVP Architecture Constraints

The architecture produced from this PRD should default to:

Node.js 24+
TypeScript
SQLite
Drizzle ORM
Hono or Fastify
native fetch
Zod
scheduled jobs
simple web UI

unless a concrete scale requirement justifies something else.

Avoid:

  • Kafka;
  • Kubernetes;
  • microservices;
  • graph databases;
  • vector databases;
  • agent frameworks;

until measured product requirements require them.


56. Reference Component Architecture

flowchart TB

    subgraph Sources
        STATS[Sports / Subject Data]
        SEARCH[Search]
        VIDEO[YouTube]
        MARKET[Marketplace]
        SALES[Verified Sales]
        GRADE[Grading]
        CATALYST[Release + Events]
    end

    subgraph Collection
        ADAPTERS[Source Adapters]
        RAW[Append-only Observation Store]
        PROV[Provenance Store]
    end

    subgraph Knowledge
        ENT[Entity Registry]
        ALIAS[Alias Registry]
        REL[Entity Relations]
        RESOLVE[Entity Resolver]
    end

    subgraph Analytics
        ROLLUP[Time-series Rollups]
        FEATURES[Feature Engine]
        SCORE[Trend Engine]
        CONF[Confidence Engine]
        STATE[Lifecycle State Machine]
        DIVERGE[Divergence Detector]
    end

    subgraph AI
        CLASSIFY[Content Classifier]
        LLMRESOLVE[Ambiguous Resolution]
        EXPLAIN[Narrative Explanation]
    end

    subgraph Product
        API[Application API]
        RADAR[Trend Radar]
        DETAIL[Entity Detail]
        ALERTS[Alerts]
        AUDIT[Evidence / Provenance]
    end

    Sources --> ADAPTERS
    ADAPTERS --> RAW
    ADAPTERS --> PROV

    RAW --> RESOLVE
    ENT --> RESOLVE
    ALIAS --> RESOLVE
    REL --> RESOLVE

    RESOLVE --> ROLLUP
    ROLLUP --> FEATURES
    FEATURES --> SCORE
    FEATURES --> CONF
    SCORE --> STATE
    FEATURES --> DIVERGE

    RESOLVE -. ambiguous .-> LLMRESOLVE
    RAW -. unstructured .-> CLASSIFY
    SCORE -. evidence .-> EXPLAIN

    SCORE --> API
    CONF --> API
    STATE --> API
    DIVERGE --> API
    PROV --> AUDIT

    API --> RADAR
    API --> DETAIL
    API --> ALERTS
    API --> AUDIT

57. End-to-End Flow

Example:

1. Player has unusually strong performance.
2. Performance collector records event.
3. Player Momentum rises.
4. Google/YouTube collectors detect attention acceleration.
5. Card-specific queries begin increasing.
6. Marketplace collector detects transaction growth.
7. Active inventory declines.
8. Price remains relatively flat.
9. Hobby Gap becomes strongly positive.
10. Confidence rises because multiple sources agree.
11. Entity transitions Dormant → Emerging.
12. User receives Under Radar alert.
13. Card-family layer finds rookie autos participating first.
14. Price accelerates later.
15. Entity transitions Emerging → Confirming.
16. Grading population begins increasing.
17. Price growth eventually outruns transaction growth.
18. Listings expand.
19. Entity transitions Established → Crowded.
20. User receives supply/liquidity warning.

58. Example Trend Record

{
  "entityId": "player:mlb:12345",
  "asOf": "2026-08-09T23:00:00Z",
  "scoringVersion": "trend-v1",

  "playerMomentum": 91,
  "hobbyMomentum": 54,
  "hobbyGap": 37,

  "attention": 76,
  "commerce": 52,
  "conviction": 39,
  "supplyRisk": 21,
  "liquidity": 63,

  "trendScore": 79,
  "confidence": 84,
  "state": "emerging",

  "drivers": [
    "performance_acceleration",
    "search_acceleration",
    "creator_breadth",
    "sales_velocity"
  ],

  "risks": [
    "limited_grading_history"
  ]
}

59. Architecture Deliverables Expected From This PRD

The architecture phase should produce:

  1. context diagram;
  2. container/component architecture;
  3. deployment architecture;
  4. source-adapter contract;
  5. canonical domain model;
  6. database schema;
  7. event/data-flow diagrams;
  8. scoring pipeline design;
  9. feature-calculation contracts;
  10. source provenance model;
  11. AI boundary model;
  12. API contract;
  13. alerting architecture;
  14. security model;
  15. operational model;
  16. observability plan;
  17. scale assumptions;
  18. failure-mode analysis;
  19. data retention policy;
  20. build sequence.

60. Engineering Deliverables Expected

The first implementation should include:

/apps
  /api
  /web

/packages
  /domain
  /entities
  /collectors
  /observations
  /provenance
  /rollups
  /features
  /trend-engine
  /confidence
  /alerts
  /sports
  /cards
  /shared

/data
  /seed
  /fixtures

/scripts
  /collect
  /backfill
  /replay
  /score

/docs
  /architecture
  /data-sources
  /scoring
  /provenance

Exact monorepo structure may change during architecture.


61. Testing Requirements

Unit tests

  • normalization;
  • velocity;
  • acceleration;
  • robust Z-score;
  • trend scoring;
  • confidence;
  • state transition;
  • hysteresis;
  • divergence rules;
  • alias resolution.

Integration tests

  • each collector;
  • observation ingestion;
  • provenance chain;
  • daily scoring;
  • replay;
  • alert generation.

Contract tests

Protect against external API schema changes.

Golden datasets

Maintain fixed historical examples where expected score/state is known.


62. Observability

Track:

  • collector runs;
  • collector latency;
  • collector failure rate;
  • records collected;
  • unresolved entities;
  • duplicate observations;
  • scoring duration;
  • confidence degradation;
  • state transitions;
  • alert rate;
  • AI adjudication rate;
  • API usage;
  • source quota consumption.

Unexpected changes should trigger operational alerts.


63. Failure Modes

Source unavailable

Behavior:

  • retain prior observations;
  • mark source stale;
  • lower confidence;
  • do not substitute zero.

Entity unresolved

Behavior:

  • store raw observation;
  • route to unresolved queue;
  • do not contaminate wrong entity.

Marketplace match ambiguous

Behavior:

  • exclude or down-weight;
  • preserve raw result;
  • expose uncertainty.

Price source inconsistent

Behavior:

  • retain source-specific prices;
  • avoid silent averaging;
  • calculate consensus only when matching criteria are met.

AI unavailable

Behavior:

  • deterministic pipeline continues;
  • ambiguous items remain unresolved;
  • scoring proceeds from resolved evidence only.

64. Open Questions

Architecture and product discovery should resolve:

  1. Which verified-sales provider offers the best commercial/API terms?
  2. What level of GemRate API access is practical?
  3. Can Card Ladder data be licensed programmatically?
  4. What Google Trends API access is available to the project?
  5. Which official sports-stat APIs provide sufficient historical depth?
  6. How should card identity be normalized across marketplace titles?
  7. What constitutes a card family for scoring?
  8. How should population growth be normalized by card age?
  9. Should autos, patches, and low-numbered parallels have separate liquidity models?
  10. How should a player changing teams affect hobby baselines?
  11. How should offseason sports be normalized?
  12. What minimum transaction count is sufficient for price momentum?
  13. How should TCG subjects replace athlete-performance metrics?
  14. What source licensing prevents redistribution in the UI?
  15. What alert cadence avoids encouraging reaction to noise?

These questions should not block the first research harness.


65. Product Principles

Evidence before narrative

Every conclusion begins with source observations.

Velocity before absolute popularity

Change matters more than raw scale.

Breadth before virality

Independent participation is stronger than one viral creator.

Liquidity before headline price

A price is only useful when a market exists around it.

Supply matters

Population expansion can undermine apparent demand.

Player and card are separate

A great player does not make every card attractive.

Confidence is separate from momentum

Strong movement can still be poorly supported.

AI assists meaning

AI does not replace deterministic measurement.

Provenance is part of the product

Users must be able to trace conclusions to evidence.

Architecture stays replaceable

Every source adapter can fail or disappear.


66. Final Product Definition

Card Trend Intelligence should become a deterministic early-warning system for collectible demand.

The system observes real-world performance, cultural attention, card-market participation, liquidity, supply, grading, and price.

It then identifies where those signals diverge.

The primary strategic advantage is not prediction in the abstract.

It is the ability to recognize:

attention and participation are changing faster than the card market has adapted.

And, later:

the card market has become more enthusiastic than its underlying evidence supports.

That creates a complete lifecycle:

DISCOVER
  ↓
UNDER RADAR
  ↓
EMERGING
  ↓
CONFIRMING
  ↓
ESTABLISHED
  ↓
CROWDED
  ↓
FADING
  ↓
RE-EMERGING

Every transition should remain explainable, reproducible, and auditable.


Appendix A — Initial Source Registry

Source Signal family MVP importance Integration notes
Official league/stat providers Performance Critical Sport-specific adapters
Google Trends Attention Critical API availability may vary
YouTube Data API Attention / creator breadth Critical Official API
eBay Browse API Inventory Critical Active supply, not complete sold history
GemRate Conviction / population Critical Partner API preferred
PSA Population High Public/partner access strategy
Card Ladder Price / sales High Commercial integration may be needed
PriceCharting Price Medium Paid API
Topps Catalysts High Release/product calendars
Manufacturer sites Catalysts High Source-specific adapters
Reddit Community Medium Terms and API constraints
Instagram Social Medium Permission-dependent
TikTok Social Optional Restricted access
X Social/news Optional Paid API

Appendix B — Example Daily Brief

CARD TREND INTELLIGENCE — DAILY

UNDER RADAR

1. Player A
   Player Momentum       92
   Hobby Momentum        51
   Hobby Gap            +41
   Confidence            86

   Drivers:
   - performance acceleration
   - search +78%
   - unique card creators +44%
   - verified sales +31%
   - representative prices +6%

   Risk:
   - limited high-end liquidity

CONFIRMING

2. Player B
   Player Momentum       88
   Hobby Momentum        74
   Hobby Gap            +14
   Confidence            93

   Drivers:
   - transaction volume rising
   - listings contracting
   - rookie autos outperforming base

CROWDED

3. Player C
   Player Momentum       75
   Hobby Momentum        96
   Hobby Gap            -21
   Confidence            91

   Risks:
   - PSA 10 population +18% / 30d
   - listings +22%
   - search momentum flattening
   - price remains near peak

Numbers above are illustrative only.


Appendix C — Architecture Decision Guidance

The architecture should optimize first for:

  1. auditability;
  2. source replaceability;
  3. deterministic replay;
  4. simple local development;
  5. evidence-quality visibility;
  6. category extensibility.

Scale should be added only when measured requirements justify it.

The system is fundamentally:

OBSERVATIONS
     +
ENTITY GRAPH
     +
TIME-SERIES FEATURES
     +
DETERMINISTIC SCORING
     +
CONFIDENCE
     +
PROVENANCE

Everything else is a presentation or enrichment layer.