Financial Fraud Detection System

Financial Fraud Detection System

A simulation tool to analyze transactions for suspicious activity.

Paste Transaction Data

Format: Date (YYYY-MM-DD), Description, Amount, Location

Analysis Dashboard

Flagged Transactions by Type

Export Fraud Analysis Report

Generate a professional PDF of the fraud analysis for your records.

Total Transactions

${summary.total}

Flagged Transactions

${summary.flaggedCount}

Potential Loss Amount

$${summary.flaggedValue.toLocaleString()}

`; const flaggedContainer = document.getElementById('flagged-transactions-container'); flaggedContainer.innerHTML = `

Flagged Transactions

    ${analysisResults.flagged.map(t => `
  • ${t.description}$${t.amount.toLocaleString()}
    ${t.flags.join(', ')}
  • `).join('') || '

    No flagged transactions.

    '}
`; const ctx = document.getElementById('fraud-chart').getContext('2d'); if (fraudChart) fraudChart.destroy(); fraudChart = new Chart(ctx, { type: 'bar', data: { labels: Object.keys(summary.types), datasets: [{ label: '# of Transactions', data: Object.values(summary.types), backgroundColor: '#dc2626', }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { display: false } }, indexAxis: 'y' } }); } // --- EVENT LISTENERS --- analyzeBtn.addEventListener('click', analyzeTransactions); // --- PDF GENERATION --- async function generatePdfReport() { downloadPdfBtn.disabled = true; downloadPdfBtn.textContent = 'Generating...'; const { summary, flagged } = analysisResults; const tableRows = flagged.map(t => ` ${t.date}${t.description}${t.location} $${t.amount.toLocaleString()} ${t.flags.join(', ')}`).join(''); const reportHtml = `

Fraud Analysis Report

ACCOUNT: XXXXX1234

DATE: ${new Date().toLocaleDateString()}

TOTAL TRANSACTIONS
${summary.total}
FLAGGED TRANSACTIONS
${summary.flaggedCount}
POTENTIAL LOSS
$${summary.flaggedValue.toLocaleString()}
Analysis by Fraud Type
Detailed Log of Flagged Transactions
${tableRows}
DateDescriptionLocationAmountReason
`; const pdfTemplate = document.getElementById('pdf-template'); pdfTemplate.innerHTML = reportHtml; pdfTemplate.classList.remove('invisible'); new Chart(document.getElementById('pdf-fraud-chart'), { type: 'bar', data: fraudChart.data, options: { ...fraudChart.options, animation: { duration: 0 }, maintainAspectRatio: false } }); setTimeout(async () => { try { const { jsPDF } = window.jspdf; const canvas = await html2canvas(pdfTemplate.querySelector('.pdf-page'), { scale: 2 }); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'p', unit: 'pt', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(), pdfHeight = (canvas.height * pdfWidth) / canvas.width; pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight); pdf.save('Fraud_Analysis_Report.pdf'); } catch (e) { console.error('PDF Generation Error:', e); } finally { downloadPdfBtn.disabled = false; downloadPdfBtn.textContent = 'Download PDF Report'; pdfTemplate.classList.add('invisible'); pdfTemplate.innerHTML = ''; } }, 500); } downloadPdfBtn.addEventListener('click', generatePdfReport); // --- INITIALIZATION --- switchTab(0); });
Scroll to Top