❄️Festive Industry Pulse
Live β€” graph-filtered for Festive's business (NZ+AU, last 60 days)

βž• Add a New Source

Submit a new RSS feed, regulator, or industry publication. The next scanner run (every 30 min for Google News, 7am daily for RSS crawl) will start ingesting from it.

stored in this browser
Homepage or article index. Used for sitemap + HTML scanning.
If the site has an RSS feed, paste it here. Most trade publications do.

Your submitted sources (0)

βš™οΈ Graph-Aware Intelligence

Festive Industry Pulse uses a business graph built from festive.co.nz's real product catalog. Articles are scored by 2-hop relevance β€” they must touch at least 2 nodes of Festive's network to appear. Geo-scoped to NZ + AU. Recency filter: last 60 days.

πŸ•ΈοΈ The Graph (2-hop)

1-hop: Festive products (Tower/York/Baker/Regent/Lincoln/Devon/Cornwall/Avon/Somerset), customers (Countdown/Foodstuffs/Woolworths/Coles/IGA), competitors (Skope/Williams/Hussmann/Irinox/Haier/CCR), regulators (MPI/EECA/FSANZ/DCCEEW).

2-hop: Suppliers (SCHOTT/Danfoss/Emerson/Copeland), industry bodies (AIRAH/ATMOsphere/ASHRAE), refrigerants (R290/R744/CO2).

πŸ“‘ Method 1: RSS Crawl (Daily 7am)

Deep crawl of all user-submitted sources (default set pre-loaded). Multi-method per source: RSS β†’ Sitemap β†’ HTML index.

πŸ”₯ Method 2: Google News RSS (Every 30 min)

26 geo-restricted Google News queries (NZ+AU only) for trending-now signal. Same-day results.

πŸ‘πŸ‘Ž Voting & Learning Loop

Click πŸ‘ or πŸ‘Ž on any article to vote on its relevance. The score persists in /data/votes.json and is applied as a per-article boost on the next scraper run:

+3 relevance per upvote Β· -3 per downvote Β· capped at 0–100. After 5+ votes on a single source, the source's overall trust score starts weighting the feed. This is a real feedback loop, not theatre β€” your votes train the filter.

βž• Adding Sources

Use the Add Source tab. Submissions hit the festive-blog-hook webhook (port 8214), validate, dedup, and persist to /data/sources.json on a shared Docker volume. The next scraper run picks it up automatically. No code change, no redeploy, no restart.

⏰ Schedule

Cron: 0 7 * * * scraper.py (deep crawl) + */30 * * * * trends_fetcher.py (real-time). Auto-refresh browser: 5min meta refresh.