Post-Event Report Generator

Post-Event Report Generator

Fill in the details to generate a comprehensive report.

Event Details

Start by providing the basic information about your event. This context is crucial for anyone reading the report.

Attendance

Quantify your audience. This data helps measure event reach and the effectiveness of your marketing and registration efforts.

Budget & ROI

Track your financial performance. Compare planned expenses with actual spending to assess budgeting accuracy and calculate the event's return on investment.

Expense Breakdown

CategoryPlanned ($)Actual ($)

Return on Investment (ROI)

Calculated ROI

0%

Participant Feedback

Capture qualitative and quantitative feedback to understand attendee satisfaction and identify areas for improvement.

Satisfaction Scores (out of 5)

Summary & Recommendations

Conclude with a high-level summary. What were the key successes? What were the challenges? And most importantly, what are the actionable recommendations for the future?

Report Preview

This is a preview of the final report generated from your inputs. Review the information below before downloading.

${summary.recommendations || 'Not provided.'}

`; } navLinks.forEach(link => { link.addEventListener('click', (e) => { e.preventDefault(); switchSection(link.dataset.section); }); }); document.getElementById('report-content').addEventListener('input', updateAllData); document.getElementById('add-budget-item').addEventListener('click', () => { createBudgetRow({ category: '', planned: 0, actual: 0 }); }); document.getElementById('download-pdf').addEventListener('click', () => { if (typeof jspdf === 'undefined' || !jspdf.jsPDF) { alert("PDF library not loaded."); return; } const { jsPDF } = jspdf; const doc = new jsPDF(); let y = 15; doc.setFontSize(22); doc.text(reportData.details.eventName || 'Event Report', 105, y, { align: 'center' }); y += 8; doc.setFontSize(12); doc.text(`Date: ${reportData.details.eventDate} | Location: ${reportData.details.eventLocation}`, 105, y, { align: 'center' }); y += 15; const addSection = (title, content) => { if (y > 260) { doc.addPage(); y = 20; } doc.setFontSize(16); doc.setTextColor(30, 58, 138); doc.text(title, 15, y); y += 8; doc.setFontSize(11); doc.setTextColor(51, 65, 85); const textLines = doc.splitTextToSize(content, 180); doc.text(textLines, 15, y); y += textLines.length * 5 + 8; }; addSection('1. Event Objective', reportData.details.eventObjective); const attendanceRate = reportData.attendance.registered > 0 ? (reportData.attendance.attended / reportData.attendance.registered * 100).toFixed(1) : 0; addSection('2. Attendance', `Registered: ${reportData.attendance.registered}\nAttended: ${reportData.attendance.attended}\nAttendance Rate: ${attendanceRate}%`); doc.addImage(attendanceChart.toBase64Image(), 'PNG', 60, y, 80, 80); y += 90; const totalPlanned = reportData.budget.reduce((s, i) => s + i.planned, 0); const totalActual = reportData.roi.totalCost; addSection('3. Financial Summary', `Total Planned: $${totalPlanned.toLocaleString()}\nTotal Actual: $${totalActual.toLocaleString()}\nRevenue/Value: $${reportData.roi.revenue.toLocaleString()}\nROI: ${reportData.roi.value.toFixed(1)}%`); if (y > 180) { doc.addPage(); y = 20; } doc.addImage(budgetChart.toBase64Image(), 'PNG', 30, y, 150, 75); y += 85; addSection('4. Feedback', Object.entries(reportData.feedback.scores).map(([k, v]) => `${k}: ${v}/5`).join('\n')); addSection('5. Key Successes', reportData.summary.successes); addSection('6. Challenges', reportData.summary.challenges); addSection('7. Recommendations', reportData.summary.recommendations); doc.save(`${reportData.details.eventName.replace(' ', '_')}_Report.pdf`); }); renderBudgetTable(); switchSection('details'); updateAllData(); });
Scroll to Top