An end-to-end AI pipeline that identifies D2C brands showing buying intent for ClickPost's post-purchase platform, scores them by intent strength, and generates personalized outbound sequences. Includes a clean, modern Streamlit UI for reviewing scores, signals, and outreach messaging.
- Signal Extraction: Pulls open roles (via Greenhouse/Lever ATS), public complaints (Tavily Search/Reddit), tech-stack competitors (subdomain resolution & HTML scanning), and growth/leadership news (Google News RSS).
- Intent Scoring: Uses a heuristic algorithm to assign a confidence score (0-100) based on signal weights and data freshness.
- AI Outbound Generation: Leverages Groq (Llama 3.3) to dynamically write personalized LinkedIn messages and follow-up/breakup email sequences tailored strictly to the collected signals.
- SaaS Dashboard: A premium, high-density Streamlit application mimicking a production CRM environment.
pip install -r requirements.txtCreate a .env file in the project root:
GROQ_API_KEY=your_groq_api_key_here
TAVILY_API_KEY=your_tavily_api_key_hereGenerate the data by running the pipeline script. Outputs are saved as JSON files in the output/ directory.
# Run for all accounts
python main.py
# Quick test with only 3 accounts
python main.py --accounts 3
# Test with a specific brand
python main.py --brand "Vuori"Start the Streamlit interactive dashboard:
streamlit run app.py├── app.py # Streamlit UI Dashboard
├── main.py # Backend data collection & scoring pipeline
├── config.py # Configuration (brand lists, keywords, weights)
├── collectors/ # Signal extraction modules
│ ├── greenhouse_collector.py # ATS API collector
│ ├── techstack_collector.py # Subdomain & HTML analysis
│ ├── news_collector.py # Google News RSS fetcher
│ └── review_collector.py # Tavily / Reddit complaint discovery
├── scoring/
│ └── intent_scorer.py # Signal aggregation and heuristic scoring
├── activation/
│ └── outbound_generator.py # Groq-powered messaging prompt chains
└── output/ # Generated JSON artifacts (scores, raw signals, outbound)