Back to blog
Sep 11, 2026
4 min read

The Product Is the Workflow: Multi-Agent Automation Behind Balakatha

I've been wiring multi-agent automation with Cloudflare Workflows. Balakatha is the clearest example: a kids mythology factory where AI proposes inside a typed pipeline, Remotion encodes social video on Node, and deterministic code owns publish.

I’ve been deep in multi-agent automation with workflows lately. Not chat demos. Pipelines that have to finish a job when I’m not staring at a terminal.

Balakatha is the clearest example I’ve got. It’s a Hindu mythology story factory for kids in English, Nepali, and Hindi. No ads, no tracking, no login. Built through Parents in Tech.

People see the site and ask about the reader. Fair. The interesting story is the factory behind it.

One run isn’t β€œgenerate a story”

A Balakatha run is a manufacturing line:

  1. Research. Gather and shape the story brief.
  2. Generate. Story text and illustrations.
  3. Narrate. Audio per language.
  4. Publish. Human review, then the public shelf and social handoff.

That maps to four Cloudflare Workflows: ResearchWorkflow, GenerateWorkflow, NarrateWorkflow, and PublishWorkflow. Persist-and-end stages. Strict schemas. R2 checkpoints. Canonical store in D1 and R2. Human review. Generated images need explicit approval before they ship.

AI proposes inside the stages. Deterministic code owns publish, storage, and distribution. I still own what merges and publishes.

That’s the split that makes this real. Coding agents helped build all of the wiring. Different tools for different jobs. They are not the factory runtime. The factory is Cloudflare Workflows, not an AI chat loop and not a SDK for batch media rendering.

Where video actually happens

Reel and YouTube formats matter for Balakatha. Families find stories on Instagram, YouTube, and TikTok as much as on the site.

The videos are generated by Remotion on Node (StoryYouTube at 16:9, StoryReels at 9:16). Cloudflare Workers can’t run Remotion. So the publish path stages Remotion specs in R2, reports MP4s that already exist, then distribute posts only when both formats are present for a language. No guessed URLs.

Short version: Workflows orchestrate the line and the social handoff. They don’t render the videos.

A constraint that shaped the design

Gemini TTS has a daily request ceiling (at least for the tier I’m at). The counter increments per attempt. A retried 429 still burns quota the same as a successful clip.

So a story that hits the cap can still publish with multi-langage text and images, with narration_status=unavailable, instead of faking audio or blocking the whole line. Re-running a partly narrated story only spends quota on clips R2 doesn’t already hold.

That’s the kind of boring detail that decides whether a factory is real.

What I refuse to automate

Everything above still has human gates. Story prose and morals go through review before the public shelf. Generated images need explicit approval. Social distribute only fires when the rendered assets are actually there. Kids-category store rules are load-bearing, so those gates stay.

Agents keep the line moving so I’m not stuck writing glue between research, generation, narration, and publish.

The takeaway

The product is the workflow.

If you’re wiring multi-agent systems for something that has to ship every day, ask what still refuses to automate. For Balakatha, that’s review, compliance, and anything that would let a model write straight into a side effect.

Try the stories at balakatha.app. If you’re building a similar factory, tell me what breaks when you put agents on the line. Ping me on X @opynrijal.