{"id":141502,"date":"2025-03-18T11:15:12","date_gmt":"2025-03-18T11:15:12","guid":{"rendered":"https:\/\/peraltafinancing.com\/analytics\/jobfitai-comprehensive-resume-analyzer-project\/"},"modified":"2025-03-18T11:15:12","modified_gmt":"2025-03-18T11:15:12","slug":"jobfitai-comprehensive-resume-analyzer-project","status":"publish","type":"post","link":"https:\/\/fivemor.com\/?p=141502","title":{"rendered":"JobFitAI: Comprehensive Resume Analyzer Project"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div id=\"article-start\">\n<p>In today\u2019s competitive job market, making your resume stand out is crucial. JobFitAI is an innovative solution designed to help both job seekers and recruiters by analyzing resumes and offering actionable feedback. Traditional keyword-based filtering methods can overlook crucial nuances in a candidate\u2019s profile. To overcome these challenges, AI-powered systems can be leveraged to analyze resumes, extract key skills, and match them effectively with job descriptions.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-learning-objectives\">Learning Objectives<\/h3>\n<ul class=\"wp-block-list\">\n<li>Install all required libraries and configure your environment with DeepInfra API key.<\/li>\n<li>Learn how to create a AI resume analyzer that processes both PDF and audio files.<\/li>\n<li>Utilize <a href=\"https:\/\/www.analyticsvidhya.com\/blog\/2025\/01\/deepseek-r1\/\" target=\"_blank\" rel=\"noreferrer noopener\">DeepSeek-R1<\/a> via DeepInfra to extract relevant information from resumes.<\/li>\n<li>Develop an interactive web app using Gradio for seamless user interaction.<\/li>\n<li>Apply practical enhancements and troubleshoot common issues, adding significant value to your resume analyzer.<\/li>\n<\/ul>\n<p><em><strong>This article was published as a part of the\u00a0<\/strong><\/em><a href=\"https:\/\/www.analyticsvidhya.com\/datahack\/blogathon\" target=\"_blank\" rel=\"noreferrer noopener\"><em><strong>Data Science Blogathon.<\/strong><\/em><\/a><\/p>\n<h2 class=\"wp-block-heading\" id=\"h-what-is-deepseek-r1\">What is Deepseek R1<\/h2>\n<p>DeepSeek-R1 is an advanced open-source AI model designed for <a href=\"https:\/\/www.analyticsvidhya.com\/blog\/2017\/01\/ultimate-guide-to-understand-implement-natural-language-processing-codes-in-python\/\" target=\"_blank\" rel=\"noreferrer noopener\">natural language processing<\/a> (NLP) tasks. It is a transformer-based <a href=\"https:\/\/www.analyticsvidhya.com\/blog\/2023\/03\/an-introduction-to-large-language-models-llms\/\" target=\"_blank\" rel=\"noreferrer noopener\">large language model<\/a> (LLM) trained to understand and generate human-like text. DeepSeek-R1 can perform tasks such as text summarization, question answering, language translation, and more. Because it is open-source, developers can integrate it into various applications, fine-tune it for specific needs, and run it on their hardware without relying on proprietary systems. It is particularly useful for research, automation, and AI-driven applications.<\/p>\n<p>Also Read: <a href=\"https:\/\/www.analyticsvidhya.com\/blog\/2025\/01\/deepseek-r1s-advanced-reasoning-capabilities\/\" target=\"_blank\" rel=\"noreferrer noopener\">Decoding DeepSeek R1\u2019s Advanced Reasoning Capabilities<\/a><\/p>\n<h2 class=\"wp-block-heading\" id=\"h-understanding-gradio\">Understanding Gradio<\/h2>\n<p>Gradio is a user-friendly <a href=\"https:\/\/www.analyticsvidhya.com\/blog\/2022\/03\/top-10-python-libraries-that-you-must-know\/\" target=\"_blank\" rel=\"noreferrer noopener\">Python library<\/a> that helps developers create interactive web interfaces for machine learning models and other applications. With just a few lines of code, Gradio allows users to build shareable applications with input components (such as text boxes, sliders, and image uploads) and output displays (such as text, images, or audio). It is widely used for AI model demonstrations, quick prototyping, and user-friendly interfaces for non-technical users. Gradio also supports easy model deployment, allowing developers to share their applications via public links without requiring complex web development skills.<\/p>\n<p>This guide presents JobFitAI, an end-to-end solution that extracts text, generates a detailed analysis, and provides feedback on how well the resume matches a given job description using cutting-edge technologies:<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>DeepSeek-R1:<\/strong> A powerful AI model that extracts key skills, experiences, education, and achievements from resume texts.<\/li>\n<li><strong>DeepInfra: <\/strong>Provides a robust OpenAI-compatible API interface that allows us to interact with AI models like DeepSeek-R1 in a seamless manner.<\/li>\n<li><strong>Gradio: <\/strong>A user-friendly framework that lets you build interactive web interfaces for machine learning applications quickly and easily.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\" id=\"h-project-architecture\">Project Architecture<\/h2>\n<p>The JobFitAI project is built around a modular architecture, where each component plays a specific role in processing resumes. Below is an overview:<\/p>\n<pre class=\"wp-block-code\"><code>JobFitAI\/ \n\u2502\u2500\u2500 src\/\n\u2502   \u251c\u2500\u2500 __pycache__\/  (compiled Python files)\n\u2502   \u251c\u2500\u2500 analyzer.py\n\u2502   \u251c\u2500\u2500 audio_transcriber.py\n\u2502   \u251c\u2500\u2500 feedback_generator.py\n\u2502   \u251c\u2500\u2500 pdf_extractor.py\n\u2502   \u251c\u2500\u2500 resume_pipeline.py\n\u2502\u2500\u2500 .env  (environment variables)\n\u2502\u2500\u2500 .gitignore\n\u2502\u2500\u2500 app.py  (Gradio interface)\n\u2502\u2500\u2500 LICENSE\n\u2502\u2500\u2500 README.md\n\u2502\u2500\u2500 requirements.txt  (dependencies)<\/code><\/pre>\n<h2 class=\"wp-block-heading\" id=\"h-setting-up-the-environment\">Setting Up the Environment<\/h2>\n<p>Before diving into the code, you need to set up your development environment.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-creating-a-virtual-environment-and-installing-dependencies\">Creating a Virtual Environment and Installing Dependencies<\/h3>\n<p>First, create a virtual environment in your project folder to manage your dependencies. Open your terminal and run:<\/p>\n<pre class=\"wp-block-code\"><code>python3 -m venv jobfitai\nsource jobfitai\/bin\/activate  # On macOS\/Linux\n\npython -m venv jobfitai\njobfitai\\Scripts\\activate # On Windows - cmd<\/code><\/pre>\n<p>Next, create a file named requirements.txt and add the following libraries:<\/p>\n<pre class=\"wp-block-code\"><code>requests \nwhisper\nPyPDF2\npython-dotenv\nopenai\ntorch\ntorchvision\ntorchaudio\ngradio<\/code><\/pre>\n<p><strong>Install the dependencies by running:<\/strong><\/p>\n<pre class=\"wp-block-code\"><code>pip install -r requirements.txt<\/code><\/pre>\n<h3 class=\"wp-block-heading\" id=\"h-setting-up-environment-variables\">Setting Up Environment Variables<\/h3>\n<p>The project requires an API token to interact with the DeepInfra API. Create a .env file in your project\u2019s root directory and add your API token:<\/p>\n<pre class=\"wp-block-code\"><code>DEEPINFRA_TOKEN=\"your_deepinfra_api_token_here\"<\/code><\/pre>\n<p>Make sure to replace your_deepinfra_api_token_here with the actual token provided by DeepInfra.<\/p>\n<p>Learn to access the DeepInfra API key; <a href=\"https:\/\/www.analyticsvidhya.com\/blog\/2025\/02\/real-world-applications-of-deepseek-v3\/\" target=\"_blank\" rel=\"noopener\"><i>here<\/i><\/a>.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-project-walkthrough\">Project Walkthrough<\/h3>\n<p>The project is structured into several Python modules. In the following sections, we\u2019ll understand the purpose of each file and its context in the project.<\/p>\n<h4 class=\"wp-block-heading\" id=\"h-src-audio-transcriber-py\">src\/audio_transcriber.py<\/h4>\n<p>Resumes may not always be in text format. In cases where you receive an audio resume, the AudioTranscriber class comes into play. This file uses OpenAI\u2019s Whisper model to transcribe audio files into text. The transcription is then used by the analyzer to extract resume details.<\/p>\n<pre class=\"wp-block-code\"><code>import whisper\n\nclass AudioTranscriber:\n    \"\"\"Transcribe audio files using OpenAI Whisper.\"\"\"\n    def __init__(self, model_size: str = \"base\"):\n        \"\"\"\n        Initializes the Whisper model for transcription.\n        \n        Args:\n            model_size (str): The size of the Whisper model to load. Defaults to \"base\".\n        \"\"\"\n        self.model_size = model_size \n        self.model = whisper.load_model(self.model_size)\n\n    def transcribe(self, audio_path: str) -&gt; str:\n        \"\"\"\n        Transcribes the given audio file and returns the text.\n        \n        Args:\n            audio_path (str): The path to the audio file to be transcribed.\n        \n        Returns:\n            str: The transcribed text.\n        \n        Raises:\n            Exception: If transcription fails.\n        \"\"\"\n        try:\n            result = self.model.transcribe(audio_path)\n            return result[\"text\"]\n        except Exception as e:\n            print(f\"Error transcribing audio: {e}\")\n            return \"\"<\/code><\/pre>\n<p>Most resumes are available in PDF format. The PDFExtractor class is responsible for extracting text from PDF files using the PyPDF2 library. This module loops through all pages of a PDF document, extracts the text, and compiles it into a single string for further analysis.<\/p>\n<pre class=\"wp-block-code\"><code>import PyPDF2\n\nclass PDFExtractor:\n    \"\"\"Extract text from PDF files using PyPDF2.\"\"\"\n\n    def __init__(self):\n        \"\"\"Initialize the PDFExtractor.\"\"\"\n        pass\n\n    def extract_text(self, pdf_path: str) -&gt; str:\n        \"\"\"\n        Extract text content from a given PDF file.\n\n        Args:\n            pdf_path (str): Path to the PDF file.\n\n        Returns:\n            str: Extracted text from the PDF.\n\n        Raises:\n            FileNotFoundError: If the file does not exist.\n            Exception: For other unexpected errors.\n        \"\"\"\n        text = \"\"\n        try:\n            with open(pdf_path, \"rb\") as file:\n                reader = PyPDF2.PdfReader(file)\n                for page in reader.pages:\n                    page_text = page.extract_text()\n                    if page_text:\n                        text += page_text + \"\\n\"\n        except FileNotFoundError:\n            print(f\"Error: The file '{pdf_path}' was not found.\")\n        except Exception as e:\n            print(f\"An error occurred while extracting text: {e}\")\n        \n        return text <\/code><\/pre>\n<h4 class=\"wp-block-heading\" id=\"h-src-resume-pipeline-py\">src\/resume_pipeline.py<\/h4>\n<p>The ResumePipeline module acts as the orchestrator for processing resumes. It integrates both the PDF extractor and the audio transcriber. Based on the file type provided by the user, it directs the resume to the correct processor and returns the extracted text. This modular design allows for easy expansion if additional resume formats need to be supported in the future.<\/p>\n<pre class=\"wp-block-code\"><code>from src.pdf_extractor import PDFExtractor\nfrom src.audio_transcriber import AudioTranscriber\n\nclass ResumePipeline:\n    \"\"\"\n    Process resume files (PDF or audio) and return extracted text.\n    \"\"\"\n\n    def __init__(self):\n        \"\"\"Initialize the ResumePipeline with PDFExtractor and AudioTranscriber.\"\"\"\n        self.pdf_extractor = PDFExtractor()\n        self.audio_transcriber = AudioTranscriber()\n\n    def process_resume(self, file_path: str, file_type: str) -&gt; str:\n        \"\"\"\n        Process a resume file and extract text based on its type.\n\n        Args:\n            file_path (str): Path to the resume file.\n            file_type (str): Type of the file ('pdf' or 'audio').\n\n        Returns:\n            str: Extracted text from the resume.\n\n        Raises:\n            ValueError: If the file type is unsupported.\n            FileNotFoundError: If the specified file does not exist.\n            Exception: For other unexpected errors.\n        \"\"\"\n        try:\n            file_type_lower = file_type.lower()\n            if file_type_lower == \"pdf\":\n                return self.pdf_extractor.extract_text(file_path)\n            elif file_type_lower in [\"audio\", \"wav\", \"mp3\"]:\n                return self.audio_transcriber.transcribe(file_path)\n            else:\n                raise ValueError(\"Unsupported file type. Use 'pdf' or 'audio'.\")\n        except FileNotFoundError:\n            print(f\"Error: The file '{file_path}' was not found.\")\n            return \"\"\n        except ValueError as ve:\n            print(f\"Error: {ve}\")\n            return \"\"\n        except Exception as e:\n            print(f\"An unexpected error occurred: {e}\")\n            return \"\"<\/code><\/pre>\n<h4 class=\"wp-block-heading\" id=\"h-src-analyzer-py\">src\/analyzer.py<\/h4>\n<p>This module is the backbone of the resume analyzer. It initializes the connection to DeepInfra\u2019s API using the DeepSeek-R1 model. The main function in this file is analyze_text, which takes resume text as input and returns analysis summarizing key details from the resume. This file ensures that our resume text is processed by an AI model tailored for resume analysis.<\/p>\n<pre class=\"wp-block-code\"><code>import os\nfrom openai import OpenAI \nfrom dotenv import load_dotenv\n\n# Load environment variables from .env file\nload_dotenv()\n\nclass DeepInfraAnalyzer:\n    \"\"\"\n    Calls DeepSeek-R1 model on DeepInfra using an OpenAI-compatible interface.\n    This class processes resume text and extracts structured information using AI.\n    \"\"\" \n    def __init__(\n        self,\n        api_key: str= os.getenv(\"DEEPINFRA_TOKEN\"),\n        model_name: str = \"deepseek-ai\/DeepSeek-R1\"\n    ):\n        \"\"\"\n        Initializes the DeepInfraAnalyzer with API key and model name.\n\n        :param api_key: API key for authentication \n        :param model_name: The name of the model to use \n        \"\"\"\n        try:\n            self.openai_client = OpenAI(\n                api_key=api_key, \n                base_url=\"https:\/\/api.deepinfra.com\/v1\/openai\",\n            )\n            self.model_name = model_name \n        except Exception as e:\n            raise RuntimeError(f\"Failed to initialize OpenAI client: {e}\")\n    \n\n    def analyze_text(self, text: str) -&gt; str:\n        \"\"\"\n        Processes the given resume text and extracts key information in JSON format.\n        The response will contain structured details about key skills, experience, education, etc.\n\n        :param text: The resume text to analyze\n        :return: JSON string with structured resume analysis\n        \"\"\"\n        prompt = (\n            \"You are an AI job resume matcher assistant. \"\n            \"DO NOT show your chain of thought. \"\n            \"Respond ONLY in English. \"\n            \"Extract the key skills, experiences, education, achievements, etc. from the following resume text. \"\n            \"Then produce the final output as a well-structured JSON with a top-level key called \\\"analysis\\\". \"\n            \"Inside \\\"analysis\\\", you can have subkeys like \\\"key_skills\\\", \\\"experiences\\\", \\\"education\\\", etc. \"\n            \"Return ONLY the final JSON, with no extra commentary.\\n\\n\"\n            f\"Resume Text:\\n{text}\\n\\n\"\n            \"Required Format (example):\\n\"\n            \"```\\n\"\n            \"{\\n\"\n            \"  \\\"analysis\\\": {\\n\"\n            \"    \\\"key_skills\\\": [...],\\n\"\n            \"    \\\"experiences\\\": [...],\\n\"\n            \"    \\\"education\\\": [...],\\n\"\n            \"    \\\"achievements\\\": [...],\\n\"\n            \"    ...\\n\"\n            \"  }\\n\"\n            \"}\\n\"\n            \"```\\n\"\n        ) \n        try:\n            response = self.openai_client.chat.completions.create(\n                model=self.model_name,\n                messages=[{\"role\": \"user\", \"content\": prompt}], \n            )\n            return response.choices[0].message.content\n        except Exception as e:\n            raise RuntimeError(f\"Error processing resume text: {e}\") <\/code><\/pre>\n<h4 class=\"wp-block-heading\" id=\"h-src-feedback-generator-py\">src\/feedback_generator.py<\/h4>\n<p>After extracting details from the resume, the next step is to compare the resume against a specific job description. The FeedbackGenerator module takes the analysis from the resume and provides a match score along with recommendations for improvement. This module is crucial for job seekers aiming to refine their resumes to better align with job descriptions, increasing their chances of passing through ATS systems.<\/p>\n<pre class=\"wp-block-code\"><code>from src.analyzer import DeepInfraAnalyzer \n\nclass FeedbackGenerator:\n    \"\"\"\n    Generates feedback for resume improvement based on a job description \n    using the DeepInfraAnalyzer.\n    \"\"\"\n\n    def __init__(self, analyzer: DeepInfraAnalyzer):\n        \"\"\"\n        Initializes the FeedbackGenerator with an instance of DeepInfraAnalyzer.\n\n        Args:\n            analyzer (DeepInfraAnalyzer): An instance of the DeepInfraAnalyzer class.\n        \"\"\"\n        self.analyzer = analyzer \n\n    def generate_feedback(self, resume_text: str, job_description: str) -&gt; str:\n        \"\"\"\n        Generates feedback on how well a resume aligns with a job description.\n\n        Args:\n            resume_text (str): The extracted text from the resume.\n            job_description (str): The job posting or job description.\n\n        Returns:\n            str: A JSON-formatted response containing:\n                - \"match_score\" (int): A score from 0-100 indicating job match quality.\n                - \"job_alignment\" (dict): Categorization of strong and weak matches.\n                - \"missing_skills\" (list): Skills missing from the resume.\n                - \"recommendations\" (list): Actionable suggestions for improvement.\n\n        Raises:\n            Exception: If an unexpected error occurs during analysis.\n        \"\"\"\n        try:\n            prompt = (\n                \"You are an AI job resume matcher assistant. \"\n                \"DO NOT show your chain of thought. \"\n                \"Respond ONLY in English. \"\n                \"Compare the following resume text with the job description. \"\n                \"Calculate a match score (0-100) for how well the resume matches. \"\n                \"Identify keywords from the job description that are missing in the resume. \"\n                \"Provide bullet-point recommendations to improve the resume for better alignment.\\n\\n\"\n                f\"Resume Text:\\n{resume_text}\\n\\n\"\n                f\"Job Description:\\n{job_description}\\n\\n\"\n                \"Return JSON ONLY in this format:\\n\"\n                \"{\\n\"\n                \"  \\\"job_match\\\": {\\n\"\n                \"    \\\"match_score\\\": <integer>,\\n\"\n                \"    \\\"job_alignment\\\": {\\n\"\n                \"      \\\"strong_match\\\": [...],\\n\"\n                \"      \\\"weak_match\\\": [...]\\n\"\n                \"    },\\n\"\n                \"    \\\"missing_skills\\\": [...],\\n\"\n                \"    \\\"recommendations\\\": [\\n\"\n                \"      \\\"<actionable suggestion=\"\">\\\",\\n\"\n                \"      \\\"<actionable suggestion=\"\">\\\",\\n\"\n                \"      ...\\n\"\n                \"    ]\\n\"\n                \"  }\\n\"\n                \"}\"\n            ) \n            return self.analyzer.analyze_text(prompt)\n\n        except Exception as e:\n            print(f\"Error in generating feedback: {e}\")\n            return \"{}\"  # Returning an empty JSON string in case of failure<\/actionable><\/actionable><\/integer><\/code><\/pre>\n<h4 class=\"wp-block-heading\" id=\"h-app-py\">app.py<\/h4>\n<p>The app.py file is the main entry point of the JobFitAI project. It integrates all the modules described above and builds an interactive web interface using Gradio. Users can upload a resume\/CV file (PDF or audio) and input a job description. The application then processes the resume, runs the analysis, generates feedback, and returns a structured JSON response with both the analysis and recommendations.<\/p>\n<pre class=\"wp-block-code\"><code>import os\nfrom dotenv import load_dotenv\nload_dotenv()\n\nimport gradio as gr \nfrom src.resume_pipeline import ResumePipeline\nfrom src.analyzer import DeepInfraAnalyzer\nfrom src.feedback_generator import FeedbackGenerator\n\n# Pipeline for PDF\/audio\nresume_pipeline = ResumePipeline()\n\n# Initialize the DeepInfra analyzer   \nanalyzer = DeepInfraAnalyzer()\n\n# Feedback generator\nfeedback_generator = FeedbackGenerator(analyzer) \n \ndef analyze_resume(resume_path, job_desc):\n    \"\"\"\n    Gradio callback function to analyze a resume against a job description.\n\n    Args:\n        resume_path (str): Path to the uploaded resume file (PDF or audio).\n        job_desc (str): The job description text for comparison.\n    \n    \"\"\" \n    try:\n        if not resume_path or not job_desc:\n            return {\"error\": \"Please upload a resume and enter a job description.\"}\n\n        # Determine file type from extension\n        lower_name = resume_path.lower()\n        file_type = \"pdf\" if lower_name.endswith(\".pdf\") else \"audio\"\n\n        # Extract text from the resume\n        resume_text = resume_pipeline.process_resume(resume_path, file_type)\n\n        # Analyze extracted text\n        analysis_result = analyzer.analyze_text(resume_text)\n\n        # Generate feedback and recommendations\n        feedback = feedback_generator.generate_feedback(resume_text, job_desc)\n\n        # Return structured response\n        return {\n            \"analysis\": analysis_result,\n            \"recommendations\": feedback\n        }\n    except ValueError as e:\n        return {\"error\": f\"Unsupported file type or processing error: {str(e)}\"}\n    except Exception as e:\n        return {\"error\": f\"An unexpected error occurred: {str(e)}\"}\n    \n# Define Gradio interface\ndemo = gr.Interface(\n    fn=analyze_resume,\n    inputs=[\n        gr.File(label=\"Resume (PDF\/Audio)\", type=\"filepath\"),\n        gr.Textbox(lines=5, label=\"Job Description\"),\n    ],\n    outputs=\"json\",\n    title=\"JobFitAI: AI Resume Analyzer\",\n    description=\"\"\"\nUpload your resume\/cv (PDF or audio) and paste the job description to get a match score,\nmissing keywords, and actionable recommendations.\"\"\",\n)\n\nif __name__ == \"__main__\": \n    demo.launch(server_name=\"0.0.0.0\", server_port=8000) <\/code><\/pre>\n<h2 class=\"wp-block-heading\" id=\"h-running-the-application-with-gradio\">Running the Application with Gradio<\/h2>\n<p>After setting up your environment and reviewing all code components, you\u2019re ready to run the application.<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Start the Application: <\/strong>In your terminal, navigate to your project directory and execute the below code<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>python app.py\n<\/code><\/pre>\n<p>\n<iframe src=\"https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2025\/03\/JobfitAI-demo.mp4\" loading=\"lazy\" title=\"YouTube video\" allowfullscreen=\"\"><\/iframe>\n<\/p>\n<ul class=\"wp-block-list\">\n<li>This command will launch the Gradio interface locally. Open the provided URL in your browser to see the interactive resume analyzer.<\/li>\n<li>Test the JobFitAI:\n<ul class=\"wp-block-list\">\n<li>Upload a Resume\/CV: Select a PDF file or an audio file containing a recorded resume.<\/li>\n<li>Enter a Job Description: Paste or type in a job description<\/li>\n<li>Review the Output: The system will display a JSON response that includes both a detailed analysis of the resume, matching score, missing keywords and feedback with suggestions for improvement.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>You can find all the code files in Github repo \u2013 <a href=\"https:\/\/github.com\/kponna\/JobFitAI\" target=\"_blank\" rel=\"nofollow noopener\">here<\/a>.<\/p>\n<h2 class=\"wp-block-heading\" id=\"h-use-cases-and-practical-applications\">Use Cases and Practical Applications<\/h2>\n<p>The JobFitAI resume analyzer can be applied in various real-world scenarios:<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-improving-resume-quality\">Improving Resume Quality<\/h3>\n<ul class=\"wp-block-list\">\n<li><strong>Self-Assessment:<\/strong> Candidates can use the tool to self-assess their resumes before applying. By understanding the match score and the areas that need improvement, they can better tailor their resumes for specific roles.<\/li>\n<li><strong>Feedback Loop: <\/strong>The structured JSON feedback generated by the tool can be integrated into career counseling platforms, providing personalized resume improvement recommendations.<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\" id=\"h-educational-and-training-applications\">Educational and Training Applications<\/h3>\n<ul class=\"wp-block-list\">\n<li><strong>Career Workshops:<\/strong> Educational institutions and career coaching platforms can incorporate JobFitAI into their curriculum. It serves as a practical demonstration of how AI can be used to enhance career readiness.<\/li>\n<li><strong>Coding and AI Projects:<\/strong> Aspiring data scientists and developers can learn about integrating multiple AI services (such as transcription, PDF extraction, and natural language processing) into a cohesive project.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\" id=\"h-troubleshooting-and-extensions\">Troubleshooting and Extensions<\/h2>\n<p>Let us now explore troubleshooting and extensions below-<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-common-issues-and-solutions\">Common Issues and Solutions<\/h3>\n<ul class=\"wp-block-list\">\n<li><strong>API Token Issues:<\/strong> If the DeepInfra API token is missing or incorrect, the analyzer module will fail. Always verify that your .env file contains the correct token and that the token is active.<\/li>\n<li><strong>Unsupported File Types: <\/strong>The application currently supports only PDF and audio formats. If you attempt to upload another file type (such as DOCX), the system will raise an error. Future extensions can include support for additional formats.<\/li>\n<li><strong>Transcription Delays:<\/strong> Audio transcription can sometimes take longer, especially for larger files. Consider using a higher-specification machine or a cloud-based solution if you plan on processing many audio resumes.<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\" id=\"h-ideas-for-further-development\">Ideas for Further Development<\/h3>\n<ul class=\"wp-block-list\">\n<li><b>Support More File Formats: <\/b>Extend the resume pipeline to support additional file types like DOCX or plain text.<\/li>\n<li><b>Enhanced Feedback Mechanism: <\/b>Integrate more sophisticated natural language processing models to provide richer, more nuanced feedback beyond the basic match score.<\/li>\n<li><b>User Authentication: <\/b>Implement user authentication to allow job seekers to save their analysis and track improvements over time.<\/li>\n<li><b>Dashboard Integration: <\/b>Build a dashboard where recruiters can manage and compare resume analyses across multiple candidates.<\/li>\n<li><b>Performance Optimization: <\/b>Optimize the audio transcription and PDF extraction processes for faster analysis on large-scale datasets.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n<p>The JobFitAI resume analyzer is a robust, multi-functional tool that leverages state-of-the-art AI models to bridge the gap between resumes and job descriptions. By integrating DeepSeek-R1 via DeepInfra, along with transcription and PDF extraction capabilities, you now have a complete solution to automatically analyze resumes and generate feedback for improved job alignment.<\/p>\n<p>This guide provided a comprehensive walk-through\u2014from setting up the environment to understanding each module\u2019s role and finally running the interactive Gradio interface. Whether you\u2019re a developer looking to expand your portfolio, an HR professional wanting to streamline candidate screening, or a job seeker aiming to enhance your resume, the JobFitAI project offers practical insights and an excellent starting point for further exploration.<\/p>\n<p>Embrace the power of AI, experiment with new features, and continue refining the project to suit your needs. The future of job applications is here, and it\u2019s smarter than ever!<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-key-takeaways\">Key Takeaways<\/h3>\n<ul class=\"wp-block-list\">\n<li>JobFitAI leverages DeepSeek-R1 and DeepInfra to extract skills, experiences, and achievements from resumes for better job matching.<\/li>\n<li>The system supports both PDF and audio resumes, using PyPDF2 for text extraction and Whisper for audio transcription.<\/li>\n<li>Gradio enables a seamless, user-friendly web interface for real-time resume analysis and feedback.<\/li>\n<li>The project uses a modular architecture and environment setup with API keys for smooth integration and scalability.<\/li>\n<li>Developers can fine-tune DeepSeek-R1, troubleshoot issues, and expand functionality for more robust AI-driven resume screening.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\" id=\"h-frequently-asked-questions\">Frequently Asked Questions<\/h2>\n<div class=\"schema-faq wp-block-yoast-faq-block\">\n<div class=\"schema-faq-section\" id=\"faq-question-1741783881783\"><strong class=\"schema-faq-question\">Q1: What types of resumes does JobFitAI support?<\/strong> <\/p>\n<p class=\"schema-faq-answer\">A: The current version supports resumes in PDF and audio formats. Future updates may include support for additional formats such as DOCX or plain text.<\/p>\n<\/p><\/div>\n<div class=\"schema-faq-section\" id=\"faq-question-1741783898151\"><strong class=\"schema-faq-question\">Q2: Is DeepInfra API free?<\/strong> <\/p>\n<p class=\"schema-faq-answer\">A:\u00a0No, accessing the DeepSeek-R1 model through the DeepInfra API requires a paid plan. For detailed pricing information, please visit <a href=\"https:\/\/deepinfra.com\/deepseek-ai\/DeepSeek-R1\/api\" target=\"_blank\" rel=\"nofollow noopener\">DeepInfra\u2019s official page<\/a>.\u00a0\u00a0<\/p>\n<\/p><\/div>\n<div class=\"schema-faq-section\" id=\"faq-question-1741783911939\"><strong class=\"schema-faq-question\">Q3: Can I customize the feedback provided by the analyzer?<\/strong> <\/p>\n<p class=\"schema-faq-answer\">A: Yes! You can adjust the prompt or integrate additional models to tailor the feedback to your specific requirements.<\/p>\n<\/p><\/div>\n<div class=\"schema-faq-section\" id=\"faq-question-1741783922405\"><strong class=\"schema-faq-question\">Q4: What should I do if I encounter issues with audio transcription?<\/strong> <\/p>\n<p class=\"schema-faq-answer\">A: Audio transcription may sometimes be delayed, especially for larger files. Verify that your environment meets the necessary computational requirements, and consider optimizing the transcription process or using cloud-based resources if needed.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p><strong>The media shown in this article is not owned by Analytics Vidhya and is used at the Author\u2019s discretion.<\/strong><\/p>\n<div class=\"border-top py-3 author-info my-4\">\n<div class=\"author-card d-flex align-items-center\">\n<div class=\"flex-shrink-0 overflow-hidden\">\n                                    <a href=\"https:\/\/www.analyticsvidhya.com\/blog\/author\/krishnaveni140696\/\" class=\"text-decoration-none active-avatar\"><br \/>\n                                                                       <img decoding=\"async\" src=\"https:\/\/av-eks-lekhak.s3.amazonaws.com\/media\/lekhak-profile-images\/converted_image_uFajTEe.webp\" width=\"48\" height=\"48\" alt=\"Krishnaveni Ponna\" loading=\"lazy\" class=\"rounded-circle\"\/><\/p>\n<p>                                <\/a>\n                                <\/div>\n<\/p><\/div>\n<p>Hello! I&#8217;m a passionate AI and Machine Learning enthusiast currently exploring the exciting realms of Deep Learning, MLOps, and Generative AI. I enjoy diving into new projects and uncovering innovative techniques that push the boundaries of technology. I&#8217;ll be sharing guides, tutorials, and project insights based on my own experiences, so we can learn and grow together. Join me on this journey as we explore, experiment, and build amazing solutions in the world of AI and beyond!<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p><h4 class=\"fs-24 text-dark\">Login to continue reading and enjoy expert-curated content.<\/h4>\n<p>                        <button class=\"btn btn-primary mx-auto d-table\" data-bs-toggle=\"modal\" data-bs-target=\"#loginModal\" id=\"readMoreBtn\">Keep Reading for Free<\/button>\n                    <\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>In today\u2019s competitive job market, making your resume stand out is crucial. JobFitAI is an innovative solution designed to help both job seekers and recruiters by analyzing resumes and offering actionable feedback. Traditional keyword-based filtering methods can overlook crucial nuances in a candidate\u2019s profile. To overcome these challenges, AI-powered systems can be leveraged to analyze [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":141503,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12033],"tags":[60057,5815,10921,60056,5401,16336],"dealstore":[],"offerexpiration":[],"class_list":["post-141502","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analytics","tag-analyzer","tag-blogathon","tag-comprehensive","tag-jobfitai","tag-project","tag-resume"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JobFitAI: Comprehensive Resume Analyzer Project - Som2ny Network<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fivemor.com\/?p=141502\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JobFitAI: Comprehensive Resume Analyzer Project - Som2ny Network\" \/>\n<meta property=\"og:description\" content=\"In today\u2019s competitive job market, making your resume stand out is crucial. JobFitAI is an innovative solution designed to help both job seekers and recruiters by analyzing resumes and offering actionable feedback. Traditional keyword-based filtering methods can overlook crucial nuances in a candidate\u2019s profile. To overcome these challenges, AI-powered systems can be leveraged to analyze [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fivemor.com\/?p=141502\" \/>\n<meta property=\"og:site_name\" content=\"Som2ny Network\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-18T11:15:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/JobFitAI-Your-Comprehensive-Resume-Analyzer-Project-.webp.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"872\" \/>\n\t<meta property=\"og:image:height\" content=\"473\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fivemor.com\/?p=141502#article\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/?p=141502\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\"},\"headline\":\"JobFitAI: Comprehensive Resume Analyzer Project\",\"datePublished\":\"2025-03-18T11:15:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=141502\"},\"wordCount\":1902,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=141502#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/JobFitAI-Your-Comprehensive-Resume-Analyzer-Project-.webp.webp\",\"keywords\":[\"Analyzer\",\"Blogathon\",\"Comprehensive\",\"JobFitAI\",\"Project\",\"resume\"],\"articleSection\":[\"Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fivemor.com\/?p=141502#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fivemor.com\/?p=141502\",\"url\":\"https:\/\/fivemor.com\/?p=141502\",\"name\":\"JobFitAI: Comprehensive Resume Analyzer Project - Som2ny Network\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=141502#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=141502#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/JobFitAI-Your-Comprehensive-Resume-Analyzer-Project-.webp.webp\",\"datePublished\":\"2025-03-18T11:15:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fivemor.com\/?p=141502#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fivemor.com\/?p=141502\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/?p=141502#primaryimage\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/JobFitAI-Your-Comprehensive-Resume-Analyzer-Project-.webp.webp\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/JobFitAI-Your-Comprehensive-Resume-Analyzer-Project-.webp.webp\",\"width\":872,\"height\":473},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fivemor.com\/?p=141502#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fivemor.com\/?bp_activities=1\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JobFitAI: Comprehensive Resume Analyzer Project\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fivemor.com\/#website\",\"url\":\"https:\/\/fivemor.com\/\",\"name\":\"Som2ny Network\",\"description\":\"Daily Deals\",\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fivemor.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/fivemor.com\/#organization\",\"name\":\"Som2ny Network\",\"url\":\"https:\/\/fivemor.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"width\":300,\"height\":86,\"caption\":\"Som2ny Network\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/fivemor.com\"],\"url\":\"https:\/\/fivemor.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JobFitAI: Comprehensive Resume Analyzer Project - Som2ny Network","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fivemor.com\/?p=141502","og_locale":"en_US","og_type":"article","og_title":"JobFitAI: Comprehensive Resume Analyzer Project - Som2ny Network","og_description":"In today\u2019s competitive job market, making your resume stand out is crucial. JobFitAI is an innovative solution designed to help both job seekers and recruiters by analyzing resumes and offering actionable feedback. Traditional keyword-based filtering methods can overlook crucial nuances in a candidate\u2019s profile. To overcome these challenges, AI-powered systems can be leveraged to analyze [&hellip;]","og_url":"https:\/\/fivemor.com\/?p=141502","og_site_name":"Som2ny Network","article_published_time":"2025-03-18T11:15:12+00:00","og_image":[{"width":872,"height":473,"url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/JobFitAI-Your-Comprehensive-Resume-Analyzer-Project-.webp.webp","type":"image\/webp"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fivemor.com\/?p=141502#article","isPartOf":{"@id":"https:\/\/fivemor.com\/?p=141502"},"author":{"name":"admin","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371"},"headline":"JobFitAI: Comprehensive Resume Analyzer Project","datePublished":"2025-03-18T11:15:12+00:00","mainEntityOfPage":{"@id":"https:\/\/fivemor.com\/?p=141502"},"wordCount":1902,"commentCount":0,"publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"image":{"@id":"https:\/\/fivemor.com\/?p=141502#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/JobFitAI-Your-Comprehensive-Resume-Analyzer-Project-.webp.webp","keywords":["Analyzer","Blogathon","Comprehensive","JobFitAI","Project","resume"],"articleSection":["Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fivemor.com\/?p=141502#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fivemor.com\/?p=141502","url":"https:\/\/fivemor.com\/?p=141502","name":"JobFitAI: Comprehensive Resume Analyzer Project - Som2ny Network","isPartOf":{"@id":"https:\/\/fivemor.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fivemor.com\/?p=141502#primaryimage"},"image":{"@id":"https:\/\/fivemor.com\/?p=141502#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/JobFitAI-Your-Comprehensive-Resume-Analyzer-Project-.webp.webp","datePublished":"2025-03-18T11:15:12+00:00","breadcrumb":{"@id":"https:\/\/fivemor.com\/?p=141502#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fivemor.com\/?p=141502"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/?p=141502#primaryimage","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/JobFitAI-Your-Comprehensive-Resume-Analyzer-Project-.webp.webp","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/JobFitAI-Your-Comprehensive-Resume-Analyzer-Project-.webp.webp","width":872,"height":473},{"@type":"BreadcrumbList","@id":"https:\/\/fivemor.com\/?p=141502#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fivemor.com\/?bp_activities=1"},{"@type":"ListItem","position":2,"name":"JobFitAI: Comprehensive Resume Analyzer Project"}]},{"@type":"WebSite","@id":"https:\/\/fivemor.com\/#website","url":"https:\/\/fivemor.com\/","name":"Som2ny Network","description":"Daily Deals","publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fivemor.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fivemor.com\/#organization","name":"Som2ny Network","url":"https:\/\/fivemor.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","width":300,"height":86,"caption":"Som2ny Network"},"image":{"@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","caption":"admin"},"sameAs":["https:\/\/fivemor.com"],"url":"https:\/\/fivemor.com\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/141502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=141502"}],"version-history":[{"count":0,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/141502\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/media\/141503"}],"wp:attachment":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=141502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=141502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=141502"},{"taxonomy":"dealstore","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdealstore&post=141502"},{"taxonomy":"offerexpiration","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fofferexpiration&post=141502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}