Daily zero-config scanner for ML/AI/voice-DSP consulting & contract leads. Pure stdlib Python CLI.
Find a file
2026-05-09 10:59:04 -04:00
src/opportunity_radar Initial MVP commit 2026-05-09 10:59:04 -04:00
tests Initial MVP commit 2026-05-09 10:59:04 -04:00
.gitignore Initial MVP commit 2026-05-09 10:59:04 -04:00
LICENSE Initial MVP commit 2026-05-09 10:59:04 -04:00
pyproject.toml Initial MVP commit 2026-05-09 10:59:04 -04:00
README.md Initial MVP commit 2026-05-09 10:59:04 -04:00

opportunity-radar

Daily zero-config scanner for ML/AI/voice-DSP consulting & contract leads. Pure stdlib.

A focused successor to the "opportunity-radar" idea proposed in the May 1, 2026 profile-pivot conversation: surface contract/consulting work to fund the RTX 6000 (Blackwell Pro) + June 2026 Mac Studio without manual scrolling.

Why this project

Pulled from the chat thread on May 1, 2026 ("what to automate / what tool to build tonight to make tomorrow easier") where Luis pivoted the main Hermes profile to research, optimizations, evaluating new tools, sourcing consulting/contract work. The follow-up on May 5 drafted two outreach pitches but flagged a recurring gap: morning briefs keep failing to surface consulting/contract leads despite the memory directive. The May 8 morning brief carried the same gap forward.

opportunity-radar is the missing inbound channel — a cron-friendly CLI that scans public boards, scores leads against Luis's actual stack (vLLM, eval, voice DSP, fine-tuning, real-time audio, Apple silicon), filters out noise (WordPress, logo design, generic AI app builders), and emits a ranked markdown digest.

What it does

Scans these unauthenticated public sources:

  • HN "Who is hiring? (freelancer? seeking freelancer?)" — via Algolia search API for SEEKING FREELANCER and REMOTE CONTRACT comments.
  • r/forhire[Hiring] posts mentioning AI/ML/LLM.
  • r/MachineLearning[P] / contract / consulting threads.
  • r/LocalLLaMAhire / consultant / contract threads.

For each lead it computes a composite score from:

  1. Keyword fit (vllm, fine-tune, eval, voice DSP, BlackHole, Core Audio, open-weight, RAG, leaderboard, …) with penalties for WordPress / Wix / logo / data-entry posts.
  2. Pay signal parsed from snippet — $/hr, $/week, $Xk, budget $…. Higher rates score higher.
  3. Recency — within 24h, week, month.

Outputs a ranked markdown report (or JSON with --json).

Install

git clone https://git.lucataco.dev/Catacolabs/opportunity-radar.git
cd opportunity-radar
pip install -e .

Pure stdlib — no third-party deps.

Run

# Top 25 leads above default score threshold (3.0), markdown to stdout
opportunity-radar -v

# Save to a daily digest file
opportunity-radar -v -o ~/Code/Catacolabs/leads/$(date +%F).md

# Top 10 high-confidence only (threshold 6.0)
opportunity-radar -t 6 -n 10

# JSON for piping into Telegram / Notion
opportunity-radar --json -n 10 | jq '.[].url'

# Raw dump (no threshold) for debugging
opportunity-radar --all -n 100

Daily cron suggestion

Add via hermes cronjob create on the main profile:

30 8 * * *  opportunity-radar -t 4 -n 15 -o ~/Code/Catacolabs/leads/$(date +%F).md

Pair with the morning-brief delivery so leads appear in the same channel each morning.

Scoring tuning

Edit src/opportunity_radar/score.py:

  • HIGH_VALUE — keyword → weight (positive).
  • PENALTY — keyword → negative weight.
  • PAY_PATTERNS — regex-tagged pay-signal extractors.
  • is_relevant(threshold=…) default cutoff.

Tests

pip install pytest
pytest -q

License

MIT.