Go-To-Market

LangChain Deal Monitor

Watch any live-web query and get a Slack alert when something new appears.

A small LangChain/LangGraph app that uses Nimble Search to monitor the web, filter out results it has already seen, summarise new matches with an OpenAI-compatible model, and post the digest to Slack. Use it as a funding monitor, competitor tracker, acquisition watcher, pricing monitor, product-launch alert, or any workflow where fresh web results matter. Built for GTM, DevRel, investing, product, and research teams that need lightweight alerts when the web changes.

Quick Start

Inputs

  1. Search query Any live-web monitoring query — e.g. "developer tools funding news this week" or "competitor product launch announcement".
  2. Nimble API key Used by NimbleSearchTool to fetch current web results through Nimble's LangChain integration.
  3. Slack webhook URL Destination for alerts when the app finds new results.
  4. OpenAI-compatible LLM key Used to summarise new results before sending the Slack digest. The sample uses OpenRouter, but the model layer is swappable.
  5. Optional search settings Tune focus, recency, depth, result count, country, locale, and output format through environment variables.

Outputs

  • New web results for the configured query
  • Duplicate filtering against a local seen-result list
  • A concise Slack-ready summary of only the new matches
  • Source links for the results that triggered the alert
  • Local .state.json tracking so future runs only alert on genuinely new items
  • Dry-run output for validating the graph without external API calls
  • Optional LangSmith traces for debugging and demo visibility

How it works

A 7-step graph that runs on demand or on a cron to search, deduplicate, summarise, and alert, with no database required.

  1. Search NimbleSearchTool runs a live web search for the configured monitoring query — returning current results from across the web.
  2. Normalize The app normalizes returned results into a consistent shape: title, URL, and snippet.
  3. Filter Each result URL is checked against a local .state.json seen-list. Only genuinely new matches continue to the next step.
  4. Summarise An OpenAI-compatible chat model turns the new results into a short, Slack-friendly digest with source links.
  5. Notify The app posts the digest to Slack via an Incoming Webhook. If no new results are found, nothing is sent.
  6. Persist Seen URLs are saved to .state.json so the next run skips them.
  7. Schedule Run manually or place on a cron — for example, every six hours. The app only sends a Slack message when it finds new results.

Stack

Nimble primitives plus the full runtime stack.
Nimble APIs
What it does
  1. NimbleSearchTool (langchain-nimble) Fetches current web results through Nimble's LangChain integration — the live web data layer for every run.
  2. Nimble Focus Mode Sets focus mode (news / social / general), time range, depth, result count, country, locale, and output format via environment variables.
3rd Party Tools
Role
  1. LangGraph Orchestrates the workflow as a 5-node graph: search → normalize → filter → summarise → notify → persist.
  2. LangChain Provides the Nimble tool integration and OpenAI-compatible chat model interface.
  3. OpenRouter Sample LLM provider (default: google/gemma-3-27b-it:free). Any OpenAI-compatible endpoint works.
  4. Slack Incoming Webhooks Sends the alert where the team already works.
  5. Local .state.json Tracks seen URLs without requiring a database.
  6. Lang Smith optional tracing for debugging and visibility into each run
  7. Python 3.9+ Local app runtime.
Reach out if you have any questions.
Talk to an Expert