Methodology
How Sygnls produces a signal
This page describes only what the running code does. Where the implementation has no explicit rule, that is stated rather than explained away.
Data current to · 190 of 431 items classified · 60 entity-extracted · Methodology
1. Source inclusion and exclusions
Two feeds are ingested, on a 30-minute schedule:
retailnews.ai/rss.xml— articles, stored as source “news”.theretailpodcast.podbean.com/feed.xml— episodes, stored as source “podcast”.
Items are deduplicated on their feed identifier. Nothing else is crawled, purchased or licensed. Ask Sygnls additionally reads the RetailNews.ai article store directly and cites only items that carry an exact stored URL.
Flagged for review There is no editorial exclusion list, no paywall handling and no source-quality tiering in code. Every item from both feeds is treated equally at ingestion.
2. Taxonomy
A fixed list of 15 themes, hard-coded in the application, is the only vocabulary a classifier may use: Agentic commerce, AI in operations, Store experience & design, Retail media & store-as-media, Supply chain & fulfilment, Quick commerce & delivery, Loyalty & personalisation, Payments & checkout, Shrink & loss prevention, Resale & circularity, Social & creator commerce, Brand & marketing, Workforce & frontline, Consumer demand & value, Leadership & strategy.
Flagged for review The taxonomy carries no version number or effective date in code, so historical tags cannot be attributed to a taxonomy revision. Versioning needs to be added.
3. Rolling windows
- Five Signals: a 7-day window compared against the immediately preceding 7 days. If the current 7 days contain no tagged items, the page steps back one week at a time, up to 8 weeks, and clearly labels the week it is showing.
- Theme trends: a rolling 84-day (12 week) window, bucketed by week.
- Outcomes: 28 days before an event as the lead window, the 28 days before that as the baseline, and 28 days after for reported events.
4. Voice classification and weights
Every item is assigned one speaker type by a model: operator, trade press, vendor or promotional. The credibility weights defined in code are operator 1.4, trade press 1, vendor 0.7, promotional 0.4.
Flagged for review These weights are defined but not applied in the Five Signals weekly calculation, which passes raw item counts into the maturity function. Weighting is therefore currently inactive on /signals. Any statement that weekly signals are voice-weighted would be false.
5. Theme maturity formula and thresholds
Growth = weighted recent volume ÷ weighted prior volume (2.5 when the prior window is zero and the recent window is not). Stages are then assigned in this order:
- No items in the current window → Declining.
- Prior window ≥ 3 items and growth < 0.7 → Declining.
- Volume share ≥ 12%, growth < 1.6 and operator share ≥ 30% → Mainstream.
- Growth ≥ 1.6 with ≥ 3 recent items → Peaking.
- Volume share ≥ 12% with operator share < 30% → Peaking.
- Otherwise → Emerging.
Note what this means in practice: a theme whose volume falls from 28 to 22 has growth 0.79, which is above the 0.7 Declining threshold, so it is not labelled Declining. It falls through to Mainstream, Peaking or Emerging on share and voice mix — not on direction of travel. Direction is always shown separately as the raw counts and, where the base allows, the percentage change.
Flagged for review The 0.7, 1.6, 12% and 30% thresholds are hand-set constants. They have not been validated against any outcome data.
6. Stance and divergence
Each theme tag also carries a stance: positive (+1), neutral (0) or sceptical (−1), assigned by a model. Operator voices form one camp, trade press the other; vendor and promotional voices are excluded from divergence entirely.
Divergence gap = operator mean stance − press mean stance. Score = |gap| ÷ 2. A score ≥ 0.35 is “Contradiction”, ≥ 0.18 is “Tension”, below that is “Aligned”. Both camps need at least 2 stanced items or the result is “Insufficient data”.
7. Entity extraction and aliasing
A model extracts up to 12 entities per item, typed retailer, vendor, executive or technology. Names are slugified for identity. On top of that, a canonical layer applies fixed rules before anything is stored:
- Known aliases resolve to one canonical entity (for example M&S → Marks & Spencer, Fair Price → FairPrice).
- Geographic regions and markets are rejected as retailers.
- Generic industry words are rejected.
- First-name-only executives are flagged for human review and excluded from public listings until a full identity is verified.
Rejected and merged entities are never deleted: they keep their history and are remapped to the canonical record.
Flagged for review Alias resolution is rule-based and hand-maintained. There is no fuzzy or embedding-based matching, so unlisted spelling variants will still create separate entities until an editor merges them.
8. Outcome scoring
A model extracts dated public outcomes (earnings, openings, closures, funding, M&A, leadership changes, launches, layoffs, expansion, regulatory) from each item. For each outcome, entity mentions are counted in the 28 days before the event (lead) and the 28 before that (baseline).
Velocity = (lead − baseline) ÷ baseline. Verdicts: zero lead mentions is “Quiet”; velocity ≥ 1 with ≥ 2 lead mentions is “Strong lead”; velocity ≥ 0.25 is “Lead”; otherwise “Flat”.
Flagged for review This is descriptive, not predictive. No back-test, hold-out or statistical significance test exists in code.
9. Minimum sample rules
- No rate or predictive percentage is displayed when n < 10. The exact n is shown with “Insufficient sample” instead.
- When a comparison denominator is below 3, percentage growth language is replaced with “Low base” and the raw counts.
- Ask Sygnls will not recommend a material strategic action on fewer than 3 cited evidence items; the answer is labelled “Insufficient evidence for a recommendation”.
- Zero, missing and unprocessed are distinct states and are labelled differently everywhere.
10. Model-assisted versus human-reviewed
Model-assisted, with no human review step in the pipeline: theme classification, stance, speaker type, entity extraction, outcome extraction, and Ask answers.
Rule-based and deterministic: freshness, rolling windows, maturity stage assignment, divergence arithmetic, lead scoring, alias resolution, sample-size suppression.
Human-reviewed: only entities routed to the internal review queue, and editorial featuring. Nothing else on this site has been read by a person before publication.
11. Known limitations
- Two source feeds only — coverage is not a market census, and absence is not evidence.
- Classification runs on titles and summaries, not full article or transcript text.
- Item counts are small; most themes sit below the sample floor most weeks.
- No geography or retail-segment field exists on items, so those filters are not offered.
- Speaker weights are defined but not yet applied in weekly signals.
- No taxonomy version history.