Inspiration

The inspiration behind Resume Wrecker stems from the challenges many of us face in today's job market. It often feels stagnant, overwhelming, and at times, downright impossible to stand out. We wanted to create something that not only provides constructive feedback but also injects a bit of humour into the process. Sometimes, all you need is a good laugh to lift your spirits—or a dose of brutal honesty to understand why you're not hearing back from those dream jobs. This project is our way of making the job search a little less daunting and a lot more engaging.

What It Does

The Resume Wrecker is designed to provide users with a unique and engaging way to receive feedback on their resumes. Here's what the project accomplishes:

  1. Resume Analysis:

    • Users can upload their resumes, specify their job title, and set a tolerance level for feedback intensity.
    • The application extracts text from the resume and analyzes it using DeepSeek's R1 model.
  2. Personalized Feedback:

    • Based on the resume content, job title, and tolerance level, the system generates personalized feedback. This feedback can range from constructive criticism to a humorous "roast," depending on the user's preferences.
  3. Audio Feedback:

    • The generated feedback is converted into speech using Azure Cognitive Services, providing users with an audio file they can listen to.
  4. Cloud Integration:

    • Resumes are stored securely in Azure Blob Storage, and metadata about each submission is saved in Azure Cosmos DB for easy retrieval and management.
  5. Health Monitoring:

    • A health check endpoint (/healthz) allows users and administrators to monitor the application's status and ensure it's running smoothly.

In essence, the Resume Wrecker combines technology, humor, and practicality to help job seekers improve their resumes while keeping the process light-hearted and enjoyable.

How We Built It

The Resume Wrecker was built using a forward-thinking approach, leveraging modern cloud technologies and infrastructure as code (IaC) to ensure scalability, reliability, and maintainability. Here's how we did it:

Core Technologies

  1. Terraform:

    • We used Terraform to define and provision all Azure resources as code, ensuring consistency, scalability, immutability, and repeatability in our infrastructure setup.
    • Key resources like Azure Blob Storage, Cosmos DB, Cognitive Services, and Static Web App were defined in Terraform configuration files, allowing us to manage the entire infrastructure programmatically.
  2. Flask:

    • The backend is powered by Flask, a lightweight Python web framework. It handles resume uploads, feedback generation using DeepSeek's R1 model, and integration with Azure services.
  3. Docker:

    • The API is containerized using Docker, ensuring consistent deployment across environments. The Dockerfile defines the environment and dependencies required for the app.
  4. Azure Services:

    • Azure Blob Storage: Stores user-uploaded resumes securely.
    • Azure Cosmos DB: Tracks metadata such as user details, job titles, and feedback tolerance levels.
    • Azure Cognitive Services: Converts text feedback into audio using text-to-speech capabilities.
    • Azure Static Web App: Hosts the frontend, ensuring smooth Continuous Integration and Continuous Deployment (CI/CD) with each push to the main branch.
  5. DeepSeek API:

    • DeepSeek's R1 model generates personalized feedback based on the resume content, job title, and tolerance level specified by the user, providing intelligent and context-aware feedback.

Deployment and CI/CD

  • GitHub Actions:
    • We implemented CI/CD pipelines using GitHub Actions to automate building, and deploying the application to Azure.
  • Terraform for Infrastructure as Code (IaC):
    • Terraform scripts define and provision all necessary Azure resources, ensuring a seamless and repeatable deployment process.

Development Workflow

  1. Local Development:
    • Developers can run the application locally using Docker Compose, with all dependencies containerized.
  2. Testing:
    • Manual testing was conducted to ensure functionality and reliability.
  3. Deployment:
    • Changes pushed to the main branch trigger GitHub Actions workflows, which handle building, and deploying the application to Azure.

By leveraging Terraform for infrastructure management and maintaining a streamlined, modular structure, we built a robust, scalable, and maintainable application that delivers a unique and engaging experience for users.

Challenges We Encountered

  • Azure Pip Packages: Several Azure Pip packages were incompatible with our Kubernetes-hosted environment, leading to dependency conflicts. We had to implement workarounds and custom configurations to keep the project running, which significantly slowed our progress.
  • Azure App Service Hosting: Hosting on Azure App Service introduced additional hurdles, particularly due to the lack of control over the Dockerfile. This limitation caused issues when switching environments, as we couldn’t tailor the configuration to meet our specific needs. As a result, we pivoted to using a custom Dockerfile along with a Docker registry to store and manage our container images, allowing us to regain more control over the deployment process.

Accomplishments We're Proud Of

  • Successfully integrating multiple cloud services (Azure Blob Storage, Cosmos DB, Cognitive Services, and Static Web App) into a cohesive application.
  • Building a fully automated CI/CD pipeline using GitHub Actions.
  • Creating a unique and engaging user experience with humor and practicality.

What We Learned

  • The importance of infrastructure as code (IaC) for managing complex cloud environments.
  • How to effectively integrate AI models (DeepSeek and Azure's AI Speech) with cloud services for real-world applications.
  • The value of modular and scalable architecture.

What's Next for Resume Wrecker

  • Expanding the feedback capabilities to include more detailed resume analysis and suggestions.
  • Adding support for additional file formats and languages.
  • Enhancing the frontend experience with more interactive features like authentication and session management.
  • Exploring additional cloud services and AI models to further improve the application.

Built With

+ 5 more
Share this project:

Updates