Changelog

What we shipped.

New signals, coverage expansions, throughput wins, and the bug fixes that earned them. We publish on the day work lands, not on the day it was planned.

  1. Improved

    Dashboard reliability: error boundary + skeleton + empty-state convergence

    Every /dashboard view now sits behind a render-time error boundary that surfaces a graceful "try again" fallback instead of a blank shell. Twenty-plus dashboard sub-pages converged onto the canonical Skeleton, EmptyState, and ErrorState primitives with consistent ARIA labelling and visible focus rings throughout.

  2. New

    Per-tier quotas now enforced on every gated route

    Tier promises on the pricing page now have teeth at the route layer. Briefing regenerations, alert rules, watchlist size, due-diligence reports, API keys, team seats, battlecards, and side-by-side compare all return a structured 402 with retry-after when a tier limit is reached. Scale tier upgraded to unlimited tracked companies (fair use) — the pricing page no longer under-promises.

  3. Fixed

    Trial expiry sweeper backstop

    Daily 07:00 UTC cron now sweeps users whose trial has expired without an active Polar subscription and drops them to the free tier. Closes a gap where a missed Polar downgrade webhook could leave a non-paying user on a paid tier indefinitely. Sweep emits a "trial ended" email per affected user and increments observability counters so the cadence is auditable.

  4. New

    Public health probe endpoints

    Three new probe endpoints under api.pulsesignal.co for status monitors and integration partners: /api/v1/health (pure-Python liveness with version + commit + uptime), /api/v1/readiness (DB ping; returns 503 if degraded), and /api/v1/auth/session (always-200 anonymous; reports authenticated:true when called with a valid bearer). Frontend mirror paths at /api/health, /api/readiness, /api/auth/session route through the marketing host. All three are exempt from per-tier rate limits so external probes never consume a customer quota.

  5. New

    Zapier, Make.com, and n8n integration docs

    Added /integrations/zapier, /integrations/make, and /integrations/n8n walkthroughs alongside a new /integrations index page. Wire PulseSignal change events, narratives, GTM leads, and alert-rule triggers into 6,000+ Zapier apps, 1,800+ Make.com modules, or any n8n node today via the existing Standard-Webhooks-v1 outbound surface. No marketplace install required; each walkthrough is four steps end-to-end with HMAC signature-verification guidance.

  6. New

    Compliance certification tracking

    Added a new compliance.cert.gained signal sourced from FedRAMP Marketplace and trust-page scans. Over 130 providers now surface SOC 2, ISO 27001, HIPAA, and FedRAMP status changes inside the signal feed, with cohort patterns that fire when peer groups certify together.

  7. Improved

    Stage 2 narrative emission, 10x faster

    Rewrote the cross-axis fetch path in the Stage 2 narrative engine to anchor on rare event types before fanning out. Previously-timing-out cohort patterns now complete in under four seconds each, and total wall-time on the 06:30 UTC run dropped roughly 10x.

  8. Fixed

    ProductHunt launches behind Cloudflare

    Product launches ingestion now falls back to a headless browser when ProductHunt returns a Cloudflare challenge. Twenty-eight launches landed in the feed on the first run, including ships from Anthropic, Stripe, Notion, Linear, and Figma.

  9. Improved

    Tighter org-name matching for compliance feeds

    Compliance certification ingest now does a trigram pass after exact match, with legal-suffix tolerance for LLC, Inc, and Corp variants. Match rate on FedRAMP rows rose from roughly 0% to 45% against the existing company graph.

  10. New

    Cohort patterns for security hiring waves

    Stage 1 now ships eight new cohort-scope patterns covering security hiring waves, enterprise pricing waves, and certification-rooted motions. First-ever candidates emitted across cert x security_hiring and cert x enterprise_logos cohorts.

  11. Fixed

    Async scheduler no longer wedges on trust-page ingest

    Moved the trust-page ingestion path off the synchronous scheduler thread. A previous fifty-minute scheduler wedge during the 01:30 UTC run is resolved; downstream crons now fire on their published schedule.

  12. Improved

    Privacy gate classification for entity-only modules

    Refined the privacy gate so modules that only carry organization-level names (certifications, product launches, integrations) short-circuit ahead of the named-individual heuristic. Eliminates a class of false-positive grounding rejections that suppressed legitimate signals.

  13. New

    Positioning data via Playwright fallback

    Positioning extraction now falls back to a Playwright-rendered fetch when a marketing page ships content client-side. Picks up hero copy, value props, and audience signals on sites that previously returned an empty static document.

  14. Improved

    Coverage telemetry on the audit runner

    The internal audit runner now records per-module coverage and emission counts on every cron tick. Operators see when a source goes quiet without waiting for the daily report.

  15. Fixed

    Stable column reference in cohort lookup

    Cohort bucket queries previously referenced a column name that did not exist on the companies table, causing silent failures on a subset of daily runs. Now reads the correct website column and runs clean.

See the next one first

Everything above is already in your feed.Want to see it on your watchlist?