Skip to content
Ahmed Hamza

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.

Node.jsSQLiteGraphQLAI runtimesHuman-in-the-loop workflowsAutomation

Repository snapshot

X Network Growth & Publishing System

Research, publishing, and measurement with explicit approval boundaries.

Commits
97
Approval
Human
State
SQLite

Work done

Editorial research + recommendationsHuman approval before publishMeasure → learn loop

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.

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.

Human and AI publishing authority loop Source evidence moves through AI recommendations, human selection, writer gates, human approval, publication, measurement, and suggested learned rules that require human acceptance. Human+AI publishing / authority loop AI CAN RECOMMEND · HUMANS GRANT AUTHORITY SourcesX · GitHub · HN AI editorialrecommendations Humanselects Writer+ hard gates Humanapproves Publishapproved queue only Measure15m · 1h · 6h · 24h Suggested rulesevidence-backed · zero effect Human accepts / retireshistory stays visible recommendation != selection != approval != transport · measurement != causality
Recommendation, approval, transport, measurement, and learning keep separate owners.

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.