Skip to main content
Home / Portfolio / IntelBriefs
Research

IntelBriefs

Quick intelligence briefings — 15s shallow, 90s deep

Built by Rogue AI · Two-tier research briefer that feeds a CRM · Self-hosted

Built through 2026 as part of the Rogue AI fleet.

IntelBriefs — Quick intelligence briefings — 15s shallow, 90s deep

The problem

Before a meeting, interview, or sales call you want a short, sourced read on a person or company — but the useful signal is scattered across web results, your own CRM history, and local notes, and pulling it together by hand costs more time than the call is worth. The hard part isn't the model; it's deciding how much research a given moment actually justifies. A two-minute pre-call check and a deep-dive before a serious pitch are different jobs that most tools collapse into one slow default.

What I built

IntelBriefs runs the same research pipeline at two depths and lets the caller pick. Quick (~15s) does a single web search pass, a CRM contact lookup, and one synthesis pass — enough for a name you're about to meet. Deep (~90s) widens the search to a second provider, pulls LinkedIn data when a URL is given, reads full CRM history and deals, greps local files, and runs a three-pass synthesis (summarize → talking points → strategy). Both write the result to Postgres and push a one-way summary into the CRM so the brief lands on the contact record, not in a silo. A watchlist with a cron runner re-runs chosen subjects on a schedule and flags what changed since last time. Each finding carries its source, and sources are scored for credibility so a government domain outweighs a forum post.

Architecture

Two-tier pipeline, one orchestrator
A single pipeline orchestrator branches on depth. Quick = web search + CRM lookup + one synthesis pass. Deep = a second search provider, LinkedIn, full CRM history, a local file scan, and three chained synthesis passes. Sharing one code path keeps the two tiers honest — Deep is Quick plus more evidence, not a separate product.
Local-first LLM with a Claude bridge switch
Synthesis defaults to a self-hosted Ollama model so briefs run offline with no per-call cost. An LLM_PROVIDER flag flips every call to a host CLI bridge when a stronger model is wanted. The pipeline doesn't know which is serving it — the same prompt path works either way.
Source tracking and credibility scoring
Every brief records where each claim came from — web, CRM, local file, LinkedIn — and each domain gets a credibility score from a known-domain table with TLD heuristics and per-user overrides. A brief is only as trustworthy as the sources behind it, so the sources are first-class, not hidden.
One-way push into the CRM
A REST client finds or creates the contact in the CRM and logs the brief as an activity on that record. The integration is deliberately one-directional — no shared database — so a research tool can never corrupt the system of record it feeds.
Watchlist with a cron runner and delta detection
Subjects can be put on a watchlist with daily/weekly/monthly schedules. A cron endpoint processes a bounded batch of due items per tick and records what changed against the previous run, so a recurring brief surfaces the delta rather than re-reading the same summary.
Self-hosted, network-isolated stack
Next.js app, Postgres, and Redis run in Docker on a dedicated subnet with ports bound to localhost only, reaching shared Ollama and the CRM over named networks. Auth is NextAuth v5; data access goes through Prisma 7 on a least-privilege database user.

Tech stack

Next.jsPrisma 7OllamaClaude bridgeRedis

What broke first

  • Make depth an explicit choice, not a guess. The same pipeline at two clearly-labelled tiers beats one clever model trying to decide how hard to work — the caller knows whether this is a quick check or a real pitch, and the tool shouldn't pretend to.

  • A synthesis is only as good as its sources, so treat sourcing as a feature. Recording provenance and scoring domain credibility turns 'the AI said so' into a brief you can actually defend in the room.

  • Keep integrations one-directional. Pushing briefs into the CRM without sharing its database means the research tool stays a contributor — it can add notes but never break the record of truth.

Outcome

IntelBriefs runs as a self-hosted tool in the Rogue AI lab: pick a depth, get a sourced brief in seconds or a minute and a half, and have it land on the right CRM contact. It is built and operated by one person as a portfolio demo, so there is no large user base behind it and the depth timings are design targets that move with model and network speed, not benchmark guarantees. The interesting part isn't any single brief — it's the shape: two honest tiers over one pipeline, every claim sourced, and a clean one-way handoff to the system that already holds the relationships.

Honest limits

Self-hosted and built solo as a portfolio demo. It runs in a local lab (the old public-demo VPS has been retired), there is no large production user base, and accuracy depends entirely on the quality of the underlying search and model. The 15s/90s figures are depth targets, not guarantees — they shift with the model, the providers, and the network on the day.

Related reading

← Back to portfolio