{"id":51475367,"url":"https://github.com/asmuelle/tripwire","last_synced_at":"2026-07-06T20:30:33.596Z","repository":{"id":366006516,"uuid":"1266480480","full_name":"asmuelle/tripwire","owner":"asmuelle","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-19T20:04:45.000Z","size":119,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-19T22:05:37.068Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asmuelle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-11T16:51:41.000Z","updated_at":"2026-06-19T20:04:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/asmuelle/tripwire","commit_stats":null,"previous_names":["asmuelle/tripwire"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/asmuelle/tripwire","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmuelle%2Ftripwire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmuelle%2Ftripwire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmuelle%2Ftripwire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmuelle%2Ftripwire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asmuelle","download_url":"https://codeload.github.com/asmuelle/tripwire/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmuelle%2Ftripwire/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35205739,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-06T20:30:33.004Z","updated_at":"2026-07-06T20:30:33.565Z","avatar_url":"https://github.com/asmuelle.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tripwire\n\n[![CI](https://github.com/asmuelle/tripwire/actions/workflows/ci.yml/badge.svg)](https://github.com/asmuelle/tripwire/actions/workflows/ci.yml)\n\n\u003e Per-account buying-signal radar for SMB sales teams: a nightly agent maintains a living dossier on every named account inside the CRM and pings the rep only when a real trigger fires — with the pinned source quote and a suggested outreach angle.\n\n**Category:** LLM wiki / auto-research (living documents + delta alerts, à la Karpathy)\n\n## Concept\n\nPer-account buying-signal radar for SMB sales teams: a nightly agent maintains a living dossier on every named account inside the CRM and pings the rep only when a real trigger fires — with the pinned source quote and a suggested outreach angle.\n\n## Target User\n\nSales teams of 3-20 reps at B2B SMBs running named-account motions, plus founders doing founder-led sales. The sales leader pays: reps burn 1-3 hours of research per account, signal-based selling is an established motion with quantifiable ROI, and one extra meeting booked pays for a month.\n\n## Auto-Research Mechanic (the living document + delta engine)\n\nPer-account standing agents over company newsrooms/RSS, SEC filings (8-K/10-K), public job boards (roles that signal need for your product), exec-change announcements, funding events, tech-stack change detection, and news via search APIs. Nightly batch (latency irrelevant; batch discount plus cache reads hold COGS at ~$0.10-0.30/account/month). Cheap-model triage scores deltas against the team's ICP trigger profile ('hiring first RevOps lead', 'raised Series B', 'CFO changed'); frontier synthesis updates the living dossier and — only above threshold — fires a Slack/CRM alert with the trigger, pinned quote + URL + timestamp, why it matters for this seller, and a suggested opening line. Reps mark triggers useful/converted, feeding a per-team relevance model.\n\n## Product Surface\n\nCRM-embedded first (HubSpot and Salesforce apps — the dossier lives on the account record) + Slack alerts for daily push. CRM embedding makes Tripwire invisible infrastructure in the rep's existing ritual and is the surface ChatGPT structurally cannot occupy.\n\n## Why Now (2026 timing)\n\nClay's 263% YoY growth to $100M ARR versus ZoomInfo's +2% proves the AI-native repricing playbook in the adjacent category — but Clay is enrichment-and-workflow-centric, not a living-dossier monitor, and prices above SMB. No credible sub-$100/seat signal product exists. Batch + cache economics only made per-account always-on monitoring viable in 2026.\n\n## Proposed Monetization\n\nUsage-based, transparent metering flat competitors can't match: $99/mo per seat including 100 tracked accounts, then $0.75/account/month; $499/mo team plan (5 seats, 1,000 accounts, CRM sync, trigger analytics). Deliberately below Clay's $185-600/mo tier with predictable per-account COGS.\n\n## Competition \u0026 Gap\n\nClay (enrichment campaigns, not continuous account dossiers), UserGems (job-change tracking only, enterprise pricing), Apollo/ZoomInfo (static databases going stale — ZoomInfo's 2.5x multiple tells the story), LinkedIn Sales Navigator alerts (shallow, unsourced). Nobody maintains a versioned account dossier with cited triggers at SMB price.\n\n## Claimed Moat\n\n(1) The converted-trigger feedback loop is proprietary signal-to-revenue data — which trigger types book meetings per ICP — compounding per team and industry; no horizontal agent has it. (2) CRM workflow embedding (alerts logged to the account record, outreach tracked against triggers) creates operational lock-in. (3) Cross-run per-entity memory is the product; ChatGPT scheduled tasks and Gemini's single-turn API structurally lack it. (4) Pinned source quotes rebuild rep trust that hallucination-prone generic 'AI account research' has already burned.\n\n---\n\n## Comparables\n\n- Clay — $100M ARR (Nov 2025), $3.1B valuation (Apr 2026 Series C), 10,000+ customers; tiers ~$149-800/mo; enrichment/workflow-centric, not continuous monitoring\n- Apollo.io — $150M ARR (May 2025); $59-149/user/mo; acquired Pocus (Mar 2026) to add signal-based selling — primary bundling threat\n- ZoomInfo — ~$1.21B FY2024 revenue, declining 1-2% YoY; static database being repriced; validates the displacement thesis\n- UserGems — $2,750-$10,000/mo ($33K-$120K/yr); job-change + 21 signal types; enterprise-only, leaves SMB gap\n- Salesmotion — $85/mo (individual, 100 accounts) / $349/mo (team, 5 users, 500 accounts); signal + research + outreach agents; closest direct competitor, already occupies the claimed wedge\n- Champify — $2,000-6,000+/mo; relationship/job-change signals, enterprise-leaning\n- Common Room — ~$625/mo Standard with free tier; community/intent signal aggregation\n- Koala — shut down Sept 2025 (team acqui-hired by Cursor); cautionary comp for category consolidation\n- Pocus — custom mid-five-figure annual pricing; acquired by Apollo Mar 2026\n- LinkedIn Sales Navigator — ~$99-180/seat/mo; shallow unsourced alerts; the inferior alternative many SMB reps already pay for\n\n## Adversarial Review\n\nTripwire's moat analysis is aimed at the wrong attacker. It correctly argues ChatGPT/Perplexity can't occupy the CRM account record — but the CRM landlords already do. HubSpot Breeze Intelligence ships Clearbit-powered enrichment + buyer-intent natively on the exact surface Tripwire claims, with zero-setup access to every interaction; Salesforce Agentforce has 18,500 customers. A HubSpot app whose entire value is 'better signals on the account record' is a Sherlock target, and HubSpot controls the API, the app store, and the pricing. Two founding claims are verifiably false: (a) 'no credible sub-$100/seat signal product exists' — Apollo Professional at $79/seat already bundles buying intent and job-change alerts WITH data and sequencing; (b) 'Clay is enrichment-centric, not a living-dossier monitor' — Clay shipped Custom Signals (funding, career movement, tech stack, account-level intent, social monitoring added early 2026) and is at $100M ARR with the distribution to move down-market faster than Tripwire can move up. DATA ACCESS kills the headline signals: the highest-value trigger ('CFO changed') lives on LinkedIn, which is legally and technically locked — that's precisely why UserGems charges enterprise prices; press releases catch a fraction of exec changes. SEC 8-K/10-K filings are free but irrelevant: SMB named accounts are overwhelmingly private companies. The $0.10-0.30/account/month COGS models only LLM tokens (which are indeed cheap in batch) and ignores the dominant costs: search API at ~$2.5-8/1k queries means 1-3 nightly queries/account is $0.08-0.70/account/mo alone; render-capable scraping behind Cloudflare pay-per-crawl adds $0.05-0.30; licensed people-data for exec tracking adds $0.10-0.50; tech-stack vendors (BuiltWith/HG) have four-figure monthly minimums. Realistic blended COGS at the promised breadth is $0.30-1.00/account/mo — so the $499 team plan (1,000 accounts = $0.50/account revenue) is at or below water, and the per-seat plan runs 0-70% gross margin, not SaaS margin. TRUST: the asymmetry is brutal — private SMB accounts emit sparse public signal, so most accounts are silent for months (product feels dead → churn) unless the threshold drops (noise → Slack channel muted by week 3). The fatal error is the silent miss: one tier-1 account that raised a round and got called by a competitor's rep before Tripwire pinged resets trust to zero, and exec-change recall without LinkedIn data cannot clear the bar the pitch sets. Pinned quotes fix hallucinated citations but not wrong-entity matches or misses. CHURN: the dossier does compound (this is not a 'caught up and cancel' product), but SMB sales tooling runs 3-5% monthly logo churn and this is the first line item cut in consolidation since Apollo/HubSpot/Clay each bundle adjacent signals; the converted-trigger feedback loop needs conversion volume a 5-rep SMB team generates too slowly to train a per-team model before churn risk peaks. The 'proprietary signal-to-revenue data' moat is real in principle but thin at SMB density, and Clay/Apollo observe orders of magnitude more conversion events. Net: survives the labs, gets squeezed by everyone adjacent.\n\n## Tech Stack \u0026 Unit Economics\n\nIngestion: content-hash diff layer first (store SHA-256 of normalized page sections; only deltas reach any LLM) over raw-HTTP fetch of newsrooms/RSS/sitemaps; Firecrawl or Zyte fallback for JS/bot-walled pages; SEC EDGAR full-text + 8-K RSS (free, public-co accounts only); Greenhouse/Lever/Ashby public job-board JSON (free; Indeed/LinkedIn inaccessible — accept the coverage gap); news/funding via Exa or Tavily search API; exec-change signal requires licensed people-data (Live Data Technologies / Proxycurl-class) or must be dropped from the pitch; optional PredictLeads/TheirStack for jobs+tech-stack instead of BuiltWith minimums. Models: Haiku 4.5 via Anthropic Batches API (50% discount) with prompt caching on the ICP trigger profile for delta triage; Sonnet 4.6 batch for dossier synthesis and alert composition; citation grounding via extractive quote pinning with a hard string-match verification of quote-against-fetched-source before any alert fires (rejects hallucinated citations deterministically), plus domain-primary-key entity resolution to kill wrong-company pings. Memory: Postgres + pgvector, versioned per-account dossier snapshots. Orchestration: plain nightly cron + queue (pg-boss or Temporal) — no agent framework needed; the 'agent' is a pipeline. Surfaces: HubSpot public app (CRM card + timeline events) first, Slack app for push, Salesforce later; useful/converted feedback buttons writing to a relevance table feeding a per-team trigger-type reranker. Unit economics per account/month at promised breadth: LLM $0.03-0.08, search API $0.10-0.40, scraping $0.05-0.30, people-data $0.10-0.50, amortized vendor minimums $0.02-0.10 → realistic blended $0.30-1.00 (vs the claimed $0.10-0.30). Per 100-account seat: $30-100 COGS against $99 price (0-70% GM); the $499/1,000-account team plan is underwater unless exec-change and tech-stack signals are cut or repriced to ~$1.50-2.00 per additional account.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasmuelle%2Ftripwire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasmuelle%2Ftripwire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasmuelle%2Ftripwire/lists"}