Inspiration

I kept watching solo creators (indie hackers, YouTubers, LinkedIn builders) struggle with the same problem. They would open ChatGPT, ask for content ideas, get a wall of text, copy-paste it into Notion, and still have no real plan. The problem is not AI access. It is structured output you can actually execute on.

I wanted to build something that takes your raw creator identity and turns it into a visual strategy you can act on immediately, not just read and forget.

What it does

CreatorOS takes your niche, audience, goals, tone, and writing samples and transforms them into a fully structured content strategy. It streams live, word by word, and automatically builds a color-coded Miro board.

Key features:

  • Live AI Streaming: watch your strategy generate in real time via SSE
  • Color-coded content pillars: structured post ideas with hooks, formats, and summaries
  • AI Content Coach: chat inside every idea card to build outlines, get opening lines, and develop the concept further
  • Auto Miro Board: programmatically creates a visual board with a hero banner, pillar columns, native cards, and a stats footer
  • Brand Voice Memory: saves your creator profile so returning visits pre-fill automatically

How I built it

Architecture:

  • Next.js 14 (App Router) handles the orchestration API with Server-Sent Events for real-time streaming
  • Featherless AI runs Llama 3.3 70B Instruct with an OpenAI-compatible streaming API
  • Zod validates the LLM JSON output with a 2-retry loop that feeds schema errors back to the model
  • Miro REST API programmatically builds the board using shapes with exact hex colors, native cards with cardTheme, and tinted column frames
  • CREAO informed the brand memory architecture and intake flow design. The localStorage brand brain system was directly inspired by CREAO's persistent memory patterns
  • Deployed on Vercel

Model fallback chain: Llama 3.3 70B -> Qwen 32B -> Qwen 14B -> Qwen 7B -> Mistral 7B. The catch wraps the entire for-await loop and not just the create call, because Featherless capacity errors throw during stream iteration.

Challenges I ran into

1. SSE and model fallback: capacity errors from Featherless throw during stream iteration, not during the API create call. Standard try/catch around create() does not catch them. I had to wrap the entire streaming loop in the retry chain and send a reset event to the client to clear partial tokens.

2. Miro API quirks: borderWidth of zero throws a 400. fontColor is not a valid style property, so I had to use inline HTML span tags with style attributes inside the content field. On top of that, Miro's WAF blocks Vercel's IP range entirely, so I solved it by triggering board creation client-side from the browser instead.

3. LLM JSON reliability: Llama occasionally wraps output in markdown code blocks or adds trailing text. I built a cleaning step that strips the json wrappers before Zod validation, with error messages fed back to the model on retry.

Accomplishments I'm proud of

  • A genuinely working end-to-end product. Fill a form, watch a strategy stream live, click into ideas, chat with an AI coach, and open a real Miro board
  • The Miro board looks like something a designer made, with a dark hero banner, exact hex-colored pillar headers, native Miro cards, and a stats footer
  • Brand voice memory that actually persists your creator profile across sessions

What I learned

Real streaming with error recovery is harder than it looks. Miro's API is powerful but very strict about what it accepts. The difference between a demo and a product is handling every edge case including model failures, rate limits, malformed JSON, and duplicate submits, not just the happy path.

What's next for CreatorOS

  • Full CREAO integration for multi-session brand memory and team collaboration
  • Scheduled content calendar generation from the strategy
  • Direct publish to Notion or Linear from the idea workspace
  • Multi-platform format variants for LinkedIn vs YouTube vs newsletter per idea

Built With

  • creao
  • devswarm
  • featherless-ai
  • llama-3.3-70b
  • miro-api
  • mobbin
  • next.js
  • shadcn/ui
  • tailwind-css
  • typescript
  • vercel
  • zod
Share this project:

Updates