Skip to content
PostShelf

How Cal.com builds in public on X

The PostShelf team6 min read
  • Build in public
  • X
  • Case study
Build in publicHow Cal.com builds in public on X

Cal.com is an open-source scheduling company competing with a product most people already have installed. It did not out-spend anyone on ads. It out-posted them — with two accounts doing two completely different jobs on the same timeline.

If you only look at the follower count, the lesson is invisible. The interesting part is the split: the company account behaves like a changelog with a personality, and the founder account behaves like a columnist who happens to run a scheduling company. Neither one could carry the strategy alone, and most indie products try to make one account do both jobs.

Below are four real posts from the Cal.com library, with what each one is actually doing structurally. Every embed is the live post — click through and read the replies, that is where the real feedback loop is.

1. The official account ships receipts, not adjectives

The default failure mode of a company account is announcing intentions. “Excited to share what we’ve been working on.” “Big things coming.” Nobody can do anything with that. The Cal.com account posts the opposite: a version number, a list of what landed, and a screenshot of the thing working.

Cal.com@calcomX
A release post that reads like a changelog entry: version, contents, visual proof. It is repeatable every two weeks without sounding like an ad.

This format survives repetition, which is the whole point. A launch post can only be used once. A changelog cadence can run every week for three years, and each entry compounds — followers learn that the product moves, which is the single hardest thing for a small company to prove to a buyer. If you want to see how many teams run this exact pattern, filter the library to feature posts across every product.

2. Positioning gets posted, not just written on the site

Most teams write their positioning once, put it on the homepage, and never say it out loud again. Cal.com repeats its position — open source, infrastructure rather than a link-in-bio scheduler — directly in the feed, where the people evaluating alternatives actually are.

Cal.com@calcomX
Positioning stated in public. The competitor is implied rather than named, so the post reads as a point of view instead of a swipe.

Note what it does not do: it does not name and attack the incumbent. A post that argues for a worldview attracts the people who already half-believe it. A post that attacks a competitor mostly attracts that competitor’s customers coming to argue. The first builds a list; the second builds a thread.

3. The founder account carries the opinions

Company accounts are structurally bad at opinions. Anything sharp gets sanded down by the fact that a logo is saying it. So the sharp things go on the founder account, where a first-person claim is allowed to be contestable.

Cal.com@peer_richX
Peer Richelsen on how the company builds. This is the kind of post the logo account cannot make — it needs a person behind it to land.

This is the asymmetry indie hackers under-use. You are not competing with a company’s marketing budget; you are competing with its inability to say anything specific. A one-person company can publish an opinion on Tuesday that a 200-person company would need three weeks of review to approve — and by then it would say nothing. We went deeper on the split in founder account vs official account.

4. Jokes are part of the distribution plan

Build-in-public accounts that only post progress updates flatten out. Every post asks the reader for the same thing — attention for your roadmap — and the audience eventually stops paying. The fix is not posting less; it is varying what you are asking for.

Cal.com@peer_richX
A joke from the founder account. It costs nothing, travels further than a release note, and keeps the account from reading like a press feed.

Humour is not a growth hack on its own, but it is a reach subsidy. A post that gets shared by people who will never buy your product still puts your name in front of people who might. Just keep it on the personal account unless you have a very clear brand voice — the risk profile is different when a logo tells the joke. That trade-off gets its own breakdown in memes as a growth channel for dev tools.

What to steal

  1. 1Split your accounts by job, not by formalityOfficial = shipped things, proof, support. Founder = opinions, process, failures, jokes. Do not post the same thing on both.
  2. 2Pick a repeatable release formatVersion, three bullets, one screenshot. Design it so you can fill it in twenty minutes, because you will need to do it fifty times.
  3. 3Say your positioning out loud, monthlyArgue for the worldview that makes your product the obvious choice. Never argue against a named competitor.
  4. 4Budget a third of posts for non-asksJokes, other people's work, lessons from things that went wrong. These are what keep the other two-thirds readable.

The uncomfortable part

Cal.com’s cadence is only impressive because it is uninterrupted. There is no clever trick underneath — the posts are ordinary, and there are simply a lot of them, spread across years. The founders kept posting through the stretch when nobody was reading, which is the part that cannot be copied in a weekend.

  • If you can only manage one account, make it the founder account. It is the one that gets replies.
  • If you can only manage one format, make it the release note. It is the one that proves the product is alive.
  • If you can only manage one post a week, make it on the same day every week. Predictability is most of what “momentum” means to a reader.

Browse the rest of the account side by side on the Cal.com product page, or open the full post library to compare it against the other teams running the same playbook. If a product you want to study is not in there yet, request it — requests come with the Pro plan on pricing.

See the posts behind the playbook

PostShelf collects real X, Instagram, TikTok and Reddit posts from products that made it, organised by product and by the account that posted them. Free while we build the library.

Keep reading