✨ PREMIUM SUITE
🍁 AI-Powered Resume Builder Canada
Complete Resume & Cover Letter Solution for the Canadian Job Market
1. Upload Your Resume
🎯 Premium Career Suite
$4,99 CAD
- AI Resume Optimization
- Custom Cover Letter Generation
- Canadian Format Standards
- ATS Optimization
- PDF & Word Downloads
Drop your resume here
or click to browse
Supports: PDF, Word (.docx)
AI Analysis
🔍 Resume Analysis
Upload your resume to get started. Our AI will provide detailed insights for the Canadian job market.
⚡ Smart Improvements
Get specific recommendations for ATS optimization, Canadian formatting, keywords, and more.
Optimized Resume
📄
Your Transformed Resume
The AI-optimized Canadian version will appear here after processing.
1. Cover Letter Details
🎯 Premium Career Suite
$4,99 CAD
- AI Cover Letter Generation
- Resume Optimization Included
- Canadian Business Format
- Industry-Specific Content
- Multiple Download Options
AI Analysis
📝 Cover Letter Analysis
Fill out the form to get started. Our AI will analyze your information and create a compelling Canadian cover letter.
🎯 Smart Customization
Get personalized content that matches Canadian business standards and highlights your strengths.
Your Cover Letter
📝
Your Personalized Cover Letter
Your AI-generated Canadian cover letter will appear here after processing.
${applicantInfo.name}
${applicantInfo.address}
${applicantInfo.phone}
${applicantInfo.email}
${applicantInfo.address}
${applicantInfo.phone}
${applicantInfo.email}
${date}
${recipientInfo.hiringManager}
${recipientInfo.company}
${recipientInfo.address}
${recipientInfo.company}
${recipientInfo.address}
${subject}
${body.opening}
${body.middle}
${body.closing}
${signature}
${applicantInfo.name}
`;
}const blob = new Blob(['\ufeff', htmlDoc], {
type: 'application/msword'
});
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = fileName;
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
document.body.removeChild(a);
if (type === 'resume') {
showResumeStatus('Archivo Word descargado exitosamente!', 'success');
} else {
showCoverLetterStatus('Archivo Word descargado exitosamente!', 'success');
}} catch (error) {
console.error('Error generando archivo Word:', error);
if (type === 'resume') {
showResumeStatus('Error al generar el archivo Word. Intenta de nuevo.', 'error');
} else {
showCoverLetterStatus('Error al generar el archivo Word. Intenta de nuevo.', 'error');
}
} finally {
downloadBtn.disabled = false;
downloadBtn.textContent = '📝 Download Word';
}
}// --- FUNCIONES DE ESTADO Y PROGRESO ---
function showResumeStatus(message, type = 'processing') {
const el = document.getElementById('resumeStatusMessage');
el.textContent = message;
el.className = `status-message status-${type}`;
el.style.display = 'block';
if (type === 'success' || type === 'error') {
setTimeout(() => { if (el.textContent === message) el.style.display = 'none'; }, 6000);
}
}function showResumeProgress(percentage) {
const bar = document.getElementById('resumeProgressBar');
const fill = document.getElementById('resumeProgressFill');
if (percentage > 0) { bar.style.display = 'block'; fill.style.width = percentage + '%'; }
else { bar.style.display = 'none'; }
if (percentage >= 100) { setTimeout(() => { bar.style.display = 'none'; }, 2000); }
}function showCoverLetterStatus(message, type = 'processing') {
const el = document.getElementById('coverLetterStatusMessage');
el.textContent = message;
el.className = `status-message status-${type}`;
el.style.display = 'block';
if (type === 'success' || type === 'error') {
setTimeout(() => { if (el.textContent === message) el.style.display = 'none'; }, 6000);
}
}function showCoverLetterProgress(percentage) {
const bar = document.getElementById('coverLetterProgressBar');
const fill = document.getElementById('coverLetterProgressFill');
if (percentage > 0) {
bar.style.display = 'block';
fill.style.width = percentage + '%';
} else {
bar.style.display = 'none';
}
if (percentage >= 100) {
setTimeout(() => {
bar.style.display = 'none';
}, 2000);
}
}
${applicantInfo.name}