Inspiration
Senior Cloud Engineers want to give back and mentor junior developers. But the reality is that their inboxes are flooded with generic "seeking mentorship" requests. Sifting through these emails to find the few candidates who are actually willing to put in the hard work takes hours of wasted time.
I was inspired to build Handshake for the Professional Agents track to solve this exact problem. What if an AI agent could handle the triage, set a rigorous technical bar, and only surface the candidates who prove their worth?
What it does
Handshake is an autonomous technical gatekeeper that lives in a mentor's inbox. It doesn't just auto-reply; it actually evaluates code.
- First Contact: It intercepts incoming "seeking mentorship" emails. Using an MCP (Model Context Protocol) Server, it reads the mentor's local prerequisite rules and replies with a technical challenge (like completing the Cloud Resume Challenge).
- The Rigorous Gatekeeper: When an applicant replies with a project link, Handshake fetches the webpage, strips the HTML, and feeds the raw code to Claude 3.5 Sonnet on Amazon Bedrock. Claude evaluates the architecture. If it's missing required components, the agent rejects it with actionable feedback and logs a "strike" in a local database to prevent spam.
- Success & Handoff: If the candidate submits a high-quality GitHub repo, Claude approves it. Handshake updates the database and automatically releases the mentor's private Calendly link. The mentor simply wakes up to a booked meeting with a highly qualified candidate.
How I built it
Handshake was built using the Strands Agents SDK. The core logic is written in Python and deployed on an AWS EC2 instance so it can poll the inbox 24/7.
- LLM Engine: Amazon Bedrock (Claude 3.5 Sonnet) acts as the semantic judge for code evaluation.
- Context: An MCP Server provides the agent with the mentor's specific architectural pillars and prerequisites.
- State Management: A local SQLite database tracks applicant statuses, URLs submitted, and enforces the 3-strike limit.
- Web Scraping & Email:
imap_toolshandles the inbox polling, whilebeautifulsoup4extracts the raw code and text from applicant-submitted URLs for the LLM to read.
Challenges I ran into
Deploying to a clean cloud environment right before the deadline was a massive hurdle. I ran into several ModuleNotFoundError crashes on my AWS EC2 instance because I was missing core dependencies (imap-tools, beautifulsoup4, and the strands-agents SDK itself) while trying to bypass Ubuntu's global package restrictions. Debugging the background agent process via terminal logs under time pressure was intense!
Accomplishments that I'm proud of
I am incredibly proud of moving beyond a simple "chatbot" or "auto-responder." Handshake actually performs semantic code evaluation. Teaching the agent to scrape a web page, extract the Terraform/Python code, and accurately judge whether an AWS architecture meets strict requirements is a huge technical win.
What I learned
I learned the immense value of Model Context Protocol (MCP) servers. Instead of hardcoding my agent with generic rules, the MCP server allows the agent to dynamically read the mentor's specific standards, making Handshake completely customizable for any senior engineer.
What's next for Handshake
I want to expand Handshake's evaluation capabilities. The next step is giving it GitHub API access so it can clone applicant repositories, run static code analysis, and provide inline PR comments before the mentor ever looks at the code
Built With
- amazon-bedrock
- aws-ec2
- imap-tools
- strands-sdk
Log in or sign up for Devpost to join the conversation.