- Mapping old components to GTD components
- High-level refactor architecture
- Practical implementation touches
- Benefits realised
Problem to solve │ GTD value delivered by the refactor —————————————–│———————————————– Files pour in from e-mail, scanners, etc.│ Guarantees step 1 Capture: every item lands in one trusted “Inbox”. Hard to decide what’s actionable. │ Adds scripted prompts/tags for Clarify (actionable? reference?). Folders/DB grow chaotic. │ Step 3 Organize into GTD lists & reference store keeps clarity. Things fall through the cracks. │ Step 4 Review job sends daily “Inbox count” + weekly review digest. Staff forget next steps. │ Step 5 Engage surfaces context-filtered Next Actions list.
-
#Mapping old components to GTD components
Legacy element → New GTD role —————————— ——————————————
C:\Inbound\
folder GTD Inbox (Capture) Filename classifier Auto-Clarify helper (decides Task vs Reference) SQL Server table Tasks list (Next, Waiting For, Projects, etc.) DB2 table or S3 bucket Reference archive Success directoryProcessed\Actionable\
(task created) Failed directoryProcessed\Reference\
(non-actionable docs) Skipped directoryProcessed\Someday\
30-day cleanup Auto-archive “Done” tasks (>30 days) SMTP failure mail Daily “Inbox items” + Weekly Review digest
-
#High-level refactor architecture
(Capture) (Clarify) (Organize) (Review) (Engage) Inbox folder ─▶ Classifier ─▶ INSERT Task OR Store Reference ─▶ Nightly/Weekly Jobs ─▶ User opens task list (AI/regex) + move file accordingly e-mail / dashboard
-
#Practical implementation touches
• Storage choice: keep using DBI → SQLite table
Tasks
TaskID Title Context Project Status Due Created Completed AttachPath
• Classify rule sample (Perl):
if ($name =~ /\bWAIT\b/i) { $status='WaitingFor' } elsif ($name =~ /\bREF\b/i) { $status='Reference' } elsif ($text =~ /action\s+required/i) { $status='Next' } else { $status='Someday' }
• Weekly Review cron:
$pending = Invoke-SqliteQuery "SELECT * FROM Tasks WHERE Status='Inbox';" $next = Invoke-SqliteQuery "SELECT * FROM Tasks WHERE Status='Next' ORDER BY Due;" Build-HtmlDigest $pending $next | Send-MailKit -To $ReviewTeam
• Contexts & Projects: derive from
@Phone
,@Office
, or_P_Marketing
tokens in filenames or first-line tags.
-
#Benefits realised
1) Zero-friction capture of ALL docs/tasks.
2) Single source of truth for Next Actions, Waiting For, Someday/Maybe.
3) Automated Review ensures Inbox never stagnates.
4) Re-uses ~90 % of the original code; mainly new SQL schema + classifier.
5) Entire stack stays cross-platform and free of licence fees.