Seller profile cache
Codifies what the seller sells: problems, ICP, personas, technographics, competitors, timing signals, and prospecting focus.
I designed, built, and operate a production multi-agent AI system that converts a seller URL and prospect URL into an evidence-grounded account-research report in 3-5 minutes. It replaced 4-8 hours of manual SDR/AE research and now powers GTM pipelines for multiple consultancy clients.
Every B2B seller asks the same three questions before outreach: is this account a fit, is the timing right, and who should I contact? Manual research answers those questions well, but it takes hours. Generic intelligence tools scale, but they give every seller the same firmographic data and the same weak scores.
The missing layer was personalized, evidence-grounded analysis at machine throughput. The output had to be tailored to the seller's products, ICP, timing signals, competitors, and technographic assumptions. It also had to cite public sources and render into a product surface without manual cleanup.
I split the system into specialized stages because the job is not one prompt. Seller profiling, prospect research, account analysis, contact selection, and batch dispatch all have different failure modes, costs, and retry boundaries.
Codifies what the seller sells: problems, ICP, personas, technographics, competitors, timing signals, and prospecting focus.
Collects news, filings, annual reports, jobs, technographics, company-site material, and general research into a per-prospect corpus.
Scrolls small corpora directly and switches to OpenAI-embedded vector search only when the prospect collection gets large enough to need it.
Produces fit, timing, classification, evidence references, confidence scores, and GTM recommendations with schema-enforced JSON.
Ranks likely contacts for outreach using persona-aligned scoring and the seller profile, instead of generic title matching.
Submits long Gemini Batch jobs asynchronously, throttles outbound callbacks, and reports progress back into Postgres for the UI.
The SAP is the system's reusable context layer. Seller profiles change slowly, so I cache the SAP once per seller instead of re-deriving it per prospect. That eliminated roughly 40% of repeat-run cost.
Adaptive retrieval beat a heavier RAG stack at this corpus size. Small prospect collections are full-scrolled for recall; larger collections switch to LLM-generated queries, OpenAI embeddings, and Qdrant top-K search.
Technographic-heavy accounts take a deterministic branch. JavaScript computes maturity, trajectory, scale, dominance, competitor-gap candidates, and timing signals before Gemini synthesizes the interpretation.
Gemini Batch calls run asynchronously because synchronous waits hit n8n's execution cap on large jobs. FastAPI returns immediately, then callback updates Postgres when the model work is done.
Schema-enforced output made the frontend simpler and safer. Fit scores are integers, evidence is resolvable, required fields are present, and UI components can render the result without treating every model answer as suspicious prose.
The production bugs were real systems bugs: queue starvation from token over-estimation, callback flood overload, stale cost reads, and provider SDK edge cases. Fixing those is the work that makes an AI system dependable.
type ProspectAnalysis = {
engage: boolean
priority: "critical" | "high" | "medium" | "low"
fitAssessment: {
overallFitScore: number
overallFitConfidence: number
verdict: string
checklist: Array<{
label: string
met: "Met" | "Partial" | "Not met"
evidence: string
source: string
}>
competitorPresence: CompetitorSignal[]
}
timingAssessment: {
overallTimingScore: number
signals: TimingSignal[]
}
technographicIntelligence?: {
overallStackMaturity: string
buyingWindowSignals: Signal[]
competitorGapWedges: Wedge[]
}
accountClassification: {
tier: "Tier 1" | "Tier 2" | "Tier 3"
rationale: string
}
evidenceUrls: EvidenceUrl[]
}Enterprise Researcher v2.0 is deployed in production at No Fluff Selling and serves client GTM pipelines for pre-call prep, SDR queue prioritization, ABM target-list construction, and inbound qualification. The conditional pathway architecture has already been validated on a live technographic-heavy client.
The next technical moves are straightforward: better offline evals for SAP and PA stages, re-ranking for very large prospect corpora, and specialized variants for other seller archetypes such as regulatory-heavy workflows.
For focused AI systems architecture or production workflow work, write directly. I take on limited, non-conflicting fractional builds.