This repository defines an OpenClaw-friendly agent workflow for prompt-first lead intelligence, JSON auditability, and HubSpot handoff design.
Tags: openclaw ai-agents multi-agent prompt-engineering lead-intelligence hubspot json-workflows
The workflow is built for:
- finding potential leads from LinkedIn profiles
- finding pain signals from LinkedIn posts and comments
- qualifying strong opportunities
- syncing qualified leads into HubSpot
- storing research data locally as JSON
The repository is intentionally prompt-first. Each agent has a clear contract, a fixed input, a fixed output, and a narrow responsibility.
There are two collection paths and one shared CRM destination.
agents/linkedin_scout/PROMPT.mdScrape founder/operator profiles that show pain around PRDs, planning, shipping, or AI coding workflows.agents/hubspot_processor/PROMPT.mdNormalize, dedupe, score, tier, and upsert strong profile leads into HubSpot.
agents/content_scout/PROMPT.mdScrape public LinkedIn posts and comments that contain pain signals.agents/insight_storer/PROMPT.mdStore every content insight locally, dedupe it, and promote only strong authors into HubSpot.
agents/orchestrator/PROMPT.md defines the run order, handoff rules, and cron behavior.
- Scouts only collect evidence. They do not score, message, or write to HubSpot.
- Processors decide. They normalize, dedupe, score, tier, and sync.
- Every run should be idempotent. Running the same cron twice should not create duplicate HubSpot contacts or duplicate local insights.
- Local JSON is the system of record for raw research. HubSpot is the system of record for qualified leads.
- Prompts should be readable by a human reviewer without needing hidden context.
Use two cron jobs instead of one large mixed run.
Runs the orchestrator in lead mode:
- run
linkedin_scout - verify
data/leads/raw_candidates.jsonexists and is valid - run
hubspot_processor - verify
data/leads/qualified_leads.jsonexists and summarize results
Runs the orchestrator in content mode:
- run
content_scout - verify
data/content/content_insights.jsonexists and is valid - run
insight_storer - verify
data/insights.jsonexists and summarize results
This separation keeps failures isolated and makes reporting easier.
Canonical output files:
data/leads/raw_candidates.jsondata/leads/qualified_leads.jsondata/content/content_insights.jsondata/insights.json
Each file should contain:
runIdcapturedAtISOorprocessedAtISOsource- a top-level array of records
Each record should contain enough evidence to justify why it exists.
This repo is not a generic scraping folder. It is a controlled lead-intelligence workflow with:
- narrow agent ownership
- explicit handoffs
- JSON-first auditability
- HubSpot sync guardrails
- no automated outreach sending
If you want this to become executable rather than prompt-only, the next layer should be:
scripts/validate_json.*scripts/hubspot_upsert.*scripts/run_pipeline.*- optional
schemas/*.json logs/ordata/runs/for archived run manifests
The prompts in this repository are now structured so those scripts can be added without changing the business flow.