I've been building Nopp for the past weeks. The core idea: a salesperson or founder pastes their company URL and the system figures out who their ideal customers are, finds companies actively showing buying signals right now, enriches the contact data, and generates personalized outreach informed by the specific signal it detected.
What "buying signal" means here specifically:
Not "this company visited your website" (that's a pixel, not intelligence). A buying signal in Nopp's context is:
A company that just posted a VP of Sales or SDR role (they're building a sales function — they need tools)
A company that raised a funding round in the last 30 days that matches your ICP (fresh budget, board pressure to grow)
A negative mention of a competitor on Reddit, Twitter, or G2 from someone at a company that fits your ICP (frustrated user, warm lead)
An executive hire — new CRO or CMO — at a company already in your target segment (new leader, new stack evaluation incoming)
The system monitors these sources continuously, scores each signal against the user's inferred ICP (generated from their URL), enriches the contact, and surfaces it with a pre-generated opening line that references the specific signal.
The technical part people usually ask about:
ICP inference: we scrape the user's website, extract value proposition and product category, then build a structured targeting object — titles, company sizes, industries, buying triggers, disqualifiers. This runs on signup and updates when the user's site changes significantly.
Signal matching: every incoming signal gets scored against every user's ICP on three dimensions — company fit, signal relevance to their product category, and timing urgency. Only signals above 70/100 surface in the priority feed.
Enrichment: company domain → verified email + LinkedIn for the right contact (not the recruiter posting the job, but the buyer who would evaluate a tool for that hire).
Opening line generation: signal type + user's value prop + prospect's company context → personalized first line. Not a template. Informed by the specific event we detected.
The API:
We exposed all of this as an API last week. Nine endpoints covering company enrichment, contact enrichment, ICP generation, hiring signals, funding signals, competitor intercepts, signal streaming via webhook, and outreach generation. A developer building a CRM plugin or LinkedIn tool can call /api/v1/signals/hiring with their ICP URL and get back matched signals with enriched contacts and generated outreach in one call.
Free tier is 500 calls/month, no credit card. developers.nopp.us
What I'm uncertain about and would genuinely value feedback on:
The ICP inference quality varies by website. B2B SaaS sites with clear use case pages work well. Agency sites and service businesses with vague positioning are harder. I've been iterating on the scraping and extraction layer but it's not solved.
The signal-to-noise ratio in the priority feed. I'm still calibrating the scoring thresholds. Some users tell me they want more signals even if lower quality. Others want fewer, higher confidence. Right now it defaults to quality over volume.
The outreach generation. It's better than a template but it's not always better than what a skilled copywriter would write. The personalization is real but the ceiling is the quality of the signal data feeding it.
Happy to go deep on any part of the architecture. Have been building in public and this is the first time posting on HN.
nopp.us | developers.nopp.us
thefinancier•1h ago
What "buying signal" means here specifically: Not "this company visited your website" (that's a pixel, not intelligence). A buying signal in Nopp's context is:
A company that just posted a VP of Sales or SDR role (they're building a sales function — they need tools) A company that raised a funding round in the last 30 days that matches your ICP (fresh budget, board pressure to grow) A negative mention of a competitor on Reddit, Twitter, or G2 from someone at a company that fits your ICP (frustrated user, warm lead) An executive hire — new CRO or CMO — at a company already in your target segment (new leader, new stack evaluation incoming)
The system monitors these sources continuously, scores each signal against the user's inferred ICP (generated from their URL), enriches the contact, and surfaces it with a pre-generated opening line that references the specific signal. The technical part people usually ask about: ICP inference: we scrape the user's website, extract value proposition and product category, then build a structured targeting object — titles, company sizes, industries, buying triggers, disqualifiers. This runs on signup and updates when the user's site changes significantly. Signal matching: every incoming signal gets scored against every user's ICP on three dimensions — company fit, signal relevance to their product category, and timing urgency. Only signals above 70/100 surface in the priority feed. Enrichment: company domain → verified email + LinkedIn for the right contact (not the recruiter posting the job, but the buyer who would evaluate a tool for that hire). Opening line generation: signal type + user's value prop + prospect's company context → personalized first line. Not a template. Informed by the specific event we detected. The API: We exposed all of this as an API last week. Nine endpoints covering company enrichment, contact enrichment, ICP generation, hiring signals, funding signals, competitor intercepts, signal streaming via webhook, and outreach generation. A developer building a CRM plugin or LinkedIn tool can call /api/v1/signals/hiring with their ICP URL and get back matched signals with enriched contacts and generated outreach in one call. Free tier is 500 calls/month, no credit card. developers.nopp.us What I'm uncertain about and would genuinely value feedback on:
The ICP inference quality varies by website. B2B SaaS sites with clear use case pages work well. Agency sites and service businesses with vague positioning are harder. I've been iterating on the scraping and extraction layer but it's not solved. The signal-to-noise ratio in the priority feed. I'm still calibrating the scoring thresholds. Some users tell me they want more signals even if lower quality. Others want fewer, higher confidence. Right now it defaults to quality over volume. The outreach generation. It's better than a template but it's not always better than what a skilled copywriter would write. The personalization is real but the ceiling is the quality of the signal data feeding it.
Happy to go deep on any part of the architecture. Have been building in public and this is the first time posting on HN. nopp.us | developers.nopp.us