Spaces:
Runtime error
Runtime error
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Resume Review Output</title> | |
| <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet"> | |
| <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet"> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"> <!-- Font Awesome CDN --> | |
| <style> | |
| body { | |
| background-image: url('https://www.example.com/light-bg.jpg'); | |
| background-size: cover; | |
| background-color: #f4f4f9; | |
| color: #2c3e50; | |
| font-family: 'Roboto', sans-serif; | |
| overflow-x: hidden; | |
| } | |
| .container { | |
| background: rgba(255, 255, 255, 0.95); | |
| border-radius: 15px; | |
| box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); | |
| padding: 20px; | |
| margin-top: 50px; | |
| } | |
| .card { | |
| border: none; | |
| background: linear-gradient(135deg, #ecf0f1, #ffffff); | |
| border-radius: 15px; | |
| transition: transform 0.3s, box-shadow 0.3s; | |
| } | |
| .card:hover { | |
| transform: translateY(-5px); | |
| box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15); | |
| } | |
| .info-section .info-item { | |
| background: rgba(236, 240, 241, 0.8); | |
| padding: 15px; | |
| margin-bottom: 10px; | |
| border-radius: 10px; | |
| transition: background-color 0.3s, transform 0.3s; | |
| } | |
| .info-section .info-item:hover { | |
| background: rgba(236, 240, 241, 0.9); | |
| transform: translateY(-3px); | |
| } | |
| .info-title { | |
| font-size: 1.2rem; | |
| font-weight: 500; | |
| color: #2980b9; | |
| } | |
| .info-content { | |
| font-size: 1rem; | |
| font-weight: 400; | |
| color: #34495e; | |
| } | |
| .btn-toggle { | |
| background-color: #e74c3c; | |
| border: none; | |
| color: #ffffff; | |
| cursor: pointer; | |
| font-size: 1rem; | |
| padding: 10px 20px; | |
| border-radius: 5px; | |
| display: inline-flex; | |
| align-items: center; | |
| transition: background-color 0.3s, transform 0.3s; | |
| } | |
| .btn-toggle::after { | |
| content: '\25BC'; | |
| margin-left: 10px; | |
| transition: transform 0.3s; | |
| } | |
| .btn-toggle[aria-expanded="true"]::after { | |
| transform: rotate(180deg); | |
| } | |
| .btn-toggle:hover { | |
| background-color: #c0392b; | |
| transform: scale(1.05); | |
| } | |
| h1 { | |
| font-size: 2.5rem; | |
| font-weight: 700; | |
| text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); | |
| color: #2c3e50; | |
| } | |
| a { | |
| color: #3498db; | |
| } | |
| a:hover { | |
| text-decoration: underline; | |
| color: #2980b9; | |
| } | |
| .collapse { | |
| background-color: rgba(255, 255, 255, 0.9); | |
| padding: 10px; | |
| border-radius: 10px; | |
| } | |
| .section-header { | |
| display: flex; | |
| align-items: center; | |
| margin-bottom: 10px; | |
| } | |
| .section-header i { | |
| margin-right: 10px; | |
| } | |
| .tips-box { | |
| opacity: 0; | |
| visibility: hidden; | |
| transition: opacity 0.4s ease, visibility 0.4s ease; | |
| background: #f8f9fa; | |
| padding: 15px; | |
| border-radius: 10px; | |
| box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); | |
| max-width: 300px; | |
| } | |
| .hover-container:hover .tips-box { | |
| opacity: 1; | |
| visibility: visible; | |
| } | |
| .no-data { | |
| color: #e74c3c; | |
| font-style: italic; | |
| font-size: 1rem; | |
| } | |
| /* Circular Progress Bar */ | |
| .circle-container { | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| margin-top: 20px; | |
| } | |
| .progress-circle { | |
| width: 150px; | |
| height: 150px; | |
| background: #e6e6e6; | |
| border-radius: 50%; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .circle { | |
| width: 100%; | |
| height: 100%; | |
| border-radius: 50%; | |
| background: #3b6ff3; | |
| clip-path: circle(50% at 50% 50%); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .mask, .fill { | |
| width: 100%; | |
| height: 100%; | |
| position: absolute; | |
| border-radius: 50%; | |
| } | |
| .mask.full { | |
| clip: rect(0px, 150px, 150px, 75px); | |
| background-color: #3b6ff3; | |
| transform: rotate(180deg); | |
| } | |
| .mask.half { | |
| clip-path: polygon(50% 50%, 0% 100%, 0% 0%); | |
| transform: rotate(calc(3.6deg * 75)); /* 75 is the percentage */ | |
| transform-origin: center left; | |
| } | |
| .inside-circle { | |
| width: 100%; | |
| height: 100%; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| font-size: 24px; | |
| font-weight: bold; | |
| color: #3b6ff3; | |
| background: white; | |
| border-radius: 50%; | |
| width: 110px; | |
| height: 110px; | |
| margin: auto; | |
| top: 20px; | |
| left: 20px; | |
| } | |
| /* Right Sidebar Styling */ | |
| #rightSidebar { | |
| position: fixed; | |
| top: 70px; /* below navbar or header if any, adjust as needed */ | |
| right: 20px; | |
| width: 320px; | |
| max-height: 80vh; | |
| background: rgba(255, 255, 255, 0.95); | |
| border-radius: 15px; | |
| box-shadow: 0 4px 15px rgba(0,0,0,0.1); | |
| padding: 20px; | |
| overflow-y: auto; | |
| z-index: 1050; | |
| font-family: 'Roboto', sans-serif; | |
| color: #2c3e50; | |
| } | |
| #rightSidebar h4 { | |
| font-weight: 700; | |
| color: #2980b9; | |
| margin-bottom: 10px; | |
| border-bottom: 2px solid #2980b9; | |
| padding-bottom: 5px; | |
| } | |
| #rightSidebar .section { | |
| margin-bottom: 20px; | |
| } | |
| #rightSidebar .section ul { | |
| padding-left: 20px; | |
| margin-top: 10px; | |
| } | |
| #rightSidebar .no-data { | |
| font-style: italic; | |
| color: #e74c3c; | |
| font-size: 0.9rem; | |
| } | |
| /* Collapse toggles for sidebar */ | |
| #rightSidebar .btn-toggle { | |
| background-color: #2980b9; | |
| color: white; | |
| font-size: 0.95rem; | |
| padding: 5px 10px; | |
| border-radius: 5px; | |
| border: none; | |
| width: 100%; | |
| text-align: left; | |
| margin-top: 5px; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| cursor: pointer; | |
| user-select: none; | |
| } | |
| #rightSidebar .btn-toggle:hover { | |
| background-color: #216b9c; | |
| } | |
| #rightSidebar .btn-toggle i { | |
| transition: transform 0.3s ease; | |
| } | |
| #rightSidebar .btn-toggle[aria-expanded="true"] i { | |
| transform: rotate(180deg); | |
| } | |
| .skill-tag { | |
| display: inline-block; | |
| background-color: #e0f7fa; | |
| color: #00796b; | |
| padding: 4px 8px; | |
| border-radius: 12px; | |
| font-size: 14px; | |
| border: 1px solid #b2ebf2; | |
| margin: 3px; | |
| } | |
| .skills-container { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 6px; | |
| } | |
| .gemini-suggestion-box { | |
| margin-top: 30px; | |
| padding: 20px; | |
| border: 1px solid #ccc; | |
| border-radius: 12px; | |
| background-color: #f9f9f9; | |
| max-width: 600px; | |
| } | |
| .gemini-suggestion-box textarea { | |
| width: 100%; | |
| height: 120px; | |
| padding: 10px; | |
| border-radius: 8px; | |
| font-size: 14px; | |
| resize: vertical; | |
| margin-bottom: 10px; | |
| } | |
| .gemini-suggestion-box button { | |
| background-color: #5a2a91; | |
| color: white; | |
| border: none; | |
| padding: 10px 16px; | |
| border-radius: 6px; | |
| cursor: pointer; | |
| } | |
| .gemini-suggestion-box pre { | |
| margin-top: 15px; | |
| background-color: #efefef; | |
| padding: 12px; | |
| border-radius: 8px; | |
| white-space: pre-wrap; | |
| } | |
| .score-badge { | |
| background: #3498db; | |
| color: white; | |
| padding: 3px 8px; | |
| border-radius: 12px; | |
| font-size: 0.85rem; | |
| margin-left: 10px; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="container"> | |
| <div class="card shadow-lg p-4"> | |
| <h3 class="text-center mb-4">Resume Review Output</h3> | |
| <div class="content"> | |
| <div class="info-section"> | |
| <!-- Hover Section --> | |
| <div class="info-item hover-container"> | |
| <!-- Resume Score --> | |
| <div> | |
| <div class="section-header d-flex align-items-center mb-2"> | |
| <i class="fas fa-star me-2"></i> | |
| <div class="info-title">Resume Score:</div> | |
| </div> | |
| <div class="info-content"> | |
| <!-- {{ parsed_resume['imarticus_score'] or 'No score available.' }} --> | |
| </div> | |
| </div> | |
| <div class="info-content"> | |
| {% set max_score = 52 %} | |
| {% set score = parsed_resume['imarticus_score'] %} | |
| {% set percentage = (score / max_score) * 100 %} | |
| {% if percentage == 0 %} | |
| {% set rating = 'The resume is bad' %} | |
| {% elif percentage <= 15 %} | |
| {% set rating = 'Resume needs significant improvement' %} | |
| {% elif percentage <= 35 %} | |
| {% set rating = 'Resume needs improvement' %} | |
| {% elif percentage <= 55 %} | |
| {% set rating = 'Resume is average' %} | |
| {% elif percentage <= 75 %} | |
| {% set rating = 'Resume is good' %} | |
| {% elif percentage <= 90 %} | |
| {% set rating = 'Resume is very good' %} | |
| {% else %} | |
| {% set rating = 'Resume is excellent' %} | |
| {% endif %} | |
| <!--<p>Resume Score: <strong>{{ percentage|round(2) }}% </strong></p>--> | |
| <!-- Circular Progress Bar Section --> | |
| <!-- | |
| <div class="progress-circle"> | |
| <div class="mask full"> | |
| <div class="fill" style="transform: rotate(180deg);"></div> | |
| </div> | |
| <div class="mask half"> | |
| <div class="fill" style="transform: rotate(90deg);"></div> | |
| <div class="inside-circle">{{ percentage|round(2) }}%</div> | |
| </div> | |
| --> | |
| <p>Evaluation: <strong>{{ rating }}</strong></p> | |
| </div> | |
| <!-- | |
| <div class="tips-box"> | |
| <p class="fw-bold mb-2"><i class="fas fa-lightbulb me-2"></i>Tips & Hints</p> | |
| <ul class="mb-0"> | |
| <li>Incorporate job-specific keywords to match your desired role.</li> | |
| <li>Quantify your achievements, such as "Reduced costs by 15%."</li> | |
| <li>Keep formatting consistent, including fonts and alignment.</li> | |
| <li>Add a concise professional summary highlighting key skills.</li> | |
| <li>Proofread thoroughly to eliminate grammar or spelling mistakes.</li> | |
| </ul> | |
| </div> | |
| --> | |
| </div> | |
| <!-- Basic Information Section --> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fas fa-user"></i> | |
| <div class="info-title">Basic Information Section:</div> | |
| </div> | |
| <div class="info-content">{{ parsed_resume['basic_information_section'] }}</div> | |
| </div> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fas fa-id-badge"></i> | |
| <div class="info-title">Name:</div> | |
| <span class="score-badge">{{ parsed_resume['name_score'] }} / 3</span> | |
| </div> | |
| <div class="info-content">{{ parsed_resume['name'] }}</div> | |
| </div> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fas fa-phone"></i> | |
| <div class="info-title">Contact Number:</div> | |
| <span class="score-badge">{{ parsed_resume['contact_score'] }} / 3</span> | |
| </div> | |
| <div class="info-content">{{ parsed_resume['contact_number'] }}</div> | |
| </div> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fas fa-envelope"></i> | |
| <div class="info-title">Email:</div> | |
| <span class="score-badge">{{ parsed_resume['email_score'] }} / 3</span> | |
| </div> | |
| <div class="info-content">{{ parsed_resume['email'] }}</div> | |
| </div> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fab fa-linkedin"></i> | |
| <div class="info-title">LinkedIn:</div> | |
| <span class="score-badge">{{ parsed_resume['linkedin_url_score'] }} / 3</span> | |
| </div> | |
| <div class="info-content"><a href="{{ parsed_resume['linkedin_urls'] }}">{{ parsed_resume['linkedin_urls'] }}</a></div> | |
| </div> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fab fa-github"></i> | |
| <div class="info-title">GitHub:</div> | |
| <span class="score-badge">{{ parsed_resume['github_url_score'] }} / 3</span> | |
| </div> | |
| <div class="info-content"><a href="{{ parsed_resume['github_urls'] }}">{{ parsed_resume['github_urls'] }}</a></div> | |
| </div> | |
| <!-- Extra URLs Section --> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fas fa-link"></i> | |
| <div class="info-title">Additional URLs:</div> | |
| </div> | |
| <div class="info-content"> | |
| <ul> | |
| {% if parsed_resume['extra_urls'] %} | |
| {% for platform, urls in parsed_resume['extra_urls'].items() %} | |
| {% for url in urls %} | |
| <li><strong>{{ platform|capitalize }}:</strong> <a href="{{ url }}" target="_blank">{{ url }}</a></li> | |
| {% endfor %} | |
| {% endfor %} | |
| {% else %} | |
| <p class="no-data">No additional URLs found.</p> | |
| {% endif %} | |
| </ul> | |
| </div> | |
| </div> | |
| <p><strong>Found Skills:</strong></p> | |
| <div class="skills-container" id="found-keywords"> | |
| <ul> | |
| {% if parsed_resume['found_keywords'] %} | |
| {% for keyword in parsed_resume['found_keywords'] %} | |
| <span class="skill-tag">{{ keyword }}</span> | |
| {% endfor %} | |
| {% else %} | |
| <span style="color: #888;">No skills found.</span> | |
| {% endif %} | |
| </ul> | |
| </div> | |
| <!-- | |
| <p><strong>Missing Skills:</strong> | |
| <button class="btn-toggle" data-toggle="collapse" data-target="#missing-skills" aria-expanded="false" aria-controls="missing-skills"> | |
| <i class="fas fa-minus-circle"></i> Click here | |
| </button> | |
| </p> | |
| <div class="collapse" id="missing-skills"> | |
| <ul> | |
| {% if parsed_resume['missing_skills'] %} | |
| {% for skill in parsed_resume['missing_skills'] %} | |
| <li>{{ skill }}</li> | |
| {% endfor %} | |
| {% else %} | |
| <p class="no-data">No missing skills found.</p> | |
| {% endif %} | |
| </ul> | |
| </div> | |
| <p><strong>Missing Sections:</strong> | |
| <button class="btn-toggle" data-toggle="collapse" data-target="#missing-sections" aria-expanded="false" aria-controls="missing-sections"> | |
| <i class="fas fa-minus-circle"></i> Click here | |
| </button> | |
| </p> | |
| <div class="collapse" id="missing-sections"> | |
| <ul> | |
| {% if parsed_resume['missing_sections'] %} | |
| {% for section in parsed_resume['missing_sections'] %} | |
| <li>{{ section }}</li> | |
| {% endfor %} | |
| {% else %} | |
| <p class="no-data">No missing sections found.</p> | |
| {% endif %} | |
| </ul> | |
| </div> | |
| --> | |
| <p><strong>Grammar Issues in Career Objective and Profile Summary:</strong> | |
| </p> | |
| <div class="skills-container" id="grammar-issues"> | |
| <ul> | |
| {% if parsed_resume['grammar_issues'] %} | |
| {% for issue in parsed_resume['grammar_issues'] %} | |
| <li>{{ issue }}</li> | |
| {% endfor %} | |
| {% else %} | |
| <span style="color: #888;">No grammar issues found.</span> | |
| {% endif %} | |
| </ul> | |
| </div> | |
| <p><strong>Spelling Errors:</strong> | |
| </p> | |
| <div class="skills-container" id="spelling-errors"> | |
| <ul> | |
| {% if parsed_resume['spelling_errors'] %} | |
| {% for error in parsed_resume['spelling_errors'] %} | |
| <li>{{ error }}</li> | |
| {% endfor %} | |
| {% else %} | |
| <span style="color: #888;">No spelling errors found.</span> | |
| {% endif %} | |
| </ul> | |
| </div> | |
| <!-- Experience and Other Sections --> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fas fa-sort-amount-up"></i> | |
| <div class="info-title">Experience Order Suggestion:</div> | |
| </div> | |
| <div class="info-content">{{ parsed_resume['experience_order_suggestion'] or 'No suggestion available.' }}</div> | |
| </div> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fas fa-briefcase"></i> | |
| <div class="info-title">Work Experience Check:</div> | |
| </div> | |
| <div class="info-content">{{ parsed_resume['work_experience_check'] or 'No issues found.' }}</div> | |
| </div> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fas fa-clock"></i> | |
| <div class="info-title">Project Length Suggestion:</div> | |
| </div> | |
| <div class="info-content">{{ parsed_resume['project_length_suggestion'] or 'No suggestion available.' }}</div> | |
| </div> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fas fa-project-diagram"></i> | |
| <div class="info-title">Common Projects:</div> | |
| </div> | |
| <div class="info-content">{{ parsed_resume['common_projects'] or 'No projects found.' }}</div> | |
| </div> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fas fa-certificate"></i> | |
| <div class="info-title">Certifications & Academic Endeavours:</div> | |
| </div> | |
| <div class="info-content"> | |
| {% if parsed_resume['certifications']['found'] %} | |
| <span style="color: green;">✔ {{ parsed_resume['certifications']['message'] }}</span> | |
| <br> | |
| <strong>Extracted Text:</strong> {{ parsed_resume['certifications']['text'] }} | |
| {% else %} | |
| <span style="color: red;">✖ No Imarticus certification found.</span> | |
| {% endif %} | |
| </div> | |
| </div> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fas fa-graduation-cap"></i> | |
| <div class="info-title">Education Order Suggestion:</div> | |
| </div> | |
| <div class="info-content">{{ parsed_resume['education_order_suggestion'] or 'No suggestion available.' }}</div> | |
| </div> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fas fa-link"></i> | |
| <div class="info-title">Recommended Blogs:</div> | |
| </div> | |
| <div class="info-content"> | |
| {% if parsed_resume['recommended_blogs'] %} | |
| <ul> | |
| {% for blog in parsed_resume['recommended_blogs'] %} | |
| <li><a href="{{ blog }}" target="_blank">{{ blog }}</a></li> | |
| {% endfor %} | |
| </ul> | |
| {% else %} | |
| No recommended blogs found. | |
| {% endif %} | |
| </div> | |
| </div> | |
| <div class="info-item"> | |
| <div class="section-header"> | |
| <i class="fas fa-youtube"></i> | |
| <div class="info-title">Recommended YouTube Links:</div> | |
| </div> | |
| <div class="info-content"> | |
| {% if parsed_resume['recommended_youtube_links'] %} | |
| <ul> | |
| {% for youtube_link in parsed_resume['recommended_youtube_links'] %} | |
| <li><a href="{{ youtube_link }}" target="_blank">{{ youtube_link }}</a></li> | |
| {% endfor %} | |
| </ul> | |
| {% else %} | |
| No recommended YouTube links found. | |
| {% endif %} | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div id="rightSidebar" aria-label="Resume Suggestions Sidebar" role="complementary"> | |
| <p>Resume Score: <strong>{{ percentage|round(2) }}% </strong></p> | |
| <div class="progress-circle"> | |
| <div class="mask full"> | |
| <div class="fill" style="transform: rotate(180deg);"></div> <!-- adjust angle for >50% --> | |
| </div> | |
| <div class="mask half"> | |
| <div class="fill" style="transform: rotate(90deg);"></div> <!-- adjust angle for actual percentage --> | |
| </div> | |
| <div class="inside-circle">{{ percentage|round(2) }}%</div> | |
| </div> | |
| <div class="section"> | |
| <h4><i class="fas fa-lightbulb"></i> Tips for Basic Information</h4> | |
| <ul> | |
| <li>Incorporate job-specific keywords to match your desired role.</li> | |
| <li>Quantify your achievements, such as "Reduced costs by 15%."</li> | |
| <li>Keep formatting consistent, including fonts and alignment.</li> | |
| <li>Add a concise professional summary highlighting key skills.</li> | |
| <li>Proofread thoroughly to eliminate grammar or spelling mistakes.</li> | |
| </ul> | |
| </div> | |
| <div class="section"> | |
| <button class="btn-toggle" type="button" data-toggle="collapse" data-target="#missingSectionsCollapse" aria-expanded="false" aria-controls="missingSectionsCollapse"> | |
| <span>Show Missing Sections</span> <i class="fas fa-chevron-down"></i> | |
| </button> | |
| <div class="collapse" id="missingSectionsCollapse"> | |
| <ul> | |
| {% if parsed_resume['missing_sections'] %} | |
| {% for section in parsed_resume['missing_sections'] %} | |
| <li>{{ section }}</li> | |
| {% endfor %} | |
| {% else %} | |
| <li class="no-data">No missing sections found.</li> | |
| {% endif %} | |
| </ul> | |
| </div> | |
| </div> | |
| <div class="section"> | |
| <button class="btn-toggle" type="button" data-toggle="collapse" data-target="#skillsToAddCollapse" aria-expanded="false" aria-controls="skillsToAddCollapse"> | |
| <span>Skills to be Added</span> <i class="fas fa-chevron-down"></i> | |
| </button> | |
| <div class="collapse" id="skillsToAddCollapse"> | |
| <ul> | |
| {% if parsed_resume['missing_skills'] %} | |
| {% for skill in parsed_resume['missing_skills'] %} | |
| <li>{{ skill }}</li> | |
| {% endfor %} | |
| {% else %} | |
| <li class="no-data">No missing skills found.</li> | |
| {% endif %} | |
| </ul> | |
| </div> | |
| </div> | |
| <div class="section"> | |
| <button class="btn-toggle" type="button" data-toggle="collapse" data-target="#projectSuggestionsCollapse" aria-expanded="false" aria-controls="projectSuggestionsCollapse"> | |
| <span>Project Suggestions</span> <i class="fas fa-chevron-down"></i> | |
| </button> | |
| <div class="collapse" id="projectSuggestionsCollapse"> | |
| <ul> | |
| {% if parsed_resume['common_projects'] %} | |
| <li>{{ parsed_resume['common_projects'] }}</li> | |
| {% else %} | |
| <li class="no-data">No project suggestions available.</li> | |
| {% endif %} | |
| </ul> | |
| </div> | |
| </div> | |
| <div class="section"> | |
| <button class="btn-toggle" type="button" data-toggle="collapse" data-target="#certificationSuggestionsCollapse" aria-expanded="false" aria-controls="certificationSuggestionsCollapse"> | |
| <span>Certifications Based Suggestions</span> <i class="fas fa-chevron-down"></i> | |
| </button> | |
| <div class="collapse" id="certificationSuggestionsCollapse"> | |
| <div> | |
| {% if parsed_resume['certifications']['found'] %} | |
| <p style="color: green;">✔ {{ parsed_resume['certifications']['message'] }}</p> | |
| <p><strong>Extracted Text:</strong> {{ parsed_resume['certifications']['text'] }}</p> | |
| {% else %} | |
| <p class="no-data">✖ No Imarticus certification found.</p> | |
| {% endif %} | |
| </div> | |
| </div> | |
| </div> | |
| <div class="section"> | |
| <button class="btn-toggle" type="button" data-toggle="collapse" data-target="#projectSuggestionsCollapse" aria-expanded="false" aria-controls="projectSuggestionsCollapse"> | |
| <span>Grammar Issues</span> <i class="fas fa-chevron-down"></i> | |
| </button> | |
| <div class="skills-container" id="grammar-issues"> | |
| <ul> | |
| {% if parsed_resume['grammar_issues'] %} | |
| {% for issue in parsed_resume['grammar_issues'] %} | |
| <li>{{ issue }}</li> | |
| {% endfor %} | |
| {% else %} | |
| <span style="color: #888;">No grammar issues found.</span> | |
| {% endif %} | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Toast Container for Missing Section Alerts --> | |
| <div aria-live="polite" aria-atomic="true" | |
| style="position: fixed; top: 20px; right: 20px; z-index: 1060;"> | |
| <div id="missingInfoToast" class="toast" role="alert" aria-live="assertive" | |
| aria-atomic="true" data-delay="7000"> | |
| <div class="toast-header bg-danger text-white"> | |
| <strong class="mr-auto">Missing Information Alert</strong> | |
| <button type="button" class="ml-2 mb-1 close text-white" data-dismiss="toast" aria-label="Close"> | |
| <span aria-hidden="true">×</span> | |
| </button> | |
| </div> | |
| <div class="toast-body"> | |
| <ul id="missingInfoList" style="margin:0; padding-left: 20px;"></ul> | |
| </div> | |
| </div> | |
| </div> | |
| <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.1/dist/umd/popper.min.js"></script> | |
| <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script> | |
| </body> | |
| </html> | |