MenuClose
Identify the control questions for review.
Use nine fixed selections to prepare an initial routing priority and summary. The assessment does not examine transactions or determine whether fraud occurred.
alfonso.evans@No attachments or credentials. Describe the workflow and information categories only. These tools do not call an SI model or submit an inquiry. Host, browser, and email-provider practices are addressed in the Privacy Policy.
Select the statement closest to the current environment.
Complete all nine fields. Use the most supportable current-state answer, not the desired future state. Required fields are marked.
The helper is unavailable until its script loads. You can email or call directly. Do not enter records here.
Initial review classification
- Complete all nine fields and run the assessment.
Use the classification to frame a discussion.
The tool assigns points to self-selected control indicators. Totals of 12 or more produce Priority Review; totals of 4 to 11 produce Focused Review, except that high consequence combined with a material control gap also produces Priority Review. Lower totals produce Standard Review.
These rules are a routing aid. They are not a calibrated fraud score, probability of loss, evidence of misconduct, or independent validation of your controls. Standard Review does not mean risk-free.
Review the summary before copying it or opening an email draft. You choose whether to send. The reference is generated in your browser and does not prove receipt. A changed answer invalidates the prepared result.
For an active unauthorized transaction or security event, use your organization’s established response channels. This public tool is not an incident-response service.
(function () { "use strict";
var root = document.getElementById("are-fraud-assessment-master"); if (!root) return; if (root.getAttribute("data-assessment-ready") === "true") return;
var form = document.getElementById("are-fraud-form"); var readiness = document.getElementById("are-fraud-fieldset"); if (!readiness) return; var factors = [ { id:"are-fraud-consequence", name:"Decision consequence" }, { id:"are-fraud-owner", name:"Accountable ownership" }, { id:"are-fraud-assessment", name:"Current fraud-risk assessment" }, { id:"are-fraud-payment", name:"Payment authorization and change controls" }, { id:"are-fraud-identity", name:"Identity, customer, and vendor safeguards" }, { id:"are-fraud-monitoring", name:"Monitoring and detection coverage" }, { id:"are-fraud-response", name:"Exception, case, and response process" }, { id:"are-fraud-evidence", name:"Evidence, retention, and change control" }, { id:"are-fraud-pressure", name:"Recent control pressure" } ];
var errorNode = document.getElementById("are-fraud-error"); var resetButton = document.getElementById("are-fraud-reset"); var copyButton = document.getElementById("are-fraud-copy"); var statusNode = document.getElementById("are-fraud-status"); var referenceNode = document.getElementById("are-fraud-reference"); var priorityNode = document.getElementById("are-fraud-priority"); var driversNode = document.getElementById("are-fraud-drivers"); var previewNode = document.getElementById("are-fraud-preview"); var emailLink = document.getElementById("are-fraud-email"); var resultNode = document.getElementById("are-fraud-result"); var announcementNode = document.getElementById("are-fraud-announcement"); var requiredNodes = [form,errorNode,resetButton,copyButton,statusNode,referenceNode,priorityNode,driversNode,previewNode,emailLink,resultNode,announcementNode];
factors.forEach(function (factor) { requiredNodes.push(document.getElementById(factor.id)); });
var hasMissingNode = requiredNodes.some(function (node) { return !node; }); if (hasMissingNode) return;
var currentReference = ""; var currentPriority = ""; var currentSummary = ""; var publicInbox = "alfonso.evans@areglobalconsulting.com"; var querySeparator = String.fromCharCode(38);
function cleanSingleLine(value) { return String(value || "").replace(/\s+/g, " ").trim(); }
function selectedLabel(element) { if (!element) return ""; var option = element.options[element.selectedIndex]; return option ? cleanSingleLine(option.textContent) : ""; }
function announce(message) { announcementNode.textContent = ""; window.setTimeout(function () { announcementNode.textContent = message; }, 20); }
function randomSuffix() { var alphabet = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"; var output = []; var bytes = null;
if (window.crypto) { if (window.crypto.getRandomValues) { bytes = new Uint8Array(5); window.crypto.getRandomValues(bytes); } }
if (bytes) { Array.prototype.forEach.call(bytes, function (byte) { output.push(alphabet.charAt(byte % alphabet.length)); }); } else { [0,1,2,3,4].forEach(function () { output.push(alphabet.charAt(Math.floor(Math.random() * alphabet.length))); }); }
return output.join(""); }
function makeReference() { var now = new Date(); var year = now.getFullYear(); var month = String(now.getMonth() + 1).padStart(2, "0"); var day = String(now.getDate()).padStart(2, "0"); return "ARE-FRA-" + year + month + day + "-" + randomSuffix(); }
function clearInvalidStates() { factors.forEach(function (factor) { document.getElementById(factor.id).removeAttribute("aria-invalid"); }); }
function validate() { var missing = []; var firstInvalid = null; clearInvalidStates();
factors.forEach(function (factor) { var field = document.getElementById(factor.id); if (!field.value) { missing.push(factor.name); field.setAttribute("aria-invalid", "true"); if (!firstInvalid) firstInvalid = field; } });
if (missing.length) { errorNode.textContent = "Complete all nine assessment fields. First missing field: " + missing[0] + "."; errorNode.style.display = "block"; errorNode.focus(); if (firstInvalid) { window.setTimeout(function () { firstInvalid.focus(); }, 80); } return false; }
errorNode.textContent = ""; errorNode.style.display = "none"; return true; }
function collectAssessment() { var total = 0; var selections = []; var materialGap = false; var highConsequence = false;
factors.forEach(function (factor) { var field = document.getElementById(factor.id); var points = parseInt(field.value, 10); if (isNaN(points)) points = 0; if (factor.id === "are-fraud-consequence") { if (points === 4) highConsequence = true; } else { if (points === 4) materialGap = true; } total += points; selections.push({ name:factor.name, label:selectedLabel(field), points:points }); });
var priority = "Standard Review"; if (total >= 12) priority = "Priority Review"; else if (highConsequence) { if (materialGap) priority = "Priority Review"; else if (total >= 4) priority = "Focused Review"; } else if (total >= 4) priority = "Focused Review";
var drivers = selections.filter(function (selection) { return selection.points > 0; }).sort(function (a, b) { return b.points - a.points; });
return { total:total,priority:priority,selections:selections,drivers:drivers }; }
function priorityAction(priority) { if (priority === "Priority Review") return "Preserve the relevant record, assign an authorized owner, document interim safeguards, and move the material drivers into prompt scoped review."; if (priority === "Focused Review") return "Assign an owner, map the selected drivers to supportable evidence, define the review question, and establish closure criteria and a target review date."; return "Confirm the documented baseline, retain current support, and reassess after material changes in products, volume, vendors, controls, or operating pressure."; }
function driverLabels(data) { if (!data.drivers.length) return ["No elevated routing indicator was selected. Standard Review does not mean risk-free or independently validated."]; return data.drivers.slice(0, 4).map(function (driver) { return driver.name + ": " + driver.label; }); }
function buildSummary(reference, data) { var lines = [ "ARE Global Consulting LLC - Fraud Risk Assessment", "", "Reference: " + reference, "Initial review priority: " + data.priority + " (routing classification only)", "", "Assessment selections:" ];
data.selections.forEach(function (selection) { lines.push("- " + selection.name + ": " + selection.label); });
lines.push(""); lines.push("Principal routing drivers:"); driverLabels(data).forEach(function (driver) { lines.push("- " + driver); }); lines.push(""); lines.push("Recommended next step: " + priorityAction(data.priority)); lines.push(""); lines.push("Interpretation notice: This classification is based only on self-selected indicators. It is not a calibrated fraud score, audit result, investigation, legal opinion, compliance determination, loss forecast, certification, or guarantee."); lines.push(""); lines.push("Preparation notice: This reference and summary were generated locally in the user's browser. They do not prove receipt, create an engagement, authorize record transfer, or establish that fraud occurred."); return lines.join("\n"); }
function setStatus(label, background, border, color) { statusNode.textContent = label; statusNode.style.background = background; statusNode.style.borderColor = border; statusNode.style.color = color; }
function setDriverList(items) { while (driversNode.firstChild) driversNode.removeChild(driversNode.firstChild); items.forEach(function (item) { var li = document.createElement("li"); li.textContent = item; driversNode.appendChild(li); }); }
function disablePreparedActions() { emailLink.href = "mailto:" + publicInbox; emailLink.style.pointerEvents = "none"; emailLink.style.opacity = "0.55"; emailLink.setAttribute("aria-disabled", "true"); emailLink.setAttribute("tabindex", "-1"); copyButton.disabled = true; copyButton.style.opacity = "0.55"; copyButton.textContent = "Copy Summary"; }
function enablePreparedActions(subject, summary) { emailLink.href = "mailto:" + publicInbox + "?subject=" + encodeURIComponent(subject) + querySeparator + "body=" + encodeURIComponent(summary); emailLink.style.pointerEvents = "auto"; emailLink.style.opacity = "1"; emailLink.setAttribute("aria-disabled", "false"); emailLink.removeAttribute("tabindex"); copyButton.disabled = false; copyButton.style.opacity = "1"; }
function runAssessment() { if (!validate()) return; var data = collectAssessment(); if (!currentReference) currentReference = makeReference(); currentPriority = data.priority; currentSummary = buildSummary(currentReference, data);
referenceNode.textContent = currentReference; priorityNode.textContent = currentPriority; previewNode.textContent = currentSummary; setDriverList(driverLabels(data));
if (currentPriority === "Priority Review") setStatus("Priority Review", "#fde8e5", "#c65a4c", "#8c2118"); else if (currentPriority === "Focused Review") setStatus("Focused Review", "#fff0e3", "#cf7a37", "#7b2f00"); else setStatus("Standard Review", "#edf5eb", "#7ca178", "#365d32");
enablePreparedActions("Fraud Risk Assessment - " + currentPriority + " - " + currentReference, currentSummary); announce("Fraud risk assessment prepared. Review the classification, routing drivers, and summary before copying or opening the email draft.");
if (resultNode.scrollIntoView) resultNode.scrollIntoView({ behavior:"auto",block:"start" }); resultNode.focus(); }
function showCopySuccess() { copyButton.textContent = "Copied"; announce("Prepared fraud risk assessment summary copied to the clipboard."); window.setTimeout(function () { copyButton.textContent = "Copy Summary"; }, 1600); }
function fallbackCopy(text) { var area = document.createElement("textarea"); area.value = text; area.setAttribute("readonly", ""); area.style.position = "fixed"; area.style.opacity = "0"; document.body.appendChild(area); area.select(); var copied = false;
try { copied = document.execCommand("copy"); } catch (error) { copied = false; }
document.body.removeChild(area); if (copied) showCopySuccess(); else announce("The browser could not copy automatically. Select and copy the prepared summary manually."); }
function copySummary() { if (!currentSummary) return; if (navigator.clipboard) { if (navigator.clipboard.writeText) { navigator.clipboard.writeText(currentSummary).then(function () { showCopySuccess(); }).catch(function () { fallbackCopy(currentSummary); }); } else fallbackCopy(currentSummary); } else fallbackCopy(currentSummary); }
function markPreparedContentStale(event) { if (event) { if (event.target) event.target.removeAttribute("aria-invalid"); } if (!currentSummary) return;
currentReference = ""; currentPriority = ""; currentSummary = ""; setStatus("Needs Re-Run", "#fff8e8", "#d6b46f", "#6d4b00"); referenceNode.textContent = "Selections changed. Run the assessment again to generate a new local reference."; priorityNode.textContent = "Not classified - selections changed"; setDriverList(["The prior result is no longer active because an assessment selection changed."]); previewNode.textContent = "Run the assessment again to create a current structured summary."; disablePreparedActions(); announce("Assessment selections changed. Run the assessment again before copying or opening an email draft."); }
function resetAssessment() { form.reset(); currentReference = ""; currentPriority = ""; currentSummary = ""; clearInvalidStates(); errorNode.textContent = ""; errorNode.style.display = "none"; setStatus("Awaiting selections", "#f4f1ee", "#d8d1cb", "#6f625d"); referenceNode.textContent = "Generated locally when the assessment is run."; priorityNode.textContent = "Not yet classified"; setDriverList(["Complete all nine fields and run the assessment."]); previewNode.textContent = "The structured assessment summary will appear here."; disablePreparedActions(); announce("Fraud risk assessment reset."); document.getElementById(factors[0].id).focus(); }
form.addEventListener("submit", function (event) { event.preventDefault(); runAssessment(); }); form.addEventListener("change", markPreparedContentStale); copyButton.addEventListener("click", copySummary); resetButton.addEventListener("click", resetAssessment); emailLink.addEventListener("click", function (event) { if (emailLink.getAttribute("aria-disabled") === "true") event.preventDefault(); });
disablePreparedActions(); readiness.disabled = false; root.setAttribute("data-assessment-ready", "true"); })();