A webhook receives the lead from your CRM or form. Qwen3 embeddings (via Ollama) compare it with your ideal customer profiles and past won/lost deals. Claude (or OpenAI) then qualifies it on BANT using that evidence, and the score, tier, next action and a reply draft are pushed back to HubSpot, Pipedrive, Slack or any webhook.
ollama pull qwen3-embedding:0.6bcp .env.example .env (add an Anthropic or OpenAI key)npm install && npm start
Point a HubSpot workflow, Pipedrive webhook or Zapier/Make/n8n step at POST /webhooks/lead/:source. Results come back as signed webhooks or direct CRM property updates.
Embeddings ground the score in your history (what actually closed). The LLM reads intent and BANT and writes the reply. Rules add hard guards, so spam never reaches sales.