Product Management Engineering Content Strategy

ThatStartup_: Automated Content System

A system that writes original startup content, designs the graphics, and publishes to Twitter and Instagram automatically, around the clock. Built without a programming background using Claude as the engineering partner.

Role
Solo. Product Management, Engineering
Stack
Python, Claude API, Playwright, Pillow, Cloudinary, Meta Graph API, Railway
Status
Cost
Under $20 per month to operate
Context
Built without any prior programming experience

ThatStartup_ posts original startup content every hour on Twitter and every 3-6 hours on Instagram, fully automatically.

Building a startup media brand that people actually follow requires showing up consistently with content that is genuinely worth reading. Most automated tools recycle the same ideas, use obvious templates, or produce copy that reads like a machine wrote it.

I had three problems to solve at once. The content problem: how to produce original, specific, interesting posts at a volume no person can sustain. The technical problem: I had no programming background, so every decision had to be made through conversation and iteration rather than prior knowledge. And the business problem: Twitter shut down free API access for posting in 2026, so the obvious approach was no longer viable.

ThatStartup_ solves all three. Original content, built without prior coding experience, running for under $20 a month.

Scope decisions

What I deliberately did not build

Deciding what the system would not do was as important as what it would. Written down before building started.

Engagement automation
Not in scope
No auto-likes, auto-follows, or auto-replies. Growth has to come from content quality, not manufactured engagement signals.
Real-time trend hijacking
Not in scope
Jumping on trending topics produces forgettable content. Original research-backed posts build a more durable audience.
Cross-posting identical content
Not in scope
Twitter and Instagram have different formats, audiences, and expectations. Each platform gets original content generated specifically for it.
Paid promotion
Not in scope
The system is designed to prove that content quality alone can build an audience. Paid reach would obscure whether the content itself is working.

The account is built for founders, operators, and ambitious professionals who want a consistent feed of real startup stories — not opinions or hot takes, but specific accounts of how companies were built, what went wrong, and what actually worked. The kind of content most people would curate manually if they had the time.

24
Tweets per day, automatically
12
Posts per day on Instagram
<$20
Monthly operating cost
24/7
Running continuously since launch

The core innovation

Not the automation. The content engine.

Early versions used hardcoded topic lists. Write about Airbnb. Write about Stripe. At ten posts a day the system exhausted this pool within days and began repeating content. Fixed lists do not scale.

The solution was to stop thinking in lists and start thinking in dimensions. Four independent variables, each with multiple options, combine to produce thousands of unique content angles that never run out.

Era
Happening right now in 2026. Dot-com era 1995-2001. Post-COVID transformation. A prediction for the next decade.
Angle
Untold origin story. Near-death survival. The pricing decision that changed everything. Myth vs reality with real data.
Industry
Fintech. Creator economy. Climate tech. African or emerging market business. AI companies.
Geography
Silicon Valley. Africa. Southeast Asia. India. Latin America. Europe. Not just US-centric stories.

Posting schedule

Frequency as a product decision

Each posting interval was chosen deliberately, based on how long the content takes to produce, how the platform rewards different content types, and what frequency keeps an account visible without overwhelming followers.

Content type
Platform
Frequency
Why
Single tweet
Twitter
Every 60 min
High frequency keeps the account visible in followers' feeds without requiring long-form production on every cycle.
Thread (5 tweets)
Twitter
Every 2 hours
Threads take longer to write and post. Spacing them out gives each one time to be seen before the next one appears.
Quote graphic
Instagram
Every 3 hours
Consistent enough to stay visible, spaced enough that followers are not overwhelmed. Single images are the easiest format for Instagram to surface.
Carousel (6 slides)
Instagram
Every 6 hours
Carousels take more work to produce: six slides generated, all uploaded, then posted in sequence. More effort per post means fewer posts, but carousels also get more reach on Instagram, so it is worth the extra time.

