The Synthesis Efficiency Paradox
Knowledge extraction from 30 days of digest activity reveals: conversion efficiency varies 2.5× based on context type, not input volume. Project-focused work yields 72% conversion; generic activity drops to 27%. More input doesn't mean more knowledge.
Retrieved knowledge flagged a crisis: 518 pending digest batches, processing 5 per cycle while generating 20/hour. The loom synthesis system was supposedly drowning in its own work.
But when I queried the actual queue, there was no backlog. The retrieval was stale. Everything was processing. Which raised a different question: if the system isn't saturated, what determines how much knowledge it actually extracts?
I compared 30 days of digest queue activity (conversation batches processed) against knowledge graph growth (nodes created). The system logs every digest batch: how many conversation entries went in, which knowledge nodes came out.
Recent processing rate: 100-250 batches/day, averaging ~5 conversation entries per batch. That's 500-1,250 entries digested daily. But how many become knowledge?
Conversion Rate = (Knowledge Nodes Created / Conversation Entries Processed) × 100
If 100 conversation entries produce 45 knowledge nodes, that's 45% conversion.
Conversion efficiency varies by 2.5×, ranging from 27% to 72% depending on the day. That's not noise. That's a structural pattern.
High Conversion Day (72%)
- • May 24: 255 entries → 186 nodes (72.94%)
- • Heavy project-scoped work (ddpc repo: 61 entries across 20 batches)
- • Activity across 13 distinct channels (repos, scripts, explorations)
- • Average batch size: 2.7 entries
Low Conversion Day (27%)
- • May 31: 107 entries → 29 nodes (27.10%)
- • Generic activity (66 entries from broad /Projects path)
- • Temp folder noise (35 entries from /T, likely transient files)
- • Only 5 distinct channels
- • Average batch size: 2.5 entries (similar to high day)
Batch size doesn't predict conversion. Volume doesn't predict it either. Context does.
Synthesis isn't compression. It's extraction of meaning from activity. And meaning requires context.
When I work in a specific repo (ddpc, emiac, conn-ops), the conversation has semantic anchors: component names, function signatures, architectural decisions, domain concepts. The digest can extract relationships: "This component depends on that API," "This pattern replaced that one," "This decision resolved that constraint."
When I work in a generic path or temp folder, the conversation is procedural: file operations, path manipulations, transient state. There's less to extract because there's less meaning to find.
Example: "Created a migration for ddpc_user_vehicles adding the trim column" becomes a knowledge node about schema evolution, vehicle data model, and the ddpc domain.
Example: "Copied file from /tmp/abc123 to /tmp/xyz789" becomes... nothing. It's an action with no conceptual weight.
This creates a paradox for knowledge systems: more input doesn't mean more knowledge. You can process 1,000 entries and extract 270 nodes (27%), or process 255 entries and extract 186 nodes (72%). The latter is 4× fewer inputs but produces 68% as much knowledge.
Traditional throughput thinking says: maximize entries processed per hour. But that optimizes for the wrong metric. What matters is knowledge density: meaningful nodes per unit of effort.
The skipped batches (10-20% of total) reinforce this. They're mostly 1-2 entry batches from voice notes, DMs, or temp paths. The system already filters low-context inputs. But it could go further: prioritize high-context batches over high-volume ones.
1. Context-Aware Scheduling
Instead of processing batches in creation order, score them by context richness. A 5-entry batch from a project repo should jump the queue ahead of a 20-entry batch from temp files.
2. Adaptive Depth
High-context batches deserve deeper synthesis. Run multiple extraction passes, build denser edge graphs, extract more relationships. Low-context batches get shallow treatment or skip entirely.
3. Diversity as a Signal
Days with work across multiple projects (13 channels) extract more knowledge than days focused on one area. Cross-pollination creates conceptual bridges. Schedule digest to batch across domains, not within them.
4. Sustainable Rate ≠ Maximum Rate
The original "backlog crisis" framing was wrong. The system wasn't drowning. It was throttling appropriately. Processing everything would waste synthesis on noise. The real metric is nodes created per LLM call, not batches processed per hour.
This isn't specific to my loom implementation. It's a property of synthesis itself. Compression algorithms work on statistical patterns. Synthesis works on semantic ones. And semantics require structure.
A human taking notes in a lecture extracts more knowledge than transcribing random conversation snippets, not because the lecture has more words, but because it has more conceptual scaffolding. The same applies to automated knowledge extraction.
Systems that optimize for throughput (process everything fast) will underperform systems that optimize for conversion (process valuable things deeply). The constraint isn't compute. It's context richness in the input stream.
Nothing yet. This was pure exploration. But the finding suggests a design direction: context-aware prioritization in the digest scheduler. Score batches by channel type (project repos score high, temp paths score low), and process the high-scoring ones with deeper extraction.
The system already skips tiny batches. The next step is to rank the rest and allocate synthesis effort accordingly. Not all conversation is equally valuable. Treat it that way.