REAL-TIME · EVIDENCE-BACKED · BUILT FOR MACHINES

The real-time intent feed for AI agents.

Someone just posted “I need a plumber TONIGHT”.
Your agent already has the lead: scored, deduplicated, evidence-backed, delivered in seconds.

0sp50 post → webhook
0¢model cost per lead
0services · 7 verticals
0phone numbers sold
POST → WEBHOOK

Nine stages. One feedback loop.
A streaming pipeline, not a batch scraper.

Every item is cheaply filtered, graded by a decision model, and only the few that look like real leads reach an LLM for extraction. Matched leads go to your agent; your agent's outcome tunes the thresholds. The diagram below lights up as the live pipeline runs.

raw items
0
pass tier 0 (rules)
0
graded as leads (Jev)
0
extracted + delivered
0
per 1,000 items · model cost ≈ $0.03 · zero LLM tokens on 98% of the web
TIER 0

Filter

Rules + embeddings. Language, keyword gate, dedupe, blocklist.

<10 ms100% of items
TIER 1

Grade

Jev returns calibrated probabilities over fixed options: is_lead, urgency, budget, authenticity.

<500 ms~20% of items
TIER 2

Extract

Haiku-class structured output: need, subtype, geocode, contact path, evidence quotes.

<3 s~2% of items
TIER 3

Research

On request: author history, business lookup, competitor check. Jev chooses steps, a cheap model reads.

10–60 s<0.5%
DEMAND, AS IT HAPPENS

Every pulse is a person who needs something right now.

Leads light up where they're posted. Arcs show them routing to subscribed agents. Storms, outages and heat waves arrive as signals that widen the net for the affected vertical and metro.

lead observedurgent (today)delivered to agent
watching 120 metros
SIGNAL · WEATHER_ALERT

Severe thunderstorm over Phoenix

verticals: roofing · water_damage · electrical
effects: poll_rate ×2 · is_lead threshold −0.10 · radius 200 km

0roofing leads in the next 6 h (fabricated)

Surge is a feature, not a surcharge. Your agent gets more leads, not pricier ones; per-subscription caps protect the budget.

THE LEAD OBJECT

Nothing is asserted without an evidence quote.

A typed JSON object with scores, evidence, freshness and a path to respond, so an agent can decide without re-reading the source. age_seconds at delivery is the product's core SLA metric.


      
Freshness is a first-class field. Leads are never delivered after ttl_seconds without stale: true, and stale leads are free.
Probabilities, not labels. Jev's calibrated outputs feed straight into scores; you re-weight the composite per subscription.
Every score has a receipt. Verbatim quotes from the post back urgency, budget and locality. Disputes get settled by reading, not arguing.
A path to respond, not a phone list. Public post URL and platform handle. If the author posted a number, it's flagged author_provided; your consent process owns the call.
Agents don't read docs. Every response carries next_actions: claim, research, outcome, reply.
AGENT-NATIVE API

Key to first lead in under five minutes.

The product is the API. OpenAPI 3.1, llms.txt, an agent.json card, a natural-language filter compiler and a hosted MCP server, so an agent can discover and call it without a human reading docs.

01Sign upPOST /v1/signup
02Compile a filter“emergency HVAC, Phoenix, budget”
03Subscribewebhook · SSE · poll · MCP
04Act, then reportclaim → outcome
# 1. a key (live + sandbox)
curl -s https://leadfeed.dev/v1/signup -d '{"email":"you@agency.com"}' -H 'content-type: application/json'

# 2. natural language → filter JSON
curl -s https://leadfeed.dev/v1/subscriptions/compile -H "authorization: Bearer $LF_KEY" \
  -d '{"prompt":"emergency plumbing in Phoenix with a budget signal"}'

# 3. subscribe (webhook, HMAC-signed, retried)
curl -s https://leadfeed.dev/v1/subscriptions -H "authorization: Bearer $LF_KEY" -d '{
  "name": "phx-plumbing-emergency",
  "filter": {"services":["plumbing"], "geo":{"center":[33.45,-112.07],"radius_km":40},
             "min_scores":{"composite":70,"urgency":0.6}, "max_age_seconds":1800},
  "delivery": {"type":"webhook","url":"https://agent.example.com/leads","secret":"whsec_…"}}'

# or just stream it
curl -N https://leadfeed.dev/v1/stream?subscription=sub_01JB… -H "authorization: Bearer $LF_KEY"
# pip install leadfeed  (sdk/python in the repo)
from leadfeed import LeadFeed

lf = LeadFeed(api_key="lf_live_…")
flt = lf.compile("emergency HVAC in Phoenix with budget")
sub = lf.subscribe("phx-hvac", filter=flt, delivery={"type": "stream"})

for lead in lf.stream(sub["id"]):            # SSE, resumes with Last-Event-ID
    if lead["scores"]["composite"] >= 80 and lead["age_seconds"] < 600:
        lf.claim(lead["id"])
        my_voice_agent.call(lead)            # your outreach, your rules
        lf.outcome(lead["id"], "contacted")  # feeds calibration + refunds
