Inspiration

Teams choose APIs and infrastructure from stale docs, old benchmarks, and vendor decks. The expensive surprise arrives after commitment: a pricing change, a deprecation, a reliability incident, or a security issue that was already visible in the public web.

SignalWatch turns that moment before commitment into a small, defensible workflow. It asks one practical question: what changed around this vendor that should change our decision?

What it does

SignalWatch accepts a vendor and a decision context, then produces an explainable go, caution, or hold brief. It searches targeted risk lenses, deduplicates the evidence, scores freshness and corroboration, and keeps the source trail visible.

The report includes a recommendation, confidence score, risk matrix, cited findings, source cards, an executive brief, and the exact query trace used to collect the evidence.

How we built it

The app is a lightweight TypeScript monorepo. A React and Vite frontend drives the scan experience, while an Express server keeps API keys off the client and coordinates the search pipeline. Shared TypeScript types, validation, fixtures, and deterministic analysis keep the result reproducible.

Framer Motion provides restrained page and reveal transitions. The interface uses a small reusable shadcn-style component layer for buttons, badges, cards, fields, progress, and separators, with Lucide icons and responsive CSS.

Where SerpApi does the real work

SerpApi is the live evidence layer. The server fans out four Google Search queries for pricing, deprecation, reliability, and security, plus a Google News query for current incidents. Results are normalized, URL-sanitized, deduplicated, and attached to the query that produced them.

Without current search data, an AI summary can sound confident while missing the one announcement that matters. SignalWatch makes that freshness visible and cites every finding.

Demo mode and responsible use

The project runs immediately with realistic local fixtures when no key is present. Demo records are intentionally labeled as synthetic and use reserved example domains. Add SERPAPI_API_KEY to switch to current web evidence. Critical decisions should still be verified against primary sources.

Challenges and what we learned

The hard part was not rendering a search box; it was designing a useful boundary between retrieval and judgment. We kept recommendation scoring deterministic and made optional language-model narrative enhancement secondary to the evidence. We also added graceful timeouts, input validation, strict TypeScript checks, and focused tests for the analyzer and request safety.

What's next

The next product step is a shared decision history with scheduled re-scans, change alerts, and organization-specific risk policies. The current stateless build is intentionally small enough to run locally or deploy as a single Node service.

Built With

Share this project:

Updates

Submission history