Skip to content

About

Sell to any company. Get sales-ready insights and outreach in seconds 馃殌

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

聽

History

371 Commits

Folders and files

NameName
Last commit message
Last commit date
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽
聽

Repository files navigation

SignalizeAI

Know when your target accounts change.

CI Chrome Web Store License: MIT Manifest V3

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


Why

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.

What it does

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.

How change detection works

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.

Tech stack

Manifest V3 路 TypeScript 路 esbuild 路 Supabase (auth and storage) 路 Cloudflare Workers backend

Local development

Install dependencies:

npm install

Create .env.local:

VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
API_ENV=dev

API_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 build

Load 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.

Build commands

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

Checks

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

Gotchas

  • Production manifests only inject the website bridge on signalizeai.org. Dev manifests also allow localhost syncing.
  • build:chrome and build:firefox overwrite manifest.json. Re-copy the right manifest before rebuilding if you switch between prod and local.
  • src/config.ts is generated by build.ts and is not committed. Release builds set BUILD_TARGET=release, which pins the API to production regardless of API_ENV, and the build aborts if the generated config points anywhere else.
  • Every build clears extension/*.js first, so content-hashed chunks from an earlier (possibly dev-targeted) build cannot end up in a release package.

Contributing

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.

Support

License

MIT

About

Sell to any company. Get sales-ready insights and outreach in seconds 馃殌

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Contributors

Languages