Angel Investment Probability Calculator

Team Assessment (Weight: 30%)

Market Opportunity (Weight: 25%)

Product / Service / Innovation (Weight: 20%)

Traction & Business Model (Weight: 15%)

Financials & Funding Ask (Weight: 10%)

Results

Please complete all previous sections and click "Calculate Probability" on the "Financials & Ask" tab.

0%

Note: This is an estimation based on common factors. Actual investment decisions are complex and involve many other variables.

`; // The spec says "No disclaimers... unless explicitly requested". Removing the "Note" for now. // Re-evaluating the "no disclaimers" rule. A note explaining the nature of the result is usually helpful for a calculator of this type. // However, sticking to the spec: resultsOutput.innerHTML = `

Based on your inputs, the estimated probability of securing angel investment is:

${probability.toFixed(1)}%

Overall Weighted Score: ${overallScore.toFixed(2)} / 5.00

`; probabilityBar.style.width = probability + '%'; probabilityText.textContent = probability.toFixed(1) + '%'; downloadButton.style.display = 'block'; resultsTabLink.disabled = false; // Automatically switch to results tab resultsTabLink.click(); } else { console.error("Results display elements not found."); } } window.acc_downloadPDF = function() { const { jsPDF } = window.jspdf; if (!jsPDF) { alert("PDF library not loaded. Cannot download PDF."); return; } const doc = new jsPDF(); let yPos = 20; const lineHeight = 7; const pageMargin = 15; const pageWidth = doc.internal.pageSize.getWidth(); const usableWidth = pageWidth - 2 * pageMargin; doc.setFontSize(18); doc.setTextColor(0, 123, 255); // #007bff doc.text("Angel Investment Probability Calculator Results", pageWidth / 2, yPos, { align: 'center' }); yPos += lineHeight * 2; const resultsOutput = document.getElementById('acc_results_output'); if (resultsOutput) { doc.setFontSize(14); doc.setTextColor(0, 86, 179); // #0056b3 const resultTextElements = resultsOutput.querySelectorAll('p'); if (resultTextElements.length > 1) { // Get the probability and score doc.text(resultTextElements[1].innerText, pageWidth / 2, yPos, { align: 'center' }); yPos += lineHeight * 1.5; if (resultTextElements.length > 2) { doc.setFontSize(10); doc.setTextColor(51,51,51); // #333 doc.text(resultTextElements[2].innerText, pageWidth / 2, yPos, { align: 'center' }); yPos += lineHeight * 2; } } } doc.setFontSize(12); doc.setTextColor(0, 86, 179); // #0056b3 doc.text("Summary of Your Inputs:", pageMargin, yPos); yPos += lineHeight * 1.5; doc.setFontSize(10); doc.setTextColor(51,51,51); // #333 for (const category in acc_allInputsData) { if (category === 'additional_financials' && acc_allInputsData[category].length === 0) continue; if (acc_allInputsData[category].length === 0) continue; doc.setFontSize(11); doc.setFont(undefined, 'bold'); let categoryName = category.charAt(0).toUpperCase() + category.slice(1); if (category === 'additional_financials') categoryName = "Funding & Valuation Details"; else categoryName += ` Assessment (Weight: ${acc_categoryWeights[category]*100}%)`; doc.text(categoryName, pageMargin, yPos); yPos += lineHeight; doc.setFont(undefined, 'normal'); doc.setFontSize(10); acc_allInputsData[category].forEach(item => { if (yPos > doc.internal.pageSize.getHeight() - pageMargin) { // New page if needed doc.addPage(); yPos = pageMargin; } const labelText = `${item.label}:`; const valueText = `${item.value}` + (item.score ? ` (Score: ${item.score})` : ''); // Simple table-like layout: doc.text(labelText, pageMargin + 5, yPos); // Indent label // For value, try to align it or put on next line if too long. // A more robust solution would use doc.splitTextToSize for wrapping. let valueLines = doc.splitTextToSize(valueText, usableWidth - 50); // 50 is arbitrary width for label doc.text(valueLines, pageMargin + 65, yPos); // Align value yPos += (valueLines.length * (lineHeight * 0.7)) + 2; // Adjust spacing based on lines }); yPos += lineHeight * 0.5; // Extra space between categories } doc.save('Angel_Investment_Probability_Results.pdf'); } // Initialize first tab if (acc_tabLinks.length > 0) { acc_openTab(null, acc_tabContents[0].id); }
Scroll to Top