Autonomous content generation, audience analysis, and longitudinal engagement tracking for values-driven political communication.
AXIOM is an autonomous political engagement system built to amplify authentic values-driven commentary on Australian politics. It operates as an always-on AI agent running on a private server, managing a Twitter/X account with three coordinated activity layers — original content generation, targeted intellectual engagement, and broad topic-level visibility.
Unlike simple scheduling tools, AXIOM treats every interaction as a data point in a longitudinal study. It is simultaneously a communications platform and a research instrument — tracking exactly what messaging style, emotional register, topic framing, and timing drives engagement with specific audience segments.
Scans AU political news feeds in real time. Generates opinionated, voice-consistent commentary. Posts 2–6 times daily at irregular intervals within peak engagement windows.
Monitors 10 curated AU left intellectuals. Identifies their most substantive recent tweets. Generates intellectually engaged replies — extending arguments, asking productive questions, adding the behavioural economics layer.
Searches hashtags and keywords across 8 topic domains. Finds posts gaining traction from non-curated accounts. Comments to build visibility with audiences who don't yet know the account.
All times in Sydney (AEST/AEDT). The system runs autonomously — no human intervention required.
Every tweet posted by the system is logged with the following dimensions — all available for later correlation against engagement outcomes.
| Dimension | Values | Source |
|---|---|---|
| Emotional Tone | earnestwrypassionatesorrowfulsardonichopefulmeasuredprovocative | LLM-classified |
| Sentiment | criticalsupportivequestioninghopefulangrycelebratoryneutralambivalent | LLM-classified |
| Style Register | casualanalyticalliterarypunchyconversational | Computed |
| Sophistication Level | 1 (accessible) → 4 (specialist) | Computed from word/sentence complexity |
| Emotion/Reason Ratio | 0.0 (pure reason) → 1.0 (pure emotion) | Lexicon-computed |
| Rhetorical Device | rhetorical_questionironystatistic_anchorreframecall_to_actionparadox | Computed |
| Content Type | original_opinion / news_reaction / thinker_reply / topic_scan_reply / quote_tweet | System-assigned |
| Posting Context | breaking_news / ongoing_issue / policy_debate / unprompted | System-assigned |
| Timing | Hour of day (0–23), Day of week (Mon–Sun) | System timestamp |
| Topic (Hierarchical) | Domain → Category → Subcategory (see Section 3.2) | Keyword-classified |
| Message Metrics | Word count, char count, sentence count, avg word length, avg sentence length, hashtag count, has_question, has_link | Computed |
Topics are classified at three levels. Example paths shown below.
Every 30 minutes, the engagement tracker polls the API and appends a snapshot to each tweet's record. This gives a time-series of engagement growth — not just a point-in-time count.
| Metric | Description | Update Frequency |
|---|---|---|
| Likes | Cumulative likes on the tweet | Every 30 min |
| Reposts | Retweets (weighted 2x in engagement score) | Every 30 min |
| Replies | Replies received | Every 30 min |
| Quotes | Quote tweets from other accounts | Every 30 min |
| Impressions | Total views (when available via API) | Every 30 min |
| Composite Score | likes + (reposts × 2) + replies | Computed on query |
Every user who interacts with the account is entered into a longitudinal panel. Returning users receive a new observation appended to their record — building a true panel dataset that grows in both size and depth over time.
is_imputed: true with confidence scores and basis strings.
| Field | Source | Imputed? | Confidence |
|---|---|---|---|
| User Hash | SHA256 of Twitter ID | No | — |
| Follower Count | Twitter public API | No | 100% |
| Account Age | Twitter created_at | No | 100% |
| Country | Location string → keyword match | Sometimes | 45–85% |
| AU State / City | Location string → keyword match | Sometimes | 60–85% |
| Gender | First name database + bio pronouns | Yes | 70–90% |
| Age Range | Bio signals + account age heuristics | Yes | 40–65% |
| Political Lean | Bio keyword signals | Yes | 50–88% |
| Profession | Bio keyword signals | Yes | 20–62% |
| Issue Interests | Bio keyword signals | Yes | 20–68% |
| Interaction Count | Panel observations | No | 100% |
The following illustrate the kind of analysis available once the panel accumulates data. Numbers shown are illustrative projections based on typical AU political account growth trajectories.
Which tone drives the most engagement? Composite score = likes + (reposts × 2) + replies.
Daily composite engagement score (likes + reposts×2 + replies) and follower growth over the first 30 days. Projected trajectory based on typical AU political account benchmarks.
How the emotional register of posts shifts week by week. The system varies tone — tracking which sentiment mix correlates with peak engagement periods.
How much content is posted per domain each week — driven by news cycles. War & Peace spikes when conflict escalates; Economy spikes around budget season.
Each point is one tweet. X-axis = emotion ratio (0 = pure reason, 1 = pure emotion). Y-axis = composite engagement score. Reveals the optimal emotional register for this audience.
Radar chart comparing what topics the audience cares about (inferred from bio signals) vs what we're posting about. Gap analysis — where are we under- or over-serving audience interests?
Tracks propagation topology — how content moves through the social graph. Nodes are classified by structural position (influence tier, network role) without individual identification. All actor data is irreversibly hashed.
Who is spreading our content? Classified by follower count. Macro = 100k+, Mid = 10k–100k, Micro = 1k–10k, Nano = 100–1k.
How many hops does content travel? Hop 0 = our original post. Hop 1 = direct repost. Hop 2+ = reposts of reposts.
What types of nodes are engaging with us? Broadcasters have asymmetric reach. Peers are balanced. Listeners consume but rarely amplify. Bridges connect otherwise separate clusters.
Network events per topic domain. Shows which issue areas generate the most propagation activity — not just engagement on the original post, but onward spread through the graph.
Force-directed graph — hover nodes for details, filter by topic or influence tier, trace propagation paths
| Domain | Category | Subcategory | Posts | Avg Engagement | Best Tone |
|---|---|---|---|---|---|
| War and Peace | Active Conflicts | Gaza / Palestine | 14 | 18.4 | passionate |
| Economy | Housing | Rental Crisis | 18 | 15.1 | wry |
| Environment | Fossil Fuels | Greenwash | 11 | 13.7 | sardonic |
| Social Policy | Disability | NDIS | 9 | 10.2 | earnest |
| Domestic Politics | Political Parties | Greens | 12 | 9.8 | hopeful |
| Indigenous Affairs | Sovereignty | Treaty | 7 | 8.9 | earnest |
| Window | Avg Engagement | Impression Rate | Recommendation |
|---|---|---|---|
| 07:00 – 09:00 (Morning commute) | 12.4 | High | Priority |
| 20:00 – 22:00 (Prime evening) | 11.8 | Very High | Priority |
| 17:00 – 19:00 (Evening commute) | 9.2 | High | Good |
| 12:00 – 13:00 (Lunch) | 8.7 | Moderate | Good |
| 09:00 – 12:00 (Mid-morning) | 5.4 | Low | Moderate |
| 22:00 – 01:00 (Late night) | 4.1 | Low | Low |
* Gender inferred from first name + bio pronouns. All imputed — tagged as estimated.
* Age inferred from bio signals + account age heuristics. Low-confidence estimates.
Every interactor carries a composite panel_weight that corrects for bots, volume bias, and account maturity before any aggregate analysis.
is_imputed: trueAsk Albert at any time for an analytics report. The following queries are immediately available:
| What you want | What to say to Albert |
|---|---|
| Full aggregate report | "Show me the Twitter metrics" |
| What tone is working best | "Which emotional tone is getting the most engagement?" |
| Best topics | "What topics are performing best on the account?" |
| Audience profile | "Tell me about the audience engaging with the account" |
| Best posting times | "When should I be posting for maximum reach?" |
| Top tweets | "What are the top performing tweets this week?" |
| Trend over time | "Show me the 30-day engagement trend" |
| Topic breakdown | "How is housing content performing vs climate content?" |
python3 /home/doronski/.openclaw/workspace/services/twitter/campaign/tweet_log.py metrics at any time for a full JSON analytics export.