Inspiration
As a hackathon organizer looking for sponsors, and as someone job hunting to secure my own future, I kept hitting the same problem. The information I needed was scattered across a dozen tabs instead of living in one place, so every outreach attempt started from scratch. There was no single place to pull a company's contacts, hiring signals, and related opportunities together. I built Talon to solve that problem for myself.
What it does
Talon researches a company and manages outreach to it on its own. Give it a company name and it pulls together public contact emails, social profiles, hiring and funding signals, and a list of similar companies worth approaching, without using a paid data provider. Talon sends outreach over email or Telegram, then keeps working after that first message goes out. When a reply comes back, Talon reads it and decides whether a person wrote it or whether it's an automated response. If it looks automated, Talon escalates with firmer language and keeps following up until someone responds. Once a person answers or the case resolves, Talon notifies the user and closes it out. Every company stays on a Map that updates itself in the background, since Talon rechecks hiring activity, funding news, and related companies on its own schedule and surfaces new signals over time.
How we built it
We built Talon as a Python backend that combines Caspian for multi channel outreach, Groq for reasoning, and targeted web scraping for contact discovery. Caspian handles outreach across email and Telegram through a single handler, so the same case logic runs no matter which channel a conversation starts on. Groq's openai/gpt-oss-120b model handles the reasoning: judging whether a reply is automated, drafting escalation language, and synthesizing research into a report. Contact discovery runs through DuckDuckGo search and targeted scraping of contact, about, and press pages. We tuned the regex carefully so it wouldn't mistake a zip+4 code or a product SKU for a phone number. A background thread rechecks every researched company on a multi hour cycle and compares new findings against old ones, logging only what changed. Email and Telegram share one case and state store, which keeps the escalation logic consistent across both channels. The Map and saved reports pull from that same store. We added Google and GitHub OAuth so users can connect their own inbox.
Challenges we ran into
Building Talon on top of Caspian surfaced a few technical challenges. Caspian assigns a new conversation ID to every inbound reply instead of keeping it on the original thread, so a direct lookup missed most replies. We matched by customer ID to catch them instead. Skipping a paid data provider meant the scraper had to stay conservative, since a phone number pattern can match an order number or a price just as easily as a phone number. We required a nearby context word before trusting any freeform match. Tuning the background Map agent took time too, since it needed to report only genuine changes instead of logging "checked, nothing new" every cycle.
Accomplishments that we're proud of
We're proud that Talon reads what comes back and decides on its own whether to keep pushing. The background Map agent keeps researching without anyone asking again, so the information stays current. The contact discovery pipeline works without any paid API, which matters when running outreach for a hackathon or a job search with limited time and resources.
What we learned
We learned that reliable escalation depends on handling messy, inconsistent behavior: threads that don't stay threads, scraped data that's noisy by default, and knowing when to stay quiet so a genuine signal doesn't get buried under repeated non updates. Autonomy earns trust when it behaves conservatively by default.
What's next for Talon
Next for Talon, we want to add more outreach channels like LinkedIn and SMS, and have Talon match its tone to the relationship, since a message to a sponsor should read differently than one to a recruiter or a cold contact. We plan to deepen the Map with signals like headcount growth and funding round size, and add CRM export for people running outreach at a larger scale than one hackathon or job search.
Built With
- beautifulsoup4
- caspiansdk
- css
- duckduckgo
- flask
- githubauth
- googleauth
- groqapi
- html
- javascript
- oauth
- python
Log in or sign up for Devpost to join the conversation.