Phishing remains the most common initial attack vector in corporate breaches—accounting for over 90% of all successful cyber intrusions, according to Verizon’s 2023 DBIR. Yet most organizations rely on generic, off-the-shelf email security tools trained on public datasets that don’t reflect their unique communication patterns, internal jargon, vendor relationships, or even the subtle social engineering tactics attackers tailor specifically to *their* employees.
That gap is where your own incident history becomes your strongest defense asset. Every confirmed phishing email your team reported last quarter—every forwarded “urgent payroll update,” every spoofed IT helpdesk request, every compromised executive email—contains irreplaceable signal: linguistic quirks, domain anomalies, behavioral red flags, and contextual traps that only *your* environment produces. Training a model on this data doesn’t require building AI from scratch. It means applying disciplined, reproducible processes to turn historical incidents into a living detection layer—one that improves as your threat landscape evolves.
Why Your Incident Reports Are More Valuable Than Public Datasets
Public phishing datasets—like PhishTank or the Enron email corpus—are useful for baseline research, but they suffer from three critical limitations in enterprise settings:
- Temporal drift: Attack patterns shift rapidly. A 2021 dataset won’t capture today’s QR-code-based credential harvesting or AI-generated voice-cloning follow-ups.
- Contextual blindness: They lack your company’s internal structure (e.g., “Finance-AP” vs. “Accounts Payable”), approved vendor names (“DocuSign” vs. “Docu-Sign”), or even common subject line conventions (“Q3 Invoice #INV-7842”).
- Label noise: Public labels often indicate only “phishing” or “legitimate”—not *why* it was flagged, how it bypassed filters, or which employee role was targeted.
Your incident reports contain precise, ground-truth context: who opened it, what action was taken (e.g., clicked link, entered credentials), whether MFA was bypassed, and crucially—what internal policy or process the email attempted to exploit. That specificity is the foundation of operational relevance.
Tip: Start tagging every confirmed phishing incident with at least three metadata fields: Target Department, Primary Deception Tactic (e.g., urgency, authority, curiosity), and Compromised Channel (e.g., Outlook Web Access, Teams message, SMS redirect).A Realistic 5-Phase Workflow (No PhD Required)
This isn’t theoretical. In Q2 2023, a regional healthcare provider with 1,200 staff trained a lightweight BERT-based classifier using just 87 internally verified phishing emails from 2022–2023—and reduced false negatives by 63% within six weeks of deployment. Their success came not from algorithmic novelty, but from rigorous execution of five phases:
- Curate & Anonymize: Extract raw email bodies, headers, and sender domains—but strip PII (names, internal IPs, patient IDs) using regex + manual review.
- Enrich with Context: Add structured labels:
is_phishing=1,tactic=“urgency”,spoofed_domain=“hr@companyname-support.net”. - Balance Strategically: Augment with 120+ legitimate internal emails (meeting invites, policy updates, system alerts) — prioritizing messages that *resemble* phishing (e.g., “Action Required” subject lines).
- Train Incrementally: Begin with scikit-learn’s TF-IDF + Logistic Regression (interpretable, fast), then upgrade to fine-tuned DistilBERT only if precision demands exceed 94%.
- Validate in Production: Route 5% of incoming mail through the model *in shadow mode*—log predictions without blocking—then measure against actual incident reports weekly.
This workflow avoids over-engineering. It treats the model as a collaborator—not a replacement—for your security team.
What to Collect (and What to Ignore)
Not all incident report data is equally useful. Focus collection on signals proven to correlate strongly with successful phishing in your environment. The table below reflects findings from 14 organizations that implemented custom models between 2022–2024:
| Signal Type | High-Value Examples | Low-Value (Skip) |
|---|---|---|
| Header Analysis | Mismatched Return-Path vs. From: domain; SPF/DKIM failure status in original headers |
Generic “X-Mailer” strings or unverifiable client identifiers |
| Linguistic Cues | Urgent verbs (“immediately”, “within 2 hours”), passive-aggressive tone (“per our conversation…” when no prior contact exists), inconsistent capitalization (“Urgent! PAYROLL-UPDATE-2024.pdf”) | Grammar errors alone—many legitimate vendors (e.g., non-native SaaS support teams) use imperfect English |
| Link & Attachment Behavior | Redirect chains >3 hops; URLs with legitimate subdomains but suspicious paths (e.g., sharepoint.company.com/secure-login/ → bit.ly/xyz → fake-login[.]com); executable attachments masquerading as PDFs (.pdf.exe) |
Single, direct links to known domains—even if slightly misspelled—unless combined with other red flags |
| Structural Patterns | Missing salutation (“Dear Team” instead of “Dear Finance Team”); inconsistent signature blocks (e.g., “IT Support” with no phone number or department URL); mismatched branding colors/fonts in embedded images | Minor HTML formatting quirks (e.g., extra spacing, font size variations) unless part of a repeatable pattern across incidents |
Discipline here prevents “feature bloat”—a leading cause of model degradation. One financial services firm abandoned 42 potential features after validation showed only 9 improved precision beyond statistical noise.
Mini Case Study: How a Midsize Law Firm Closed Its “Urgent Document” Gap
A 220-person law firm in Chicago noticed recurring incidents around fake “court filing deadline” emails. Standard filters caught obvious typos like “courtt.gov,” but missed sophisticated lures using real-looking domains (illinoiscourts-filing.org) and leveraging genuine case numbers pulled from public dockets. Their incident reports consistently noted two overlooked details: (1) all lures referenced documents requiring “digital notarization,” a service the firm *didn’t offer*, and (2) senders used “Esq.” in signatures despite targeting paralegals and admins—not attorneys.
Their data science lead extracted 31 such emails, enriched them with those two contextual labels, and trained a simple logistic regression model focused *only* on those signals plus sender domain entropy (measuring randomness in subdomain names). Deployed in shadow mode for three weeks, it flagged 17 previously undetected lures—including one that had evaded Microsoft Defender for Office 365. Within two months, “urgent document” phishing attempts dropped by 81%. Crucially, they fed every false positive back into retraining—turning human review into continuous improvement.
“Your incident reports aren’t just forensic evidence—they’re your organization’s threat dialect dictionary. Train on them, and your model learns to speak the language of *your* adversaries.” — Dr. Lena Torres, Director of Applied AI Security, NIST Cybersecurity Framework Working Group
Essential Pre-Deployment Checklist
Before routing any predictions to your email gateway, verify these non-negotiables:
- ✅ Consent & Compliance: Confirm legal review of data usage—especially if incident reports include employee names or departments. Anonymize or aggregate where required by GDPR/CCPA.
- ✅ Baseline Benchmark: Measure current false negative rate on your last 6 months of incidents. Your model must beat it—or explain why (e.g., “We prioritize precision over recall to avoid alert fatigue”).
- ✅ Explainability Test: For 5 random model-flagged emails, can your SOC analyst quickly see *why*? (e.g., “High urgency score + domain entropy > 4.2 + missing department signature”). If not, simplify.
- ✅ Fallback Protocol: Define exactly what happens when the model is uncertain (e.g., route to quarantine folder labeled “AI-Review”) and who receives alerts.
- ✅ Retraining Cadence: Schedule automatic retraining every 14 days—or trigger it manually after every 5 new confirmed incidents.
FAQ: Practical Questions from Security Teams
Do I need a data scientist on staff?
No. Modern AutoML tools (like H2O.ai, Azure ML Studio, or even Google Vertex AI) handle preprocessing, hyperparameter tuning, and evaluation with guided workflows. What you *do* need is one technically fluent team member—such as a senior SOC analyst or IT operations engineer—who understands email headers, your internal comms patterns, and can validate outputs. Their domain knowledge is the irreplaceable ingredient.
How much historical data do I really need?
Start with as few as 25–30 confirmed phishing incidents. Quality trumps quantity: 30 well-annotated, diverse examples (different tactics, departments, timeframes) outperform 200 unlabeled or inconsistently tagged ones. Prioritize incidents from the last 18 months—they reflect current attacker behavior.
Won’t attackers just adapt and evade my custom model?
They already do—but your model adapts faster. Unlike static rules, ML models learn from *new* incidents in near real-time. When attackers shift to impersonating your CEO via LinkedIn messages instead of email, your next round of retraining (using newly captured incidents) incorporates that pattern. The key is closing the feedback loop: every incident report feeds the model, and every model prediction is audited against reality.
Conclusion: Your History Is Your First Line of Defense
You already possess the most powerful dataset available for detecting phishing against your organization: your own incident reports. These aren’t abstract logs—they’re artifacts of real human decisions, real business processes, and real attacker ingenuity. Training a model on them isn’t about replacing human judgment; it’s about amplifying it. It means shifting from reactive triage to anticipatory defense—where your security stack learns the cadence of your threats before they strike again.
You don’t need perfect data. You don’t need infinite compute. You need discipline in curation, clarity in labeling, and commitment to closing the loop between detection and learning. Start small: pick your last 15 phishing reports, anonymize them, add three consistent tags, and run a basic classifier. Measure its precision against your current tools. Then iterate. Every hour spent refining this process pays dividends in reduced dwell time, fewer compromised accounts, and stronger resilience.
💬 Share your first modeling milestone with us. Did your initial model catch a phishing attempt your existing tools missed? What surprised you about your own incident patterns? Comment below—we’ll feature real implementation stories in our next deep-dive newsletter.









