Back to Content Hub
September 26, 2025
10 min read
Growth Notes

i tried to take two days off dev to post on twitter and accidentally built this

i paused shipping features to pressure‑test posting cadence, tone, and link strategy. somewhere between spreadsheet math and a few too many charts, i ended up building a live growth dashboard with forecasting, tone analysis, and revenue modeling.

what the model answers
  • when do i hit “join eligibility”: 5M impressions across any trailing 90‑day window?
  • given rpm and eligible‑view assumptions, when does 30‑day revenue cross $500 and $1000?
  • how sensitive are those dates to cadence (q) and baseline (b)?
live model
forecast + monte carlo
data
twitter csv export
tone
auto multi‑label
revenue
$/k impressions

the plan was simple: ship less, post more, learn faster. i wanted to see what actually moves impressions and follows on a fresh account without the survivorship‑bias advice. so i pulled the official twitter analytics CSV, parsed it, and started tagging posts by structure and tone. the rabbit hole ended with a compounding model that projects daily impressions, estimates monetization windows, and surfaces posting patterns that deserve more reps.

the pipeline: csv → features → patterns

what gets extracted per post
  • impressions, engagements, likes, replies, reposts, new follows
  • engagement rate per post and per day
  • link detection (t.co vs external), length stats (chars/words)
  • multi‑label tone tags: reply, thread, question, announcement, helpful, funny, shitpost, hot‑take, feedback, celebration, ai, code, design, product, marketing, crypto, video, image
  • global “good vs bad” tagging based on overall medians and quartiles

the dashboard builds a calendar of activity, surfaces top performing posts, and compares word frequency for “good” vs “bad” tweets to spot language that correlates with lift. there’s also a scatter by character count with a median trend line so you can see if your sweet spot is tight or long‑form.

the growth model (simple on purpose)

deterministic core
V(t+1) = q × b × (1 + k) + r × V(t)
  • q: posts/day, can auto‑derive from your history
  • b: baseline impressions/post (median window), with optional top‑tail trim
  • k: virality lift multiplier
  • r: recirculation (yesterday’s reach that spills into today)
uncertainty + hits
monte carlo bands with p_hit (probability a post pops) and L (lift factor)
followers coupling (optional)
b scales with followers: b(t) = b0 × (F(t)/F0)α; F grows by g per post

the settings panel in the dashboard lets you auto‑fit cadence from your history, calibrate the baseline window to recent performance, and flip followers compounding on/off. for each milestone, the tooltips show the params used, blended RPM assumptions, and the projected revenue at that point.

what i learned (so far)

  • consistency compounds. q matters more than perfect topics when b is stable.
  • link drag is real. tweets with external links underperform unless the copy is unusually tight.
  • “helpful” and “product” tones pull above baseline. dunking and generic hot‑takes are unreliable.
  • short wins attention, long earns trust. length trendline made the tradeoff obvious.
want to poke the data yourself?

the dashboard reads your twitter analytics export and re‑computes everything locally. it tags tones, groups by day, flags good/bad, and projects forward with your own cadence. if you want me to adapt it to your account or add metrics, ping me.

i took time off dev to test posting theories and ended up shipping a tool that helps me post better. marketing by building is still building.