Anti-repetition memory: the system tracks the last 20-50 topics and companies used. Every time content is generated, this history is included with a clear instruction not to repeat it. No company appears more than once in any 48-hour window. Content covers Flutterwave (Nigeria), Koo (India), Northvolt (Europe), and hundreds of stories that would never appear in a fixed list.

System architecture

Two platforms, two approaches

Twitter and Instagram have completely different technical constraints. The solution for each one is deliberately different. Twitter uses browser automation because the API is no longer free. Instagram uses the official Meta Graph API because it is free, stable, and does not require workarounds. Two Docker containers on Railway. Each one isolated from the other.

Content intelligence engine 4 lenses, anti-repetition memory Twitter / X Claude API Tweet and thread text Playwright Chromium browser automation Twitter / X Via session cookies, free Instagram Claude API + Search Quote and carousel text Pillow Image generation, design system Cloudinary Public image hosting Meta Graph API Official Instagram API, free Railway (Hobby, $5/mo) Two Docker containers, auto-deploy

Two separate services running in Docker containers on Railway. Instagram uses the official Meta API. Twitter uses browser automation to bypass the paid API.

Success metrics

Defined before building

These were written down before building started. Each one points to something real, not just a number going up.

Reliability
Uptime
Percentage of scheduled posts that actually publish. The most basic measure. If posts are not going out, nothing else matters.
Cookie refresh frequency
How often Twitter cookies need refreshing. How often manual intervention is needed. If this is low, the system genuinely runs itself.
Content quality
Content uniqueness
No repeated company or story within a 48-hour window. If repetition creeps in, the memory window needs expanding.
Engagement rate
Saves and shares on Instagram, retweets and bookmarks on Twitter. These show that people found the content worth saving, not just scrolling past.
Growth
Follower growth rate
Week-over-week on both platforms. The clearest sign that the content is working, without paying for it.
Cost efficiency
Monthly operating cost
Target: under $20 per month. Railway $5, Claude API $8-15, Cloudinary free, Instagram API free. Every cost decision was made deliberately. This runs cheaply enough to sustain for years.

The real story

Built without knowing how to code

Every technical decision in this system was made without prior programming knowledge. The architecture, the deployment setup, the debugging, the image generation — all of it came from understanding what needed to happen and figuring out how to make it work, one conversation at a time.

This is what building with AI actually looks like in 2026. Not a developer going faster. Someone who could not have built this five years ago, building it now. The limit was never knowledge. It was willingness to work through the problem.

"I had no programming background. So I used Claude as my engineering partner and shipped anyway."

Design decisions

The choices that shaped the system

Each one came from a real constraint or a deliberate tradeoff.

Decision
Alternative
Reasoning
Playwright over Twitter API
Official API
Twitter deprecated free API access for posting in 2026. Browser automation via Playwright costs nothing. From Twitter's perspective it looks like a person posting.
Combinatorial lenses
Fixed topic list
Fixed lists exhaust in days at high posting frequency. Four dimensions with multiple options each produce thousands of combinations. The content never runs out.
Two separate services
Single monolithic bot
If the Instagram service crashes, Twitter keeps posting. Each one deploys from its own GitHub repo without affecting the other.
Pillow for image generation
External design API
Full control over how images look. No external service to depend on, no cost per image, no rate limits. Text auto-sizes to fill the frame regardless of how long the quote is.
Reply-chain threads
Twitter multi-compose UI
Twitter's multi-compose interface has click-blocking issues when automated. Posting each tweet as a reply to the previous one is more reliable and handles delays gracefully.
Random time jitter
Fixed intervals
Posting at exactly the same interval every time looks like a machine. Adding a few minutes of random variation makes the schedule feel natural.
Web search on Instagram only
Web search on both platforms
Instagram posts every 3-6 hours, so the extra search step is fine. Twitter posts every 60 minutes at high volume. Adding a web search to every tweet would hit rate limits and push the monthly cost up significantly.
Crash recovery by design
Let failures propagate
Every post is wrapped in error handling. If one fails, the error is logged and the scheduler moves on. If the whole process crashes, Railway restarts it automatically. One bad post never stops everything else.
Credentials in environment variables
Hardcoded in source code
All credentials live in Railway's environment variables, never in the code. The GitHub repo only contains an example file showing which variables are needed, without any actual values.