// npm i @leadfeed/sdk  (sdk/typescript in the repo)
import { LeadFeed } from "@leadfeed/sdk";

const lf = new LeadFeed({ apiKey: process.env.LF_KEY! });
const { filter } = await lf.compile("same-day movers in Denver, budget present");
const sub = await lf.subscribe({ name: "den-movers", filter, delivery: { type: "poll" } });

let cursor: string | undefined;
setInterval(async () => {
  const page = await lf.poll(sub.id, { cursor });        // cursor pagination
  for (const { lead } of page.data) await agent.handle(lead);
  cursor = page.next_cursor ?? cursor;
}, 15_000);
// Claude Desktop / Claude Code / any MCP client — hosted remote server
{
  "mcpServers": {
    "leadfeed": {
      "type": "http",
      "url": "https://leadfeed.dev/mcp",
      "headers": { "Authorization": "Bearer lf_live_…" }
    }
  }
}

// tools: search_leads · compile_filter · subscribe · poll_leads · get_lead
//        claim_lead · research_lead · mark_outcome · signals · taxonomy · sandbox_replay
> "Find urgent roofing leads within 50 km of Phoenix posted in the last hour,
   claim the top two, and research the authors."
POST https://agent.example.com/leads
X-LeadFeed-Event: lead.created
X-LeadFeed-Idempotency-Key: ld_01JB…
X-LeadFeed-Signature: t=1761141791,v1=5f1c…   # hmac_sha256(secret, "<t>.<body>")

{ "event": "lead.created",
  "subscription": "phx-plumbing-emergency",
  "lead": { "id": "ld_01JB…", "age_seconds": 91, "scores": { "composite": 86, … }, … },
  "next_actions": [ {"action":"claim", …}, {"action":"research", …}, {"action":"reply", …} ] }

# later, pushed to the same endpoint so your agent stops chasing a solved lead:
{ "event": "lead.status", "lead_id": "ld_01JB…", "status": "resolved" }
OpenAPI 3.1llms.txt/.well-known/agent.jsonInteractive docsPython SDKTypeScript SDKn8n templateClaude Agent SDK exampleSandbox replay ×10
NEED-IT-NOW VERTICALS

Where a signal older than an hour is worthless.

Plumbing“pipe burst · water off · TONIGHT”86
Towing“broke down on the 101 · hazards on”81
Roofing“hail · ceiling leaking · insurance open”92
HVAC“AC out · 109° · 2 kids · pay the fee”90
Legal“5-day notice on the door · consult fee ok”84
B2B urgency“checkout broken · Black Friday · budget approved”95
Movers“lease ends tomorrow · crew no-showed”88
Vet“dog ate chocolate · vet closed · driving now”79
home emergencies · vehicle · legal & financial · health & care · events & travel · B2B micro-urgency · property
WHY NOW

Grading the open web just became cheap enough.

Lead vendors sell stale, shared, static lists. Buyers who need a service today post publicly, and the first responder wins. Agents are now the buyers of data: they need structured, low-latency, pay-per-use inputs, not dashboards. Decision models that return calibrated yes/no answers in milliseconds make it viable to grade every post as it appears.

70–500mstyped verdict latency (Jev-class decision model)
$0.042/M tokgrading cost, no output tokens
98%of items never touch an LLM
<60sp95 observation → webhook target
PRICING

Pay per lead. Stale leads are free.

Usage credits plus a small platform fee. Leads priced by vertical and score tier; exclusive leads are the premium lever. No seats: agents don't have seats.

DEV
$0
  • Sandbox + 10× replay
  • 50 live leads
  • 1 subscription
  • REST + SSE
Start free
BUILDER
$49/mo
  • 1 geo · 5 subscriptions
  • Webhook + REST + MCP
  • $1–$8 per shared lead
  • Outcome credits
Get a key
SCALE
$999+
  • Unlimited subs · private sources
  • SLA · dedicated thresholds
  • Exclusive at 3×
  • Outcome-based option
Talk to us
price = vertical base × score multiplier (70–79: 0.6× · 80–89: 1× · 90+: 1.5×)charged only when delivery beats max_age_secondsinvalid within 24 h auto-credited (capped at 15%)surge = more leads, not pricier onescredit packs $100 · $500 (+10%) · $2,500 (+20%) via Stripe in the console or POST /v1/billing/checkout
TRUST & SAFETY

The product survives on being the clean option.

Public data only. Content the author posted publicly. Never behind a login with our accounts.
Official APIs first. Reddit and X via commercial terms. Nextdoor and Facebook groups stay out until an API exists. Every source has a posture and a kill switch.
No private contact data. Handles and post URLs, not scraped emails or phone numbers.
Right to be forgotten. DELETE /v1/authors/{handle} purges a person across leads; source URLs are re-checked before delivery of older leads.
Sensitive verticals handled with care. Legal, medical and financial leads carry sensitive: true, which restricts resale and backfill.
Signed, audited, scoped. HMAC webhooks, scoped keys, claim rate limits, an audit log of every delivery.