⚡ AI Tool

Resume Rewriter

Paste weak or generic bullet points. Get them rewritten as powerful, achievement-focused impact statements that stand out to recruiters.

✏️ Your Content
Achievement-Focused
Professional
ATS-Optimised
Executive Level
0 characters
✨ Rewritten Output
✦ Sample output preview — fill in your bullets and click Rewrite
Original
Worked on backend team and helped with performance improvements
Rewritten
Led backend optimisation initiative reducing API response time by 40%, serving 2M+ daily requests
Original
Managed database and fixed issues
Rewritten
Architected and maintained PostgreSQL database schema for 500K+ records, cutting query time by 60%
Original
Was part of team that launched product
Rewritten
Co-led cross-functional product launch to 50,000 users, achieving 4.6★ App Store rating in first week
const TOOL = 'rewriter'; renderLimitBadge(TOOL, 'rl-badge'); // Tone selection let selectedTone = 'achievement'; document.querySelectorAll('.tone-pill').forEach(p => { p.addEventListener('click', () => { document.querySelectorAll('.tone-pill').forEach(x => x.classList.remove('sel')); p.classList.add('sel'); selectedTone = p.dataset.tone; }); }); // Char counter document.getElementById('rw-bullets').addEventListener('input', function() { document.getElementById('rw-char').textContent = this.value.length + ' characters'; }); async function rewrite() { const bullets = document.getElementById('rw-bullets').value.trim(); const role = document.getElementById('rw-role').value.trim(); if (!bullets) { document.getElementById('rw-bullets').style.borderColor = 'var(--danger)'; return; } document.getElementById('rw-bullets').style.borderColor = ''; const { allowed } = checkLimit(TOOL); if (!allowed) { document.getElementById('rw-output').innerHTML = `
⛔ You've used all ${AI_LIMITS[TOOL]} free rewrites for today. Limit resets at IST midnight.
`; return; } const btn = document.getElementById('rw-btn'); btn.disabled = true; document.getElementById('rw-btn-text').textContent = 'Rewriting...'; document.getElementById('rw-spinner').style.display = 'inline-block'; const toneMap = { 'achievement': 'achievement-focused with quantified impact metrics wherever possible', 'professional': 'professional and polished, appropriate for corporate environments', 'ats': 'ATS-optimised with strong action verbs and industry keywords', 'executive': 'executive-level, strategic, and leadership-oriented', }; const system = `You are an expert resume writer who specialises in rewriting bullet points to be impactful and recruiter-ready. Your rewrites must: - Start with a strong action verb - Be ${toneMap[selectedTone]} - Be concise (1-2 lines max per bullet) - Add specifics, numbers, or impact where reasonably inferred - Never fabricate specific company names, exact figures, or certifications not mentioned ${role ? `- Be tailored for a ${role} role` : ''} Respond ONLY in this JSON format (no markdown, no explanation): {"rewrites":[{"original":"...","rewritten":"..."}]}`; const prompt = `Rewrite these resume bullet points:\n\n${bullets}`; try { const raw = await callAI(prompt, system, 1500); const json = JSON.parse(raw.replace(/```json|```/g, '').trim()); let html = ''; json.rewrites.forEach(r => { html += `
Original
${escHtml(r.original)}
Rewritten
${escHtml(r.rewritten)}
`; }); document.getElementById('rw-output').innerHTML = html; document.getElementById('rw-ghost').style.display = 'none'; consumeLimit(TOOL); renderLimitBadge(TOOL, 'rl-badge'); } catch(err) { renderAIError(err, 'rw-output', 'worker-notice'); if (err.message === 'NO_WORKER_URL') { // Demo mode const lines = bullets.split('\n').filter(l => l.trim()); const demo = lines.map(l => `
Original
${escHtml(l.trim())}
Rewritten (Demo)
🔒 Deploy the Cloudflare Worker to see AI-rewritten output here.
`).join(''); document.getElementById('rw-output').innerHTML = demo; } } finally { btn.disabled = false; document.getElementById('rw-btn-text').textContent = '⚡ Rewrite Bullets'; document.getElementById('rw-spinner').style.display = 'none'; } } function copyOutput() { const el = document.getElementById('rw-output'); // Collect only rewritten text const items = el.querySelectorAll('.rewritten-item'); if (!items.length) return; const text = Array.from(items).map(i => '• ' + i.textContent.trim()).join('\n'); navigator.clipboard.writeText(text).then(() => { const btn = document.querySelector('.ai-copy-btn'); btn.textContent = '✅ Copied!'; setTimeout(() => btn.textContent = '📋 Copy All', 2000); }); } function escHtml(s) { return s.replace(/&/g,'&').replace(//g,'>'); }