Skip to main content
All Stacks
The Next New Thing

How Nevo David grew Postiz from $17K to $45K MRR by going CLI-first

MRR (current)$45KPer founder, on the podcastas of Apr 2026
MRR (start of year)$17Kas of Jan 2026

Why this story matters

Most "open source SaaS" stories plateau at $5–10K MRR and stay there. The code is public, the community grows, but revenue stays stuck because open-source users expect everything for free and cloud users churn the moment a competitor drops prices.

Nevo David found a different path. By the time he appeared on The Next New Thing in April 2026, Postiz had grown from $17K to $45K MRR in a single year — a 2.6× increase — without a sales team, without paid acquisition, and without a pivot. The growth came from a single counterintuitive decision: making Postiz work beautifully from the command line so that AI agents could use it without human involvement.

This is that story.

The starting point

Postiz launched as an open-source alternative to Buffer and Hootsuite. The value proposition was straightforward: schedule social posts, manage multiple accounts, and keep your data on your own infrastructure if you wanted to. The code was clean, the Docker setup was reasonable, and within a few months there were thousands of GitHub stars.

But GitHub stars don't pay rent. Nevo converted the community into a cloud offering early, and by January 2026 the business was doing $17K MRR. Good progress, but not quite the escape velocity he was looking for. The self-hosted users loved the product. The cloud users were stickier than expected. Something was working — he just needed to figure out what to amplify.

The pivot: agents, not users

The inflection point came from a single Slack message. A power user had built a custom script that called Postiz's internal API to automatically schedule content generated by Claude. The script was janky — it reverse-engineered undocumented endpoints — but it was doing real work. The user was running a newsletter and a LinkedIn presence for three different clients, all scheduled and published without touching a browser.

Nevo's response was to make the janky thing beautiful. Over six weeks, he:

  1. Documented every API endpoint properly with OpenAPI specs
  2. Added a first-class CLI that mirrored the API 1:1
  3. Wrote a postiz run command that could execute a YAML workflow file
  4. Published a GitHub Action that wired Postiz into any CI/CD pipeline

The bet was that if you made the plumbing invisible, agents would route around the UI entirely. And that's exactly what happened.

How the CLI changed the economics

Before the CLI, a Postiz cloud customer was paying for convenience: a nice dashboard, a calendar view, drag-and-drop scheduling. These are features Buffer and Hootsuite do well, at lower prices, with years of polish. Competing on UI was a losing game.

After the CLI, the Postiz customer was different. They were a developer running a content operation with Claude or GPT-4o at the center. They needed:

  • Deterministic, scriptable scheduling (the CLI)
  • Webhook support for triggering posts from other systems (already in Postiz)
  • A stable API they could trust not to change shape (the OpenAPI spec)
  • Multi-account management with per-account rate limiting (Postiz's core feature)

These customers didn't churn for Buffer because Buffer's CLI is an afterthought. And they upgraded to higher plan tiers immediately because they needed API rate limits that matched production workloads.

The numbers behind the 2.6×

Between January and April 2026, three things changed:

ARPU went up. The average revenue per user increased as CLI-native customers skewed toward the top two tiers, which included higher API call limits and webhook support. The proportion of customers on the base tier dropped from 68% to 41%.

Churn went down. Customers who integrated Postiz into an agent workflow were dramatically less likely to cancel. When you've built a system that depends on a tool, switching cost is real. Monthly churn dropped from 8.2% to 3.1% among CLI-activated customers.

New customers came in differently. Before the CLI, most sign-ups came from the GitHub readme. After the CLI, a measurable share started arriving from GitHub Action marketplace searches, tutorial blog posts about LLM-powered content pipelines, and Twitter threads from developers showing off their automation setups.

The MRR math: $17K at the start of the year, $45K by April. Most of the growth came in Q1 2026, correlating directly with the CLI release timeline.

Tools in the stack

Nevo runs a lean operation. The tools he mentioned during the episode, and how they fit together:

Postiz is the core product — social scheduling, multi-account management, webhook dispatch, and the CLI that started the whole transformation.

Claude (claude-3-5-sonnet) handles content generation. His setup uses Claude to summarize a list of topics (fed from a simple text file updated weekly), generate three social post variants per topic, and pick the highest-scoring one based on a custom rubric. The rubric is a prompt that scores for specificity, for avoiding buzzwords, and for including a concrete number or example.

GitHub Actions runs the whole workflow on a schedule. A cron job fires daily, the action calls Claude via the Anthropic API, pipes the output into postiz run, and posts are queued. No server to maintain beyond the Action itself.

Linear tracks the content calendar at a higher level — themes per month, any manual overrides, campaign-specific content that the automated system should skip. The GitHub Action checks Linear for overrides before running the generation step.

Plausible handles analytics. Nevo specifically mentioned switching away from Google Analytics because he wanted clean data without the GDPR complexity. He tracks click-through from social posts back to the Postiz homepage using UTM parameters baked into every scheduled post.

What you can copy

The framework generalizes beyond social media scheduling. The pattern is:

  1. Find the power users who are already automating your product manually
  2. Make the automation first-class (CLI, stable API, OpenAPI spec, GitHub Action)
  3. Price for the automation use case specifically (higher limits, webhook support)
  4. Let the agent-native customers market for you via open-source workflows and tutorials

The specific implementation for Postiz — the YAML workflow format, the postiz run command, the Action marketplace listing — is all open source. The companion tutorial on this site walks through building a competitor-tracking agent with exactly this setup.

The counter-case: what doesn't work

Nevo was candid about what he tried that didn't work:

Premium templates marketplace: he spent three weeks building a template gallery for social posts. Zero uptake. The agent-native users didn't want templates; they wanted prompt control. The non-technical users didn't trust AI output enough to use pre-made templates. The feature was quietly removed.

Analytics integrations: he built a deep integration with a major analytics platform (he declined to name it). The integration required users to OAuth into the analytics account, which added friction at exactly the wrong moment in the onboarding flow. Sign-up completion dropped 12% while it was enabled. Rolled back.

Community forum: the forum attracted support requests and feature debates, not user-generated content. He shut it down and redirected support to GitHub Discussions, which have the advantage of being searchable and indexable by Google.

Listen to the source

The full episode is on YouTube via The Next New Thing with Andrew Warner. Nevo goes deeper on the Linear integration, the content rubric he uses with Claude, and why he chose to stay bootstrapped rather than raise a seed round. The transcript is available and was used to verify the numbers in this piece.

A companion tutorial — "Build a daily competitor-tracking agent with Postiz CLI" — is available on this site if you want to implement the setup he describes.

Tools in this stack

p
postiz

The product itself — open-source social media scheduler

Tutorials inspired by this stack