Why this exists
I ran a routine status report on my own outreach folder and the result was worse than I expected: all eleven sent prospects were overdue for follow-up. Not one or two. All eleven. The oldest had been sitting there for twelve weeks. Nobody had replied, and nobody had been nudged, so the pipeline was not a pipeline, it was a graveyard with good formatting.
The painful part was that every one of those prospect files already contained a written follow-up draft. The work was done. The message existed. It just never went out, because no one ran the check that says "these are due". That is the whole gap this skill fills: it is the check. It scans the folder, reports what is overdue oldest first, and puts the drafts in front of you. It never sends anything, because the point was never automation, it was memory.
How it works
- It scans your watch folder read-only One markdown file per prospect, with a status and a follow-up date in the frontmatter. Your keys stay your keys: if your files say something other than "status" and "follow_up_due", you map them in a small config instead of renaming anything.
- It reports before it drafts Overdue contacts oldest first with days overdue, then due-in-seven-days, then counts for waiting and done. Dates it cannot parse go in the report as-is, never guessed. If nothing is overdue, it says so in one line and stops.
- It drafts only after you say go If a file already contains a prepared follow-up, it uses it and only refreshes what went stale. If not, it writes one: 80 words max, one clause referencing the first message, one new angle of value, and no "just checking in".
- It updates files only when you confirm a send You say a follow-up went out, it advances that file's status and due date. It never marks anything as sent on its own, and it never touches a file you did not confirm.
Step by step (for first-time users)
-
Type
/follow-up-radarin your outreach project Or just ask "any follow-ups due?". Same result. - Point it at your prospect folder once It asks where your files live and which frontmatter keys hold status and due date, then offers to save the answers so future runs are zero-question.
- Read the radar report Oldest overdue first. The days-overdue column is the uncomfortable one, and the useful one.
- Approve drafting and review each message Each draft appears under the contact's name with the file path. Edit tone, cut lines, or skip a contact entirely.
- Send from your inbox, then tell it what went out Only then does it update those files, so your pipeline data matches reality.
What the radar reports
| Bucket | Treatment |
|---|---|
| Overdue | Full table, oldest first, with days overdue; these get drafts on approval |
| Due in the next 7 days | Listed so you see what is coming, no drafts yet |
| Waiting, not yet due | Counted, left alone |
| Replied, closed, or skipped | Counted, never nudged |
| Missing or unparseable dates | Listed as-is for you to fix; never guessed |
Honest take
What it does well: The report-first discipline. Most follow-up tools want to automate the sending, which is exactly the step that should stay human. This one automates the remembering, which is the step humans are provably bad at (eleven out of eleven, in my case). The drafting rules are opinionated in the right direction: short, one new piece of value, no guilt-tripping, and it reuses your own prepared drafts instead of overwriting them with generic copy.
What it does not do: It does not send email, connect to your inbox, or detect replies on its own. If a prospect answered and you never updated the file, the radar will still show them as overdue, because the files are the truth it works from. It also will not guess a malformed date into a schedule; those go in the report for you to fix. Garbage frontmatter in, honest flag out.
When to use it: Weekly, as a habit, on any folder where you track outreach in markdown. And immediately after any batch of first emails goes out, to set the due dates while the context is fresh. If you have ever found a twelve-week-old prospect with a perfectly good unsent draft attached, this is the five-minute check that prevents it.