Production-style experiment
X Network Growth & Publishing System
A local system for X research, relationship intelligence, conversation opportunities, publishing, measurement, and learned strategy with explicit approval boundaries.
Repository snapshot
X Network Growth & Publishing System
Research, publishing, and measurement with explicit approval boundaries.
- Commits
- 97
- Approval
- Human
- State
- SQLite
Work done
X Network Growth & Publishing System
The hard part of AI-assisted publishing is not generating text. It is keeping research, recommendation, approval, publishing, and measurement as separate responsibilities.
- Problem: Research, relationship building, drafting, approval, publication, and learning become hard to audit when one agent is allowed to collapse them into a single action.
- Decision: Keep source truth, relationship intelligence, recommendation, writing, approval, transport, measurement, and learning as separate owners. Human approval remains the only path to main-feed publication authority.
- Proof: The current Node.js/SQLite system persists source evidence, strategic relationship profiles/events, conversation opportunities, editorial recommendations, drafts, approval state, queue state, measurements, experiments, and learned rules separately.
- Status: the main-feed path has been exercised in a live pilot; a separate persistent autonomous-reply operator exists, but live autonomous sending remains blocked until its stricter consent, platform-approval, and official-API transport boundary is satisfied.
What it does
The project started as local X research and posting automation. It has grown into a network-growth and publishing operating system: discover useful signals, understand which conversations and relationships matter, turn evidence into writing, publish only through the correct authority path, and learn from measured outcomes without silently rewriting the rules.
The separation is deliberate. Observation is not relationship state. Recommendation is not selection. Selection is not approval. Approval is not transport. Measurement is not proof of causality.
Approval and automation are separate lanes
For the main feed, the rule is unchanged: an AI recommendation cannot create an approved item by itself. A human selects the work, reviews the actual output, and approves it before the scheduler can treat it as publishable.
The same rule continues after publication. Experimental results can suggest a strategy rule, but a suggestion has zero effect until a human explicitly accepts it. Retirement preserves the previous evidence instead of rewriting history.
Engagement is a separate lane. Engage Next ranks active conversations and relevant opportunities, with the human-reviewed path still using exact approval/send. A persistent autonomous-reply operator is also implemented, but it is off by default and requires an explicit persisted Start grant. Live autonomous replies add stricter eligibility: recipient opt-in, a clear opt-out path, recorded X approval for the AI-reply use case, remaining operator budget/health eligibility, atomic claim ownership, and an official X API write transport. The current private GraphQL publisher does not satisfy that final boundary, so live autonomous Start remains blocked.
Publishing became one lane of a network system
Raw audience observations stay separate from strategic relationship state. relationship_profiles and append-only relationship_events track target classes, interaction history, and derived relationship stages, while Engage Next prioritizes useful follow-ups before endless cold insertion.
Opportunity scoring also keeps Reach, Follow, Conversation, and Relationship potential separate. A large viral source can therefore be a weak relationship opportunity, while a smaller technical conversation can be a better place to contribute and build durable recognition.
Source truth still stays separate from workflow history. X Latest, X Momentum, GitHub Trending, Hacker News, and conversation observations are not the same thing as bookmarks, queue state, drafts, handled work, or publication history.
That distinction prevents a common automation bug: treating “I saw this before” as the same state as “I evaluated this,” “I built a relationship here,” “I used this,” or “I published something from it.”
Measurements stay cautious
Published items can accumulate 15-minute, 1-hour, 6-hour, and 24-hour snapshots. Experiments keep their assignments and attribution confidence, while outcome language stays observational when the system cannot establish causality.
Growth Focus, writing strategy, and learned rules can influence later recommendations, but hard content gates, explicit human main-feed approval, and observed health constraints remain authoritative. The goal is not to manufacture a growth claim. It is to preserve enough provenance that later decisions can say what evidence they actually used.
Current operating boundary
The main-feed publisher still uses X’s internal web GraphQL interface rather than the official X API. A live pilot exercised the repaired decision, writing, approval, scheduling, publication, and measurement path, and also exposed intermittent identity-less/no-post transport responses that have to be reconciled instead of blindly retried.
Required media remains blocked until a real attachment path exists. The configurable continuous_scan AI profile is still shown as inactive because no semantic background consumer owns it; that is separate from the implemented autonomous-reply daemon described above.
What I learned
Approval should be a real system boundary, not a confirmation modal added at the end. Delegated automation is easier to reason about when its permissions are explicit.
The architectural boundary is straightforward: source evidence, relationships, recommendation, writing, approval, engagement authority, scheduling, transport, measurement, and learning should remain distinguishable states with distinguishable owners.