Inspiration

Job searching is overwhelming. You apply to dozens of companies across LinkedIn, company websites, and email — then three weeks later you have no idea what's pending, what moved forward, or what you forgot to follow up on. I built ApplyMate because I lived that problem and wanted a solution that fits where my day already happens: Slack.

Required Technology: Slack AI Capabilities

ApplyMate uses Google Gemini AI (gemini-1.5-flash-8b) as its core AI capability inside Slack. The /suggest command sends the user's application data to the Gemini API and returns personalised, intelligent job search coaching — specific next steps based on exactly where the user stands in their job search. This is not a bolt-on feature; without AI, ApplyMate would only be a tracker. With Gemini AI, it becomes a job search coach.

What it does

ApplyMate is an AI-powered Slack agent that helps job seekers track every job application and get intelligent coaching — without leaving Slack. Instead of juggling spreadsheets or sticky notes, you log, view, update, and get AI-powered suggestions using simple slash commands.

  • /apply Company, Role — log a new job application
  • /mystatus — view all applications with colour-coded statuses
  • /update Number, Status — update an application status
  • /delete Number — remove an application
  • /suggest — get AI-powered job search coaching from Gemini

How I built it

  • Slack Bolt to handle slash commands and verify requests
  • Flask as the server receiving Slack's webhook POST requests
  • Railway for cloud deployment so the bot runs 24/7 without a local server
  • Google Gemini AI (gemini-1.5-flash-8b) for intelligent job search suggestions
  • python-dotenv for environment variable management
  • JSON file storage to persist application data per user
  • Slack Block Kit for structured, native-feeling UI responses

Challenges we ran into

Getting the Slack webhook routing working correctly was the biggest challenge. I had to switch from say() to respond() to handle slash command contexts properly, resolve a scope issue with chat:write.public permissions, and fix Gemini API model compatibility issues. Deploying to Railway so judges could test without running a local server was also a key technical hurdle.

Accomplishments that we're proud of

Building a fully functional AI-powered Slack agent from scratch in under a week with no prior Slack development experience. The /suggest command genuinely adds value — it doesn't just track applications, it coaches the user on what to do next based on their real data.

What we learned

How to build a fully functional Slack agent from scratch using Slack Bolt and Flask, how webhook-based architectures work in practice, how to use Block Kit to build structured native-feeling Slack UI, and how to integrate Google Gemini AI into a real production Slack app deployed on Railway.

What's next for ApplyMate

  • Automatic follow-up reminders based on application age
  • Interview preparation tips powered by AI
  • Integration with LinkedIn and job boards to auto-log applications
  • Team mode for career coaches to track multiple clients

Built With

Share this project:

Updates