Skip to content
Almog Koren

// case study · 2026

K9 Signal Radar

An AI prospecting engine that finds working dog programs in the news, US procurement, and EU tenders before they go looking for software.

Role
AI Engineer
Company
DogBase
Type
AI & automation
Outcome
50 agencies added as leads
n8n AI Workflow
n8n AI Workflow

01

The problem

DogBase sells to police K9 units, search and rescue teams and detection programs. These buyers don't fill out lead forms, and they rarely search for software until a budget is already approved. The early signs are out there, just scattered. A local paper covers a new K9 unit, a business donates a dog to the sheriff, a county posts a procurement notice, the EU opens a tender for detection services. I was finding these by hand, a few hours a week, and most of what I found was noise.

02

Constraints

The sources share nothing. News comes as RSS, SAM.gov and TED have their own APIs and formats, and EU tenders are written in many languages. The CRM side had its own rules. Apollo charges a credit every time you reveal a contact, and it doesn't check for duplicates when you create accounts through its API. It all had to run on its own every day, cost close to nothing, and never fill the CRM with junk or the same agency twice.

03

Decisions & trade-offs

A fixed pipeline with the AI in one place, instead of an autonomous agent.

  • Plain code does the fetching, filtering, deduplication, and CRM writes. DeepSeek does one job: reading a signal and returning structured JSON that says what kind of signal it is, which organization it's about, and whether a person is named.
  • A keyword check runs before the model. The working dog world has its own vocabulary, so most noise is gone before you spend a single token.
  • Apollo credits are spent on purpose. People search is free, so the workflow reveals at most one contact per new agency, and none when the story already names someone.
  • Every signal and every organization is remembered in n8n Data Tables. That stops repeats inside Apollo and lets a failed run retry the next day.
  • It collects every day but reports once a week. On Monday, an agency that appeared in three stories shows up as one card with three sources.
  • Why not an agent? Because the steps are known and the same every day. An agent would rediscover them on each run, read everything instead of a filtered slice, and could spend credits or write to the CRM in ways I can't predict. When something looks wrong here, I open the run and see exactly which step did what.

04

What I built

The whole workflow in n8n. Four sources: Google News in its US, UK and Ireland editions, SAM.gov canine notices, EU TED tenders searched in several languages, and the EU Funding and Tenders portal. On top of those, a shared format for every item, the keyword gate, the DeepSeek prompt and the parser that reads its answer. Grant calls are routed to me, since they're for DogBase rather than sales leads. Everything else goes through the Apollo flow: find the company, create the account, find a K9 contact, add them to a list. Then a daily push report and the weekly brief, with every item explaining why it did or didn't become a contact.

05

Where it is now

It runs every day and has added 5-10 agencies to Apollo since September. Each week, it screens 30 to 50 signals, and 10% reach the AI. The same structure now powers my own fractional work digest, which I wrote about in Why my AI lead generation is a pipeline and not an agent.

Full n8n AI Workflow
Full n8n AI Workflow

// stack

  • n8n
  • DeepSeek
  • Apollo API
  • n8n Data Tables
  • Gmail
  • Google News RSS
  • SAM.gov API
  • TED API
  • EU Funding and Tenders API

Need this kind of engineering?

Book a call, or send a note about what you’re building.