Back to all posts

How we use VM0 to build an AI-powered “Build in Public” workflow

As an early-stage startup in the AI space, building in public is a good strategy. In practice, building in public means one thing: you need to show what you’re doing every day.

That includes:

It is not just launches or milestones but the day-to-day work.

The real problem: we didn’t know what to post

In many cases, our biggest challenge running our X account wasn’t consistency or tooling. It was much simpler:

We didn’t know what to post. Especially when you’re running an introverted team that focuses more on building than selling or sharing opinions. However, daily communication is already a form of creation. Yet none of that was being translated into something we could confidently share.

Inspiration doesn’t come from research. It comes from reality.

We eventually realized something obvious in hindsight:

Real inspiration comes from daily work, not from content planning or from what’s happening on X, where people keep talking about what’s hot or the latest research.

For us, the most honest signals were already there:

  1. Slack

    Daily discussions, trade-offs, decisions, and moments of clarity.

  2. Notion

    Documents being written, rewritten, and refined. Product thinking in motion.

  3. GitHub

    What we actually shipped, fixed, or changed. Not intentions, but execution.

This is what building in public is made of.

Turning the idea into an agent with VM0

VM0 is an agent builder. Instead of asking AI to “write tweets,” we gave it a more grounded task:

Observe what actually happened, organize it, and present it for human judgment.

Using VM0, we encoded this idea into an agent defined by AGENTS.md and vm0.yaml

The agent does the following:

Analyze Slack messages and GitHub activity to generate viral X (Twitter) posts for building in public, then sync to Notion.

The agent will:

1. Gather content from multiple sources:
   - Slack channels (last 24 hours)
   - GitHub org repos (recent commits, PRs, issues, releases)

2. Identify "building in public" themes:
   - Product launches, technical wins, milestones
   - Behind-the-scenes insights and decisions
   - Architecture choices, performance work
   - Failures, pivots, developer lessons
   - Open source and community contributions

3. Craft 2–3 post variations per theme:
   - Single posts or short threads
   - Hook → Context → Value → CTA
   - Concrete details, no filler

4. Generate a markdown report with scores and recommendations

5. Sync everything to a Notion database as drafts

This was not something I literally wrote myself. It was co-piloted through ongoing chats with VM0.

The runtime configuration is straightforward:

version: "1.0"

agents:
  build-in-public:
    provider: claude-code
    instructions: AGENTS.md
    skills:
      - slack
      - notion
    environment:
      SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
      NOTION_API_KEY: ${{ secrets.NOTION_API_KEY }}
      NOTION_DATABASE_ID: ${{ secrets.NOTION_DATABASE_ID }}

The agent asks me to fill in table with those as a database

TitleContentTypeStatusDateSourceViralty scoreOrginal contentRecommendedPriority

After running the agent, I got the following:

building_in_public.png

Making it a daily habit with GitHub Actions

We then wired this agent into a scheduled GitHub Action following the VM0 workflow:

https://blog.vm0.ai/en/posts/vm0-github-action

Every weekday after work, we receive a report. A daily summary of what actually happened, translated into possible public narratives.

You can check out our team workflow. https://github.com/vm0-ai/team-workflows/tree/main/build-in-public

Screenshot 2026-01-15 at 7.37.33 PM.png

Human in the loop

However, we didn’t directly connect to the X API for auto-publishing. No auto-published posts. No content pushed blindly to X.

The agent didn’t make us post more. It made us pay more attention.

Before posting, I checked with our team:

  1. Is this okay to publish and let people know about it?
  2. Is it true?
  3. Is it solid?
  4. Are we okay to ship this?
  5. Is this for real?

Then I manually edited the post and clicked publish. X is full of bots. We refuse to be one.

We intentionally stopped short of full automation: Always a human in the loop.

AI is a co-pilot, not a spokesperson. X already has enough synthetic voices.

Building in public comes with responsibility

This is a good example of AI marketing, combining human judgment with an AI co-pilot. In this case, we use GitHub Actions for automation. We’re also actively building native cron jobs in VM0, so you’ll be able to build VM0 agents and schedule tasks directly.

Stay tuned.

Join the waitlist and make your own agents.

Related Articles

Stay in the loop

// Get the latest insights on agent-native development.

SubscribeJoin Discord