YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Sponsorship Lead Finder
This project watches AI companies for useful news and creates a simple sales packet when a company looks ready for sponsorship outreach.
It currently watches:
- Perplexity AI
- Mistral AI
When it finds a good reason to reach out, it creates:
- a recommendation summary
- contact profiles
- ready-to-send draft emails
Simple Workflow
- The app checks recent company news.
- It decides if the news is important enough for sponsorship outreach.
- If yes, it finds likely decision-makers.
- It writes contact files.
- It writes email drafts.
- It saves everything inside the
output/folder.
How The Agent Works
The agent has three main jobs:
- Collect recent news about each company.
- Use an LLM to decide if there is enough evidence to approach the company.
- If yes, create a short sponsorship recommendation and draft outreach emails.
The agent looks for business signals that could make a company a good sponsorship target. Examples:
- fundraising
- new partnerships
- product launches
- acquisitions
- market expansion
- important executive hires
- other strong company updates
The LLM does not recommend a company just because the company was mentioned in the news. It checks if the news is concrete, recent, and useful for a sponsorship conversation.
When the LLM decides the company is worth approaching, the app creates a recommendation with:
- why this company is a good target now
- the source links behind the decision
- a suggested next step
- contacts to review
- draft emails to send after checking
What Counts As Good Evidence
The agent is looking for news that gives the sales team a real reason to reach out now.
Good examples:
- the company raised a large funding round
- the company announced a major partnership
- the company launched a new AI product
- the company acquired another company
- the company expanded into a new market
- the company hired an important executive
Weak examples:
- opinion articles
- old news
- general AI trend articles
- repeated versions of the same story
- news where the company is only mentioned briefly
- rumors or unclear information
If the evidence is weak, the app does not create a recommendation.
What Happens On The Second Run
The app saves memory after every run.
If the same source link appears again in a second run, the app recognizes it and does not process it again.
If a different source reports the same story, the app tries to treat it as the same event, not a new reason to contact the company.
Example:
- Run 1 finds that Mistral AI raised money.
- The app creates a recommendation and saves that this story was already used.
- Run 2 finds the same fundraising link again.
- The app skips it and does not create the same recommendation again.
This keeps the output clean. A new recommendation is only created when there is new useful evidence, not just repeated news.
What The API Keys Do
You can run the app with only OPENAI_API_KEY, but more keys make the results better.
OPENAI_API_KEY decides if the evidence is strong and writes recommendations/emails
PARALLEL_API_KEY finds more business news
EXA_API_KEY finds more news and can also help find public contact profiles
FIRECRAWL_API_KEY checks company newsroom/blog pages
APOLLO_API_KEY tries to find decision-makers and verified emails
If one optional key is missing, the app still runs. It just skips that source.
Setup
Install the required packages:
pip install -r requirements.txt
Create your .env file:
copy .env.example .env
Then open .env and fill in the values you have.
Most important:
OPENAI_API_KEY=
OUTREACH_SENDER_NAME=
OUTREACH_SENDER_TITLE=
OUTREACH_SENDER_ORGANIZATION=xyz
OUTREACH_SENDER_EMAIL=
OUTREACH_SENDER_PHONE=
Optional, but useful for better research and contacts:
PARALLEL_API_KEY=
EXA_API_KEY=
FIRECRAWL_API_KEY=
APOLLO_API_KEY=
Run It
Run for all companies:
python run_agent.py
Run for only one company:
python run_agent.py --company mistral-ai
Start fresh and clear saved memory:
python run_agent.py --reset
Run with the demo test item:
python run_agent.py --simulate fixtures/simulated_new_news.json
What You See In The Console
After each run, the console tells you:
- how many items were found
- how many were already known
- how many were skipped as not useful
- whether a new recommendation was created
- where the recommendation file was saved
- which contacts and email drafts were created
If the console says no new relevant information was found, that is normal. It means the app did not find a new reason to contact that company.
Where To Find Results
Each company gets its own folder:
output/
mistral-ai/
perplexity-ai/
Inside each company folder:
recommendations/ main sponsorship recommendation files
contacts/ contact profile files
contacts/email/ ready-to-send email drafts
history.md past recommendations
links.md useful source links found by the app
Example:
output/mistral-ai/
recommendations/
mistral-ai_2026-09-24_07-37-22_run1.md
contacts/
xyz-xyz.md
xyz-boxyzck.md
contacts/email/
mistral-ai_2026-09-24_07-37-xyz-xyz.md
Reading A Recommendation
Open the newest file in:
output/<company>/recommendations/
It tells you:
- why the company is a good sponsorship target
- what recent news triggered the recommendation
- who to contact
- where the email drafts are saved
The most important parts are:
- Recommendation: short explanation of why this company is worth approaching
- Suggested next step: what the sales team should do next
- Evidence: source links used to support the decision
- Suggested contacts & draft outreach: people to review and email draft locations
Suggested Daily Use
- Run
python run_agent.py. - Check the console for new recommendations.
- Open the newest recommendation file.
- Review the source links.
- Open the contact profile.
- Open the email draft.
- Confirm the recipient email address if it is missing or unverified.
- Edit the email if needed before sending.
Change The Companies
Companies are listed in:
agent/config.py
Edit COMPANIES there if you want to watch different companies.
Notes
- The app remembers what it already processed, so it avoids repeating the same recommendation.
- If no new useful news is found, it does not create a new recommendation.
- Contact data may be incomplete depending on the available API keys.
- Review every email before sending.