DISCLAIMER: the lead-searcher uses gemini to search the web and analyze inputted descriptions of users, so occasionally when the gemini servers are busy the search will halt, if this happens please wait 30-60s before testing again (it's not broken I promise :D ), Aditionally sometimes search time increases due to traffic on servers, the backend is being hosted on render's free plan it will go offline after fifteen minutes of inactivity and takes a few minutes to cold-start, additionally I've now discovered even with the uptime bot it's still unreliable so anyone using the demo link please be a bit patient and give it a few trys.

Inspiration

The inspiration for this project came from my own experience of having to spend hours drafting a list of companies and their emails to contact when I was looking for sponsors for my school's CS contest, it was incredibely tedious and many sites wouldn't have their emails directly listed and I would have to inspect the HTML to find it.

What it does

Users enter a description of the companies/businesses they're looking for and the number of leads to generate for this list (caps at 10 per generation), they can than download the list into CSV file and save them to a "saved leads folder" (data stored locally), there is also an option to toggle an "exclude saved" which basically just prevents the same duplicates from showing up again in future searches.

How we built it

built with a FastAPI Python backend and a Next.js frontend. The backend uses DuckDuckGo Search to find business websites based on a user's description, scrapes their content with BeautifulSoup, then passes the text to Google Gemini to extract structured lead data (company, email, decision maker, industry). The frontend presents results in a clean dark-themed dashboard with save, filter, and CSV export features.

Challenges we ran into

I was on vacation for most of the week so I had to grind out most of the stuff the day before submission ;-;. Apart from that key challenges included DuckDuckGo's search API randomly returning 404 errors, slow scraping timeouts on unresponsive websites, Gemini returning N/A for emails and websites when page content was sparse, and an outdated Gemini model causing API failures. Structuring the project cleanly for Render deployment also required reorganizing the codebase mid-build.

Accomplishments that we're proud of

I'm really proud of the project in general, it's honestly very useful especially for my own personal use as I cold-email a lot and this cuts down on that time a lot, also the UI animation looks pretty cool.

What we learned

Patience

What's next for NameKard

Probably going to try and improve the speed and reliability during lead-searches as the time it takes varies a lot and can be a bit inconvinient.

Share this project:

Updates