Class Action Suit Probability Calculator

Class Action Suit Probability Calculator

Estimate the potential for success based on key legal factors.

Case Basics

Class Certification Factors (Rule 23)

Very FewSufficientVery Many
WeakModerateStrong
AtypicalFairly TypicalVery Typical
InadequateAdequateExcellent

Legal & Financial Strength

MinorSignificantCatastrophic
UnfavorableMixedFavorable

Probability Analysis

0%
Calculating...

The case demonstrates strong characteristics for class certification and a favorable outcome. The combination of high numerosity, common facts, significant damages, and strong representation suggests a high likelihood of success.

`; } document.getElementById('summary-text').innerHTML = summaryHtml; }; // --- PDF Download --- const downloadPDF = async () => { if (typeof window.jspdf === 'undefined' || typeof window.html2canvas === 'undefined') { console.error("jsPDF or html2canvas is not loaded."); return; } const { jsPDF } = window.jspdf; const btn = document.getElementById('pdf-download-btn'); btn.textContent = 'Generating...'; btn.disabled = true; const getFactorText = (id, value) => { const labels = { defendantProfile: ["Small Business", "Regional Corp", "National Corp", "Multinational Corp", "Government"], numerosity: ["Very Few", "Limited", "Sufficient", "Large", "Very Many"], commonality: ["Weak", "Somewhat Weak", "Moderate", "Strong", "Very Strong"], typicality: ["Atypical", "Somewhat Typical", "Fairly Typical", "Typical", "Very Typical"], adequacy: ["Inadequate", "Needs Improvement", "Adequate", "Strong", "Excellent"], damages: ["Minor", "Moderate", "Substantial", "Significant", "Catastrophic"], precedent: ["Unfavorable", "Weak", "Mixed", "Favorable", "Very Favorable"] }; return labels[id][value - 1]; }; const caseName = document.getElementById('caseName').value || 'N/A'; const caseSummary = document.getElementById('caseSummary').value || 'No summary provided.'; const probability = document.getElementById('probability-score-text').textContent; const assessment = document.getElementById('probability-qualitative-text').textContent; const factorsData = { defendantProfile: parseInt(document.getElementById('defendantProfile').value, 10), numerosity: parseInt(document.getElementById('numerosity').value, 10), commonality: parseInt(document.getElementById('commonality').value, 10), typicality: parseInt(document.getElementById('typicality').value, 10), adequacy: parseInt(document.getElementById('adequacy').value, 10), damages: parseInt(document.getElementById('damages').value, 10), precedent: parseInt(document.getElementById('precedent').value, 10) }; let pdfContentHtml = `

Class Action Probability Report

Case: ${caseName}

Summary: ${caseSummary}

Final Assessment

Overall Probability Score:${probability}
Qualitative Assessment:${assessment}

Factor Analysis

Defendant Profile:${getFactorText('defendantProfile', factorsData.defendantProfile)}
Numerosity:${getFactorText('numerosity', factorsData.numerosity)}
Commonality:${getFactorText('commonality', factorsData.commonality)}
Typicality:${getFactorText('typicality', factorsData.typicality)}
Adequacy of Representation:${getFactorText('adequacy', factorsData.adequacy)}
Scale of Damages:${getFactorText('damages', factorsData.damages)}
Legal Precedent:${getFactorText('precedent', factorsData.precedent)}
`; const tempContainer = document.createElement('div'); tempContainer.style.position = 'absolute'; tempContainer.style.left = '-9999px'; tempContainer.innerHTML = pdfContentHtml; document.body.appendChild(tempContainer); try { const pdf = new jsPDF({ orientation: 'portrait', unit: 'pt', format: 'letter' }); await pdf.html(tempContainer.querySelector('#pdf-output-container'), { margin: [72, 72, 72, 72], autoPaging: 'text', width: 468, windowWidth: 700, }); pdf.save(`class_action_report_${caseName.replace(/ /g, '_') || 'analysis'}.pdf`); } catch (error) { console.error("Error generating PDF:", error); } finally { document.body.removeChild(tempContainer); btn.textContent = 'Download Report as PDF'; btn.disabled = false; } }; // --- Event Listeners --- tabs.forEach(tab => tab.addEventListener('click', () => showTab(parseInt(tab.dataset.tab, 10)))); nextBtn.addEventListener('click', () => { if (currentTab < totalTabs) showTab(currentTab + 1); }); prevBtn.addEventListener('click', () => { if (currentTab > 1) showTab(currentTab - 1); }); if(downloadPdfBtn) downloadPdfBtn.addEventListener('click', downloadPDF); // --- Initial Setup --- showTab(1); });
Scroll to Top