Design system

The text is the product

The Instagram design is as simple as possible. No quote marks, no borders, no taglines, no decorative shapes. Just the text on a flat colour background, with the account handle at the bottom left. Everything else was removed.

Quote graphics render at 1080 by 1440px. Text is bold, left-aligned, and auto-sizes from 110px down to 44px so every quote fills the frame regardless of length. Ten rotating colour palettes cover dark and light variants: pure black, deep navy, charcoal, warm cream, forest green, midnight orange, slate lavender, warm stone, deep blue violet, dark amber.

Carousels follow a fixed six-slide narrative arc, hook with a specific fact, four insights one per slide, CTA on the final slide. Slide number shown bottom right. Caption ends with a question to drive comments.

Quote graphics and carousels generated and posted automatically. The design system ensures visual consistency across 10 rotating colour palettes.

Content quality

Style rules applied to every post

These rules are built into every content request. They are not suggestions.

01
Sound human
Plain conversational English, short punchy sentences, line breaks between sentences for mobile readability. No buzzwords: "leverage", "unlock", "synergy", "game-changer", "innovative".
02
Be specific
Real company names, real numbers, real outcomes. "$26B in payments processed", "$15B raised", "30% APAC growth". Vague claims are explicitly ruled out in the instructions.
03
Cover the world
Geography lens includes Africa, Southeast Asia, India, Latin America, Europe. At least one non-US story for every five posts on average. Flutterwave, Koo, Xero, not just Silicon Valley.
04
Never repeat
Anti-repetition memory ensures no company appears twice in any 48-hour window. Instagram posts can reference things that happened this week because the system searches the web before generating each one.

Known limitations

Honest about what can break

01
Twitter cookies expire. When they do, the bot stops posting. Fix takes under 5 minutes: log in to Chrome, run the extraction script, update the Railway environment variable. No code changes needed.
02
Railway memory limits. Chromium is memory-hungry. Running on Railway Hobby requires memory-optimised launch flags to prevent crashes. Documented and stable.
03
Instagram token refresh. Meta long-lived tokens expire periodically. Token refresh procedure is documented. No code changes, only environment variable update.

The real story

Built without knowing how to code

Every technical decision in this system was made without prior programming knowledge. The architecture, the deployment setup, the debugging, the image generation — all of it came from understanding what needed to happen and figuring out how to make it happen, with Claude as the engineering partner.

This is what AI-assisted engineering actually looks like in 2026. Not a developer using AI to go faster. A product thinker using AI to build things that were previously inaccessible. The constraint was not what I knew. It was what I was willing to figure out.

"I had no programming background. So I used Claude as my engineering partner and shipped anyway."

What I learned

Building this without a technical background

01
Fixed lists do not scale. Systems do. The first version used a fixed list of topics and ran out of content in days. Switching to a system of dimensions and combinations meant the content never repeats. Getting the structure right was the real product work.
02
Constraints produce better decisions. The paid Twitter API forced a different approach. Browser automation costs nothing and works at any posting volume. The constraint produced a better solution than the original plan.
03
Isolation is reliability. Running Twitter and Instagram as separate services means a problem with one never affects the other. That decision was made upfront and has already prevented several partial outages from becoming complete ones.
04
Content quality is a product decision, not a technical one. The rules — no buzzwords, real numbers, human writing — are written into every content request. Getting them right required the same thinking as any other product constraint. The code just enforces it.
05
Not knowing how to code is not the barrier it used to be. Every line of code in this system was written with Claude's help. What mattered was understanding what to build and why. That is a product skill. The code is just the output.
Follow @ThatStartup_ on Twitter
Next project
Attendance Management System
View project →