Building an AI-Powered Startup Job Matcher
Through Agentic AI solutions to a handcrafted workflow
Introduction
This project was developed during the LLM Agents Learning hackathon (https://rdi.berkeley.edu/llm-agents-hackathon/ ), where we set out to solve a critical challenge in the startup ecosystem using AI agents. The hackathon not only provided the platform but also offered valuable OpenAI credits that enabled us to experiment with different approaches.
The Problem Space
The tech startup ecosystem presents a unique hiring challenge. Startups, with their fast-paced nature, require specialized skills but often lack the visibility to attract top talent. Meanwhile, recent tech layoffs have created a pool of skilled candidates seeking new opportunities. Traditional hiring methods often fall short, creating a gap between available talent and startup needs.
This is where we saw an opportunity to leverage LLM agents to create a more intelligent matching system.
Our Journey: From Complex to Simple
Initial Approach: Experimenting with LLM Agents
Our journey began with ambitious plans to create a fully automated system using LLM agents. We explored three main approaches:
The Autogen Experiment
My first stop was Microsoft's Autogen framework. The promise was enticing – multiple AI agents working together to solve complex problems. I spent hours setting up agents to scrape startup information from various sources. The initial results were promising; watching Autogen generate scraping code autonomously was almost magical. But then reality hit: the websites we needed to scrape had robust bot protection. Autogen could write perfect code, but it couldn't overcome these real-world barriers.
Exploring Magentic-One
Undeterred, I pivoted to Magentic-One, another Microsoft framework that seemed perfect for our needs. The framework impressed me with its methodical approach – it would break down tasks, plan solutions, and generate code systematically. But as we tried to execute the code, we ran into a new problem. The framework got caught in frustrating loops, trying to resolve errors but never quite succeeding.
Claude's Computer Use
I experimented with Claude's computer use capabilities. It was fascinating to watch Claude navigate websites, access press releases, and convert screenshots to text. But this approach brought its own challenges – the extracted text was messy, filled with navigation elements and irrelevant content. Plus, the computational costs were adding up quickly.
The Hackathon Reality Check
Being in a hackathon setting significantly influenced our technical decisions. While we could have spent more time solving issues with Autogen we had to prioritize delivering a working prototype within the hackathon timeframe.
Pivoting to Optimal Solution
We ultimately opted for a more straightforward approach:
Data Collection
We switched to a more straightforward approach: manually accessing URLs and using the browser's reader view to capture clean text. It wasn't automated, but it gave us something invaluable – clean, reliable data.
Vector Database Implementation
We used OpenAI's Ada-002 to create embeddings of our company data and stored them in ChromaDB.
Matching
At the core of our solution is a nuanced matching system that goes beyond simple keyword matching. When a candidate uploads their resume, we use an LLM to parse their experience and preferences, convert this information into embeddings, and search our startup database for potential matches. The evaluation considers multiple weighted factors: industry alignment (35%), technical skills (25%), experience level (25%), and growth stage fit (15%). For example, a fintech startup might score highly for candidates with relevant industry experience, while the system also considers whether their years of experience match the company's stage – early-stage startups might prefer those with 0-5 years of experience, while growth-stage companies might seek more seasoned professionals. This multi-faceted approach consistently produced matches that resonated with both candidates and startups.
4. Outreach Package Generation
The final piece of our system focuses on turning matches into meaningful connections through personalized outreach. When a candidate selects a company, our LLM analyzes their resume, the company profile, and our matching scores to generate a tailored outreach package. The system creates a cover letter that emphasizes the strongest alignment points – whether that's specific technical expertise, industry experience, or growth stage fit. Alongside the letter, it identifies relevant company leaders to connect with based on role alignment. By automating this typically time-consuming process while maintaining a high degree of personalization, we help candidates make that crucial first impression count.
System Architecture
App Screenshots
We used Cursor AI coding tool for rapid prototyping. It reduced the development time and facilitated work with unfamiliar frameworks.
Lessons Learned
Claude Computer user works well but can’t scale.
Autogen and MagenticOne works through conversation between agents which is verbose and gets stuck in loops and generally not mature enough.
RAG worked well out of the box.
Agentic AI is an exciting space but it needs more stability and optimization.
Looking Forward
While our solution isn't as fully automated as initially envisioned, it successfully bridges the talent-startup gap. As LLM agent frameworks mature, we see potential for increasing automation while maintaining reliability.
Acknowledgments
A special thank you to Berkley RDI & LLM Agents MOOC for organizing this incredible hackathon and providing the educational foundation through their course. Their support, particularly the OpenAI credits, was instrumental in allowing us to experiment with different approaches and bring this project to life.
The project demonstrates that effective AI solutions don't always need to use the most advanced approaches - sometimes, thoughtfully combining simpler components can create powerful results. Sometimes, the best hackathon strategy is knowing when to simplify your approach to deliver working value.