Initial skills documentation — 25 categories, all SKILL.md + references + scripts
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# BoxPilot Logistics — MC/DOT Solicitation Detection
|
||||
|
||||
## Account
|
||||
- Email: `hello@boxpilotlogistics.com`
|
||||
- Password: `1New.opportunity`
|
||||
- IMAP: `mail.boxpilotlogistics.com:993`
|
||||
- SMTP: `mail.boxpilotlogistics.com:2525` (port 587/465 blocked from netcup)
|
||||
- Solicitation folder: top-level "Solicitation" (subscribed, not under INBOX)
|
||||
|
||||
## After initial cleanup
|
||||
After running the triage script against all ~120 inbox messages:
|
||||
- 87 solicitations moved to Solicitation folder
|
||||
- 36 legitimate messages remain in inbox
|
||||
|
||||
## Detection Heuristics
|
||||
|
||||
Three-tier detection:
|
||||
|
||||
### 1. Free-domain mismatch (highest confidence)
|
||||
Sender from free domain (gmail, yahoo, outlook, etc.) AND body references a business domain → solicitation
|
||||
|
||||
### 2. Free-domain + subject keywords
|
||||
Trusting keywords from free-domain senders: insurance, factoring, fuel, dispatch, load board, freight, logistics, carrier, broker, MC authority, DOT authority, compliance, IFTA, IRP, E-log, ELD, safety, lease, warranty, quote
|
||||
|
||||
### 3. Business-domain service offers
|
||||
Even from real company domains, anything offering to a newly registered MC: trucking insurance quotes, compliance/DOT filings (BOC-3), factoring, fuel cards, ELD sales, dispatch services, load board subscriptions, logo/web/SEO
|
||||
|
||||
## Domain extraction
|
||||
|
||||
```python
|
||||
FREE_DOMAINS = {"gmail.com", "yahoo.com", "yahoo.co.uk", "ymail.com", "outlook.com",
|
||||
"hotmail.com", "live.com", "msn.com", "aol.com", "icloud.com",
|
||||
"me.com", "mac.com", "protonmail.com", "proton.me", "pm.me",
|
||||
"mail.com", "inbox.com", "zoho.com", "yandex.com", "gmx.com",
|
||||
"fastmail.com", "tutanota.com", "rediffmail.com", "libero.it",
|
||||
"web.de", "gmx.de", "t-online.de", "online.de"}
|
||||
|
||||
def extract_domains(text):
|
||||
domains = set()
|
||||
for m in re.finditer(r'https?://(?:www\.)?([a-z0-9.-]+\.[a-z]{2,}(?:\.[a-z]{2,})?)', text, re.I):
|
||||
d = m.group(1).lower()
|
||||
if d not in ('google.com', 'youtube.com', 'facebook.com', 'linkedin.com', 'twitter.com', 'x.com', 'instagram.com'):
|
||||
domains.add(d)
|
||||
for m in re.finditer(r'[a-z0-9._%+-]+@([a-z0-9.-]+\.[a-z]{2,}(?:\.[a-z]{2,})?)', text, re.I):
|
||||
d = m.group(1).lower()
|
||||
if d not in FREE_DOMAINS:
|
||||
domains.add(d)
|
||||
return domains
|
||||
```
|
||||
|
||||
## Categories of MC-registration spam seen
|
||||
|
||||
| Category | Example domains |
|
||||
|---|---|
|
||||
| Insurance | themcclureagency, coastaltruckinginsurance, allnevadainsurance |
|
||||
| Compliance | uscompliance.io, dotregistrations.org, fmcsaprocessagents |
|
||||
| Factoring | otr.otrsolutions.com |
|
||||
| ELD | preventty.com |
|
||||
| Promo | slackhq.com, Amex promo emails |
|
||||
| Logo/Web | Various free-domain senders |
|
||||
|
||||
## Folder visibility
|
||||
The Solicitation folder must be **subscribed** via IMAP (`IMAP4.subscribe('Solicitation')`) for email clients to see it. If the user doesn't see it, they may need to log out and back in.
|
||||
|
||||
## Cron
|
||||
```bash
|
||||
cronjob(action='create', schedule='every 10m', script='boxpilot-triage.py', no_agent=True, deliver='origin')
|
||||
```
|
||||
|
||||
## Pitfalls
|
||||
- **Folder not showing:** Subscribe via `conn.subscribe('Solicitation')` — clients only show subscribed folders
|
||||
- **Move pattern:** `conn.copy(num, 'Solicitation')` then `conn.store(num, '+FLAGS', '\\\\Deleted')` then `conn.expunge()` — IMAP has no atomic MOVE
|
||||
- **Initial cleanup:** Process ALL inbox messages, not just recent unread, since the inbox may already be flooded
|
||||
Reference in New Issue
Block a user