I'm Ready to Work AI

Transform your Land Surveyors United profile into a living, dynamic resume that showcases your surveying expertise and experience.

Learn More

Automated Profile Enhancement

Intelligent analysis and optimization of your existing profile data, transforming it into a professional surveying resume format.

Dynamic Project Showcase

Automatically organizes and highlights your surveying projects, equipment experience, and technical competencies.

Certification Integration

Seamlessly incorporates your professional certifications, licenses, and continuing education achievements.

Interactive Resume Book

Transform your PDF resume into an engaging, interactive flipping book format that brings your experience to life.

Basic Information

Name: ${wizardData.basicInfo.fullName || 'Not provided'}

Title: ${wizardData.basicInfo.title || 'Not provided'}

Location: ${wizardData.basicInfo.location || 'Not provided'}

Summary: ${wizardData.basicInfo.summary || 'Not provided'}

Professional Experience

Positions Listed: ${wizardData.experience.length} position${wizardData.experience.length !== 1 ? 's' : ''}
${wizardData.experience.map(exp => `

${exp.position} at ${exp.company}

${exp.startDate} - ${exp.endDate}

`).join('')}

Skills & Certifications

${wizardData.skills.equipment.map(skill => ` ${skill} `).join('')}

Certifications (${wizardData.skills.certifications.length}):

${wizardData.skills.certifications.map(cert => `

${cert.name}

${cert.organization}

`).join('')}

Projects

${wizardData.projects.map(proj => `

${proj.title}

${proj.client} - ${proj.completionDate}

`).join('')}

Ready to Generate Your Enhanced Profile!

Click next to preview and publish your professional surveyor profile

`; break; } } // Add helper functions for adding/removing items function addExperience() { const list = document.getElementById('experience-list'); const newExp = document.createElement('div'); newExp.className = 'bg-gray-800 p-4 rounded-lg'; newExp.innerHTML = `
`; list.appendChild(newExp); } function addCertification() { const list = document.getElementById('certifications-list'); const newCert = document.createElement('div'); newCert.className = 'bg-gray-800 p-4 rounded-lg'; newCert.innerHTML = `
`; list.appendChild(newCert); } function addProject() { const list = document.getElementById('projects-list'); const newProj = document.createElement('div'); newProj.className = 'bg-gray-800 p-4 rounded-lg'; newProj.innerHTML = `
`; list.appendChild(newProj); } // Add smooth transitions document.getElementById('step-content').style.transition = 'opacity 0.2s ease-out'; // Add progress ring update function function updateProgress() { const circle = document.querySelector('.progress-ring__circle'); const radius = circle.r.baseVal.value; const circumference = radius * 2 * Math.PI; const progress = (currentStep / totalSteps); circle.style.strokeDasharray = `${circumference} ${circumference}`; // Animate the progress const offset = circumference - (progress * circumference); circle.style.transition = 'stroke-dashoffset 0.35s ease-out'; circle.style.strokeDashoffset = offset; } function nextStep() { if (currentStep === totalSteps) { // Show loading state const content = document.getElementById('step-content'); content.innerHTML = `

Generating Your Profile

Please wait while we enhance your professional presence...

`; // Simulate profile generation (replace with actual API call) setTimeout(() => { showPreview(); }, 1500); return; } // Regular step progression if (!validateStep(currentStep)) { return; } saveStepData(currentStep); currentStep++; updateProgressSteps(); const content = document.getElementById('step-content'); content.style.opacity = '0'; setTimeout(() => { loadStepContent(currentStep); content.style.opacity = '1'; }, 200); } function previousStep() { if (currentStep > 1) { saveStepData(currentStep); currentStep--; updateProgressSteps(); // Animate transition const content = document.getElementById('step-content'); content.style.opacity = '0'; setTimeout(() => { loadStepContent(currentStep); content.style.opacity = '1'; }, 200); } } function validateStep(step) { const content = document.getElementById('step-content'); let isValid = true; switch(step) { case 1: // Basic Info validation const fullName = content.querySelector('input[placeholder="Full Name"]').value; const title = content.querySelector('input[placeholder="Professional Title"]').value; if (!fullName || !title) { alert('Please fill in your name and professional title'); isValid = false; } break; case 2: // Experience validation const experiences = content.querySelectorAll('#experience-list > div'); if (experiences.length === 0) { if (!confirm('No experience added. Would you like to continue anyway?')) { isValid = false; } } break; case 3: // Skills validation const selectedSkills = content.querySelectorAll('input[type="checkbox"]:checked'); if (selectedSkills.length === 0) { if (!confirm('No skills selected. Would you like to continue anyway?')) { isValid = false; } } break; case 4: // Projects validation const projects = content.querySelectorAll('#projects-list > div'); if (projects.length === 0) { if (!confirm('No projects added. Would you like to continue anyway?')) { isValid = false; } } break; } return isValid; } function saveStepData(step) { const content = document.getElementById('step-content'); switch(step) { case 1: wizardData.basicInfo = { fullName: content.querySelector('input[placeholder="Full Name"]').value, title: content.querySelector('input[placeholder="Professional Title"]').value, location: content.querySelector('input[placeholder="Location"]').value, summary: content.querySelector('textarea').value }; break; case 2: wizardData.experience = Array.from(content.querySelectorAll('#experience-list > div')).map(exp => ({ company: exp.querySelector('input[placeholder="Company"]').value, position: exp.querySelector('input[placeholder="Position"]').value, startDate: exp.querySelector('input[type="date"]:first-of-type').value, endDate: exp.querySelector('input[type="date"]:last-of-type').value, responsibilities: exp.querySelector('textarea').value })); break; case 3: wizardData.skills.equipment = Array.from(content.querySelectorAll('input[type="checkbox"]:checked')).map(cb => cb.nextElementSibling.textContent.trim()); wizardData.skills.certifications = Array.from(content.querySelectorAll('#certifications-list > div')).map(cert => ({ name: cert.querySelector('input[placeholder="Certification Name"]').value, organization: cert.querySelector('input[placeholder="Issuing Organization"]').value, issueDate: cert.querySelector('input[type="date"]:first-of-type').value, expirationDate: cert.querySelector('input[type="date"]:last-of-type').value })); break; case 4: wizardData.projects = Array.from(content.querySelectorAll('#projects-list > div')).map(proj => ({ title: proj.querySelector('input[placeholder="Project Title"]').value, client: proj.querySelector('input[placeholder="Client/Organization"]').value, completionDate: proj.querySelector('input[type="date"]').value, description: proj.querySelector('textarea').value, technologies: proj.querySelector('input[placeholder*="Total Station"]').value })); break; } } // Function to jump to specific step function goToStep(step) { currentStep = step; updateProgressSteps(); const content = document.getElementById('step-content'); content.style.opacity = '0'; setTimeout(() => { loadStepContent(step); content.style.opacity = '1'; }, 200); } // Initialize first step content when wizard starts document.addEventListener('DOMContentLoaded', () => { if (!document.getElementById('wizard').classList.contains('hidden')) { loadStepContent(1); } }); -->