concept

Demand Radar

created 2026-06-07 google-trends · idea-pipeline · demand · seo · tool-intent · micro-saas · radar

Demand Radar

A weekly automated digest of rising, tool-intent search queries — filtered for the modifiers that signal “someone wants a small tool right now” — scored by growth slope × duration × intent strength, deduped against what we’ve already shipped or rejected.

The radar turns Google Trends from “interesting data” into an idea pipeline. We spend 20 min on Mondays picking, not hunting. Each picked idea becomes a candidate for a weeknight or weekend build under the mini-apps/overview|mini-apps series.

This is also the engine for the future trend-alert product: we’re customer #1 of our own product. See mini-apps/overview Lane B.

Why this works

ApproachSignal quality
❌ “Trending Now” feedNews, sports, celebrities — content demand, not tool demand
❌ 3-day spikesFresh domains can’t rank fast enough to catch them
✅ Rising-but-durable queries with tool intentGrowing steadily over 90 days–5 years, modifier-flagged

The win condition is rising-but-durable: search interest growing consistently for at least a quarter, with a modifier that says “person wants a calculator/converter/generator/checker/downloader”.

Tool-intent modifiers

The regex layer of the radar is a hand-curated list of words that almost always indicate someone wants a tool, not an article:

calculator, generator, converter, checker, validator,
template, downloader, extractor, resizer, decoder, encoder,
"X to Y", "X for Y", "free X tool", "X online",
counter, parser, formatter, minifier, beautifier, diff,
"how to X without Y" (X = task, Y = expensive software)

When a rising query contains one of these, intent is high. When it doesn’t (“best ai assistant 2026”), it’s content/research demand — different game, different product.

Scoring formula

score = growth_slope * duration_of_growth * intent_strength

growth_slope         = (interest_now - interest_3mo_ago) / 3mo_baseline
duration_of_growth   = months in a row where slope > 0 (cap at 24)
intent_strength      = sum of modifier weights matched (calculator=1.0, "X to Y"=0.8, generator=0.7, …)

penalty if:
  - max-week-of-growth / median-of-growth > 3   (likely a spike, not a trend)
  - query length < 2 words                       (too generic)
  - language ∉ {en, hr, de, …our targets}        (we'd need translation/locale work)

flag for human review:
  - already in shipped.json                      (built or actively rejected)
  - similar to a queued idea (string similarity > 0.8)

The point isn’t a perfect score. The point is filter 95% of the noise so a human can spend 20 min on the remaining 5%.

Recurring trend-capture patterns

Categories that reliably produce demand-radar hits:

PatternExample signals
New file formats / platform outputs”heic to jpg”, “webp converter”, AI-model output formats
New platform needsEvery new social feature → downloader/scheduler/resizer demand
Regulatory & seasonal recurrencesTax, severance, holiday calculators — evergreen after first rank
Every new AI model release”X prompt generator”, “X token counter”, “X cost calculator”
New dev tools / protocols”X config generator”, “X migration tool”, MCP/agent tooling

The seasonal recurrences are particularly attractive: rank once, harvest yearly.

Cross-checks (relative ≠ absolute)

Google Trends shows relative interest, not absolute volume. A query at “100” on a country chart could be 10 searches/month or 10M. Always cross-check absolute volume before committing a weekend:

  • Google Keyword Planner (free, requires Ads account) — gives volume brackets
  • Ahrefs free tier / Semrush free tier — exact monthly volume estimates
  • Glimpse browser extension — overlays absolute volume onto Trends

Threshold: ≥ 1k/mo searches in target market before it’s worth a weekend. Below that, even a 100% conversion rate is not enough revenue.

Distribution must not depend on fresh SEO

This is the constraint that disqualifies a lot of trend candidates: if the only way to capture demand is to rank on Google in 3 months, a fresh domain will lose to incumbents. So the radar weights candidates by available non-SEO channels:

  • Chrome Web Store — extension form factor, instant distribution
  • RapidAPI / MCP directories — API/agent form factor (see marketplace-distribution)
  • Product Hunt — launch-day discovery (one-shot, but works)
  • Subreddits — niche communities (must contribute, not just plug)
  • Uncontested niches — including Croatian-language tool queries, which are nearly undefended (kula’s language, language → moat)

If a query has demand but no viable distribution channel, skip it.

The radar tool (weeknight build)

A scheduled job (cron on coolify) that each week:

  1. Pulls rising queries — per category (Computers & Electronics, Finance, Business) and per geo (US, EU, HR) — from a data source (see below)
  2. Regex-filters for the tool-intent modifier list
  3. Scores by growth slope × duration × intent strength; penalty for one-week spikes
  4. Dedupes against shipped.json (registry of built + rejected ideas)
  5. Posts top ~10 candidates to Slack/email as a Monday digest

Stack: Go (reuses url-intel’s HTTP + safeurl pieces), Redis (de-dup + cache), file-backed shipped.json for now. ~3–4 hours to v1.

Data source — the actual problem

Google’s official Trends API is alpha/gated as of mid-2026, public release ~a year away. pytrends-style scraping is unreliable (rate limits, CAPTCHAs).

The pragmatic path:

  • Start with manual weekly export + a scraping API’s free tier (Apify, SerpApi, Glimpse) for the automated layer
  • Apply for the official Trends API alpha now — small form, slow queue; if accepted before public launch, real moat for the trend-alert product

shipped.json — the de-dup ledger

A flat JSON registry of every candidate the radar has surfaced:

[
  {
    "query": "heic to webp converter",
    "first_seen": "2026-06-07",
    "decision": "rejected",
    "reason": "Chrome extension form-factor; not our channel",
    "score": 142
  },
  {
    "query": "claude tokens cost calculator",
    "first_seen": "2026-05-30",
    "decision": "shipped",
    "url": "https://claude-cost.kulify.me",
    "shipped_at": "2026-06-02"
  }
]

Without this, the same query bubbles up every week and the digest becomes noise.

Cadence (the kulify portfolio rhythm)

SlotActivity
Weekend #1url-intel/overview — demand-proven, no radar needed
WeeknightDemand radar v1
Weekend #2url-intel MCP wrapper
Weekend #3+Alternate safe-portfolio builds with radar-sourced trend bets

Economics

Per the BACKLOG playbook: €50–500/month each, occasional breakout. Portfolio game. Ship many, keep winners. Duds idle on coolify for ~free (zero compute when no traffic).

The math: 10 radar-sourced products at €100/mo avg = €1k/mo passive. The breakout (1 in 10) is the upside, not the base case.

Risks

RiskMitigation
Trends signal lags real demandCross-check absolute volume; if the trend is “discovery happened on TikTok last week”, the search demand follows weeks later — sometimes too late
Modifier list misses new categoriesQuarterly review of the regex; add patterns the radar should have caught
shipped.json rotRe-review rejections every 6 months — sometimes the channel changes (e.g., a new marketplace makes it viable)
Google Trends API alpha deniedFallback: paid scraping APIs are €50/mo, still cheap relative to one win