Know when your target accounts change.
SignalizeAI turns any company website into a sales brief, then keeps watching it and tells you what changed since last time.
Prospecting tools tell you who a company is once. The useful signal is the delta: they published a pricing page, they opened an enterprise tier, they started hiring platform engineers. That is the moment worth an email, and it is invisible unless something re-reads the site for you.
Install from the Chrome Web Store 路 Website 路 Pricing 路 Privacy
A sales brief goes stale the moment you generate it. Re-running the same research by hand every week does not scale past a handful of accounts, so in practice nobody does it, and the trigger to reach out gets missed.
SignalizeAI takes the snapshot once, then re-reads on a schedule and diffs against what it saw last time. You get told only the difference.
Prospect any site. Reads the page you are on, or any URL you paste, and produces what they do, company overview, value proposition, target customer, sales readiness, and the persona most worth contacting.
Write the outreach. Three outreach approaches, one recommended email, and follow-ups, all grounded in the brief rather than a template.
Watch for change. Saving a prospect puts it under watch. A background sweep re-reads watched domains and surfaces only what moved:
| Signal | Why it matters |
|---|---|
| Pricing | New tier, price move, or a pricing page appearing at all |
| Hiring | Roles added to the careers page |
| Messaging | The homepage headline or positioning was rewritten |
| New pages | A section that did not exist on the last read |
Each alert carries the before and after, plus a suggested opener you can copy.
Work in bulk. CSV upload or pasted URLs, multi-select save, bulk outreach generation, CSV and Excel export.
The sweep runs in the background service worker, driven by chrome.alarms.
Each pass fetches the homepage, plus the pricing and careers pages when it can
find them, extracts a structured snapshot, and compares it to the last stored
one.
Two design decisions worth calling out, because they are the ones people ask about:
Fetching happens in your browser, not on a server. The Cloudflare Worker has
no crawler. Workers also have no DOMParser, so a server-side implementation
would mean maintaining a second extractor that drifts from this one. More
importantly, fetching sites you are not visiting from our infrastructure would
contradict the privacy policy, which says content is read from the page you are
on. The cost of this choice is that checks only happen while your browser is
running, which is what the action badge is for.
The differ is tuned to stay quiet. Whitespace, reordered navigation, tracking parameters, and a page that suddenly reports no prices at all (almost always a failed render, not a real change) are all suppressed. A monitoring tool that cries wolf gets muted in a week.
Check frequency is the paid lever: Free weekly, Pro every 48 hours, Team daily.
Manifest V3 路 TypeScript 路 esbuild 路 Supabase (auth and storage) 路 Cloudflare Workers backend
Install dependencies:
npm installCreate .env.local:
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
API_ENV=devAPI_ENV=dev points the extension at https://dev-api.signalizeai.org and
http://localhost:3000.
Pick a manifest, then build:
# Chrome
cp manifest.chrome.dev.json manifest.json && npm run build
# Firefox
cp manifest.firefox.dev.json manifest.json && npm run buildLoad it:
- Chrome: load this directory as an unpacked extension at
chrome://extensions - Firefox: load this directory as a temporary add-on
The manifest lives at the repository root, not in
extension/.extension/holds build output only.
| Command | What it does |
|---|---|
npm run build |
Builds using the current manifest.json |
npm run build:chrome |
Production Chrome build |
npm run build:firefox |
Production Firefox build |
npm run build:chrome:dev |
Dev Chrome manifest, then build |
npm run build:firefox:dev |
Dev Firefox manifest, then build |
npm run dev |
Chromium watch flow |
npm run dev:firefox |
Firefox watch flow |
| Command | What it does |
|---|---|
npm run lint |
ESLint |
npm run test |
Unit tests for the differ, plus a load test that replays real captured HTML from three production sites to confirm it fires on genuine changes and stays silent on noise |
npm run format |
Prettier write |
npm run format:check |
Prettier check |
- Production manifests only inject the website bridge on
signalizeai.org. Dev manifests also allow localhost syncing. build:chromeandbuild:firefoxoverwritemanifest.json. Re-copy the right manifest before rebuilding if you switch between prod and local.src/config.tsis generated bybuild.tsand is not committed. Release builds setBUILD_TARGET=release, which pins the API to production regardless ofAPI_ENV, and the build aborts if the generated config points anywhere else.- Every build clears
extension/*.jsfirst, so content-hashed chunks from an earlier (possibly dev-targeted) build cannot end up in a release package.
Contributions are welcome. Start with CONTRIBUTING.md, and look for issues labelled good first issue.
Please read the Code of Conduct before opening a pull request, and SECURITY.md before reporting anything security-related.
- Website: https://signalizeai.org
- Contact: https://signalizeai.org/contact
- Email: [email protected]