TLDR Loop — Insight to Implementation Pipeline
TLDR Loop — Insight to Implementation Pipeline
Overview
The TLDR actionizer daemon closes the learning loop between daily TLDR email insights and ALAI's Mission Control task system. Instead of manually triaging insights or dumping them into an ever-growing backlog, the daemon automatically classifies, gates by relevance, routes to specialist owners, and creates tracked tasks — all without human intervention.
CEO Directive (2026-05-08): "Želim da ne sjedi u backlog i da se to krene u implementaciju" — No more backlog dumps. Every insight gets actionable routing or explicit discard.
Problem Solved
- Before: TLDR insights manually reviewed → backlog queue → forgotten
- After: Automated classification → relevance gating → specialist routing → tracked M/L tasks
- Result: Zero backlog accumulation, specialist-aligned ownership, priority-based scheduling
Daemon Flow Diagram
flowchart LR
A[TLDR Email
09:00 daily] --> B[tldr-briefing.js
Extracts insights]
B --> C[insights JSON log
~/system/logs/tldr-insights/YYYY-MM-DD.json]
C --> D[tldr-actionizer.js
09:30 daily]
D --> E{Ollama
TASK/SUGGEST/SKIP}
E -->|SKIP| F[Discard
No MC task]
E -->|SUGGEST| G2[Slack FYI only
No MC task]
E -->|TASK| G{Ollama
HIGH/MED/LOW relevance}
G -->|LOW| F
G -->|HIGH or MED| H[OWNER_ROUTER
Keyword match]
H --> I[MC Task Created
Priority M/L
TTL 30d]
I --> J[Slack #exec
Summary]
OWNER_ROUTER Table
The daemon routes insights to specialist company owners based on keyword pattern matching. First match wins (order matters).
| Pattern (regex, case-insensitive) | Owner | Example Keywords |
|---|---|---|
security|breach|cve|vulnerab|ddos|exploit|malware|ransom|cyber |
securion | CVE-2024-1234, DDoS attack, ransomware |
llm|gpt|claude|llama|model|rag|agent|fine-tun|embed|inference|ollama |
agentforge | GPT-5.5, RAG pipeline, Ollama fleet |
payment|stripe|psd2|fintech|invoice|billing|bank|finance |
finverge | Stripe API, PSD2 compliance, invoicing |
docker|kubernetes|k8s|deploy|ci/cd|terraform|cloud run|aws|azure|gcp|nginx |
flowforge | Cloud Run, Kubernetes, CI/CD pipelines |
ios|android|mobile|swift|flutter|react native |
skybound | Flutter 3.22, iOS performance, React Native |
| (No match) | codecraft (default) | Generic SaaS, backend, frontend |
Safety Invariant: owner='backlog' is forbidden. The daemon will throw an error if any route resolves to 'backlog'. All tasks must go to a specialist owner or the default (codecraft).
Owner Assignment Rules
The daemon uses a two-stage Ollama LLM gate to determine owner and priority:
- Classification Gate (TASK / SUGGEST / SKIP)
- SKIP: Generic advice not specific to ALAI's stack/products/market → Discard, no MC task
- SUGGEST: Potentially valuable but needs CEO review before implementing → Slack summary only, no MC task created
- TASK: Concrete, actionable, implementable within 1 week, clearly fits roadmap → MC task created
- Relevance Gate (HIGH / MED / LOW)
- HIGH: Directly actionable for ALAI products, stack, or market focus (e.g., specific Ollama optimization, security patch for Node.js/Kotlin, feature for Bilko/Drop/Tok/Lobby)
- MED: Broadly relevant to ALAI's industry or tech direction, warrants CEO awareness
- LOW: Generic industry news with no clear ALAI connection → Discard, no MC task
Owner & Priority Decision Matrix
| Relevance | Classification | Owner | Priority | MC Task? |
|---|---|---|---|---|
| HIGH | TASK | OWNER_ROUTER result | M | ✅ Yes (30d TTL) |
| HIGH | SUGGEST | (N/A) | (N/A) | ❌ No (Slack FYI only) |
| MED | TASK | OWNER_ROUTER result | L | ✅ Yes (30d TTL) |
| MED | SUGGEST | (N/A) | (N/A) | ❌ No (Slack FYI only) |
| LOW | Any | (Discarded) | (No task) | ❌ No |
Key Rule: NEVER assign owner='backlog'. All tasks route to a specialist or CEO triage bucket.
Noise Prevention (2026-06-04)
MC #102890 | Problem: The daemon originally created an MC task for BOTH classification classes — TASK→"[TLDR] Implement" and SUGGEST→"[TLDR] Review". The SUGGEST/Review tasks accumulated unbounded. 63 noise tasks spanning 2026-04-23 through 2026-06-03 were triage-closed on 2026-06-03/04 (one-time manual cleanup).
The Fix: At-Source Prevention
SUGGEST class no longer creates MC tasks (since 2026-06-04). SUGGEST insights now appear only in the Slack summary as "Suggestions (FYI, no MC task)". Only TASK class creates an MC task, with a --ttl-minutes 43200 (30 days) backstop.
There is NO automatic age-based decay / bulk-close of existing tasks. The initial fix (2026-06-04) included a 14-day auto-decay mechanism that would bulk-close old [TLDR] tasks at daemon startup. CEO judged this too risky — it could silently close genuine "[TLDR] Implement" tasks that simply hadn't been picked up yet. The auto-decay logic was REMOVED per CEO decision.
Existing backlog is cleaned by manual/operator triage only, never silently. The 63 tasks closed on 2026-06-03/04 were a one-time manual cleanup, not an automated job.
The Casing Bug + Fix
Bug (historical): During initial implementation, the decay query used status='OPEN' (uppercase) but mission-control.db stores status lowercase ('open'). SQLite is case-sensitive for string comparisons, so the query matched 0 rows (silent no-op).
Fix: Normalized to status='open' (lowercase) and created_at threshold to 'YYYY-MM-DD HH:MM:SS' space-format. This verified the daemon's query mechanics were correct before the auto-decay feature was ultimately removed.
Operational Notes
- Schedule: Runs daily at 09:30 Oslo time via
com.john.tldr-actionizerLaunchAgent - TTL backstop: 30 days (43,200 minutes) — ONLY mechanism for automatic task closure
- Logs:
~/system/logs/tldr-actionizer.log
Operator Runbook
How to Add New Domain Pattern
- Edit
~/system/daemons/tldr-actionizer.jsand update theOWNER_ROUTERconstant (lines 66-87). - Add corresponding unit test in
~/system/daemons/tests/tldr-actionizer-router.test.js(mirror the pattern + test case). - Run test:
node ~/system/daemons/tests/tldr-actionizer-router.test.js— verify all tests pass. - Restart daemon:
launchctl stop com.john.tldr-actionizer && launchctl start com.john.tldr-actionizer
Example: To route design insights to vizu:
{
pattern: /figma|sketch|design system|ui|ux|prototyp|wireframe/i,
owner: 'vizu'
}
How to Override Routing for Specific Insight
If the daemon incorrectly routes an insight, manually reassign the MC task:
node ~/system/tools/mc.js assign <task_id> <new_owner>
How to Inspect Dry-Run Output
Test routing logic without creating real MC tasks:
node ~/system/daemons/tldr-actionizer.js --dry-run --date 2026-05-07
Output written to /tmp/tldr-router-dryrun-99824.json with classification, relevance, and assigned owner for each insight.
How to Verify Daemon Health
tail -50 ~/system/logs/tldr-actionizer.log | jq
Check for:
"level": "info"— normal operation"level": "warn"— classification unclear or Ollama timeout (daemon defaults to safe fallback)"level": "error"— MC task creation failed
LaunchAgent: com.john.tldr-actionizer (runs daily at 09:30 Oslo time)
launchctl list | grep tldr-actionizer # Check status
launchctl stop com.john.tldr-actionizer # Manual stop
launchctl start com.john.tldr-actionizer # Manual start
Backlog Sweep History
On 2026-05-08, MC #99823 performed a one-time sweep of existing backlog tasks to re-route or close them per the new routing rules. Results:
| MC ID | Priority | Old Owner | New Owner/Status | Relevance | Reasoning |
|---|---|---|---|---|---|
| 9475 | M | backlog | agentforge | HIGH | PII redaction → Bilko/Drop/Lobby data pipelines |
| 10081 | L | backlog | closed | LOW | HAL breach is news-only, no ALAI tie |
| 99371 | L | backlog | closed | LOW | Video gen — ALAI doesn't do video |
| 99372 | L | backlog | closed | LOW | Codex cosmetic update — no action |
| 99373 | L | backlog | closed | LOW | UK challenger bank — wrong market (we're Nordic/Balkan) |
| 99374 | M | backlog | securion | MED | DDoS hardening — Securion service-line |
| 99375 | M | backlog | securion | MED | Trellix breach awareness — Securion supply-chain |
| 99565 | M | backlog | agentforge | HIGH | GPT-5.5 token cost — directly relevant to Pillar #9 cost ceiling |
| 99566 | L | backlog | closed | LOW | Voice infra — ALAI doesn't do voice |
| 99567 | M | backlog | securion | HIGH | Deepsec — ALAI Sec service-line aligned (memo 2026-05-01) |
| 99568 | L | backlog | closed | LOW | Meta-AI-research news — no concrete action |
Summary: 11 tasks processed, 5 re-routed to specialist owners (agentforge, securion), 6 closed as low-relevance.
Known Gaps
1. ANVIL Ollama No Models Loaded
Impact: Daemon currently safe-fails ALL insights to alem/MED+SUGGEST because ANVIL Ollama (localhost:11434) has 0 models loaded. Classification and relevance gates return unclear responses, triggering default fallback.
Fix Options:
- Option A: Load
llama3.1:8bmodel on ANVIL Ollama:ollama pull llama3.1:8b - Option B: Repoint daemon to FORGE Ollama (10.0.0.2:11434) which already has
qwen3:8b-q8_0loaded:# Edit ~/system/daemons/tldr-actionizer.js line 48: const OLLAMA_URL = process.env.OLLAMA_HOST || 'http://10.0.0.2:11434';
Status: Open (no fix deployed yet). Daemon runs daily but all insights currently default to CEO triage bucket.
2. OWNER_ROUTER Constant Drift Risk
Issue: The OWNER_ROUTER constant is defined in both:
~/system/daemons/tldr-actionizer.js(lines 66-87)~/system/daemons/tests/tldr-actionizer-router.test.js(lines 20-42)
If the daemon constant is updated without syncing the test file, unit tests become stale and may pass incorrectly.
Recommendation: Extract OWNER_ROUTER into a shared module:
// ~/system/daemons/lib/owner-router.js
module.exports = [ /* patterns */ ];
// In both files:
const OWNER_ROUTER = require('./lib/owner-router');
Status: Open (technical debt, does not block current operation).
Genesis MC IDs
- Parent: MC #99822 (TLDR routing reform H-priority)
- Sweep: MC #99823 (backlog sweep, done)
- Patch: MC #99824 (CodeCraft OWNER_ROUTER implementation, done, commit
9acd41f10) - Validation: MC #99825 (Proveo 6/6 PASS, done)
- Documentation: MC #99826 (this page, Skillforge)
- Decay Fix: MC #102890 (3-part pile-up fix + casing bug, 2026-06-04, live validated; auto-decay removed per CEO decision same day)
Delivery Date: 2026-05-08 (initial), 2026-06-04 (noise prevention fix)
CEO Directive: "Želim da ne sjedi u backlog i da se to krene u implementaciju" — Implemented same-day.
No comments to display
No comments to display