Persuasive Writing Assistant

Persuasive Writing Assistant

Craft compelling copy using proven frameworks.

Project Details

AIDA Framework

How will you grab their attention?

What interesting facts or benefits will hold their interest?

How will you make them desire the product?

What is the clear call to action?

PAS Framework

What is the core problem your audience faces?

How can you agitate that problem, making it feel more urgent?

How does your product solve this agitated problem?

Review & Export

AIDA Compiled Copy

PAS Compiled Copy

${persuasiveData.pas.problem || 'N/A'}

AGITATE

${persuasiveData.pas.agitate || 'N/A'}

SOLUTION

${persuasiveData.pas.solution || 'N/A'}

Compiled PAS Copy

${Object.values(persuasiveData.pas).map(s => s.trim()).filter(Boolean).join(' ')}

`; const reportHtml = `

Persuasive Strategy Blueprint

Product/Service: ${persuasiveData.productName || 'Not Specified'} | Audience: ${persuasiveData.targetAudience || 'Not Specified'}

${aidaHtml} ${pasHtml}
`; const pdfTemplate = document.getElementById('pdf-template'); pdfTemplate.innerHTML = reportHtml; pdfTemplate.classList.remove('invisible'); try { const { jsPDF } = window.jspdf; const canvas = await html2canvas(pdfTemplate.querySelector('.pdf-report-container'), { scale: 2, useCORS: true }); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'p', unit: 'pt', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = (canvas.height * pdfWidth) / canvas.width; pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight); const fileName = persuasiveData.productName.replace(/\s+/g, '_') || 'Strategy'; pdf.save(`${fileName}_Blueprint.pdf`); } catch(e) { console.error('PDF Generation Error:', e); alert('An error occurred while generating the PDF.'); } finally { downloadPdfBtn.disabled = false; downloadPdfBtn.textContent = 'Download Strategy Blueprint'; pdfTemplate.classList.add('invisible'); } } downloadPdfBtn.addEventListener('click', generatePdfReport); // --- INITIALIZATION --- switchTab(0); });
Scroll to Top