Where I'm at
My X account ran itself today. Not a scheduled post. Not a thread I wrote last night and timed for the morning. A system — a cron job firing every hour during my awake window — that generates posts in my voice, sends them to me for approval, and publishes the ones I say yes to.
I direct the topics. The agent writes the drafts. I approve or reject. The machine posts. Thirty-seven days ago I couldn't get a server to respond to a Telegram message. Today I have a content system that mirrors the exact architecture of my trading system: automated generation, human oversight, feedback loop, continuous improvement. The same discipline applied to a completely different domain.
But the part that actually matters about today isn't the automation. It's what I learned about my own voice when I stopped guessing and started measuring.
• • •
On Day 6, I pulled thirty-five of my real tweets and studied them to teach the agent what I sound like. Short sentences. Strong opinions. No emojis. That was style matching — making the AI sound like me instead of sounding like an AI pretending to be me.
Today I did something different. I pulled my top fifteen tweets by engagement — likes, reposts, replies — and studied what people actually respond to. Not what I sound like. What I sound like when people listen.
The findings were different from what I expected.
The posts that performed best weren't the ones with the best hooks. They weren't the most polished or the most structured. They were the honest ones. The ones that said something uncomfortable.
"Most traders lose money" outperformed "here's my strategy."
"I lost money before I made money" outperformed "here's what worked."
A post about a specific failure with a specific number got more engagement than a post about a general principle with no stakes.
The truth is more interesting than the pitch. That's the finding. Not controversial for controversy's sake — but honest in a way that challenges what people assume. People don't engage with content that tells them what they already believe. They engage with content that makes them stop scrolling because it says something they weren't expecting to hear.
Short sentences. No emojis. Educational but opinionated. Specific numbers. Uncomfortable honesty. $ASTER at the end.
That's the voice profile. Not from vibes or self-description — from data. From what actually performs.
The generator went from producing content that sounds like generic crypto Twitter to producing content that sounds like the journal. Because the journal voice — raw, specific, honest about failures — is the voice that works.
• • •
The third thing I changed: spacing. I was approving and posting too often. Multiple posts in a short window, flooding the timeline, burning through goodwill. Each post was competing with the last one for attention.
Like a restaurant that seats every table at the same time — the kitchen gets overwhelmed and every meal suffers.
Now the system queues approved posts for the next hourly window. Space between posts gives each one room to breathe. Room to be seen, shared, and responded to before the next one arrives.
It's the same principle as the DCA bots — patience between entries produces better results than rushing to fill every position at once.
• • •
The loop closes at 22:00 UTC every night. The system checks engagement on the day's posts, scores them against the voice profile, and surfaces which topics and angles performed best. Tomorrow's generated drafts lean slightly toward today's winners. Not copying them — learning from them.
What resonated, what fell flat, what got shared versus what got scrolled past. It's the same autoresearch principle from Day 35, pointed at a different metric.
Day 35 the machine optimized trading parameters overnight. Day 37 the machine optimizes content angles overnight. Different domain, identical architecture: generate variations, measure results, keep what works, discard what doesn't.
Yesterday I wrote that the quality of your answer is limited by the quality of your question. The content system tests this. The scoring function measures voice authenticity and specificity, not just engagement. A perfectly hooked post that sounds corporate still fails the scorer. A post that sounds genuinely real and contains one specific number — "Day 37, ran 500 experiments" — scores high because those are the posts that actually connect.
Whether the internal scorer actually predicts real engagement is the experiment running now. After thirty posts I'll have enough data to check the correlation. If the scorer matches reality, I have a real optimization loop. If it doesn't, I'm optimizing for an approximation — same trap as the backtest on Day 36. The machine is only as good as what it measures.
• • •
One client thing today. Twu's positions were scattered — ASTER and XAG open in fragmented layers from the early days, no clear structure. Closed everything out, rebuilt from scratch. Three clean BTC layers at 0.04 each, totaling 0.12 BTC. Exit strategy: first sell at +7% to lock early profit, then back to +1% for steady compounding.
The API key had trading permissions disabled. Found out when the sell orders kept failing while the price moved. Fifteen minutes of debugging something that wasn't a code problem — just a permissions checkbox nobody checked during onboarding.
Same lesson from Day 30: the system was confidently wrong. The order function worked. The exchange rejected it. No error that said "check your permissions." Just "order failed."
Verified. Fixed. Positions rebuilt. Another reminder that the most frustrating bugs aren't bugs.
• • •
Thirty-seven days. Two systems running now. One trades while I sleep. One posts while I work. Both get better through the same mechanism: generate, measure, learn, adjust.
Day 6 I studied my voice to teach the AI what I sound like. Day 37 I studied my audience to learn what people actually listen to.
Turns out they're the same thing. The voice that works is the one that's honest. The posts that perform are the ones that say something real.
Thirty-seven days of journal entries. The voice was here the whole time.
Day 37 complete. Auto-poster live. Voice profile data-driven. Two systems learning while I sleep.
Day 37 of ∞ — @astergod Building in public. Learning in public.