I Built an AI Content Workflow with Sanity Instead of Just Another Blog 🚀
I wanted to participate in the Sanity challenge, but I didn't want to build another simple blog with a CMS behind it.
So I decided to ask a different question:
What if Sanity wasn't just where I stored content, but where the entire content workflow lived?
That became SanityFlow.
What I built
SanityFlow is an AI-assisted content workflow where content moves through different stages:
📝 Draft
↓
🤖 AI Processing
↓
🔍 Review
↓
👩💻 Human Approval
↓
🚀 Published
The idea is simple: an AI agent can help move content forward, but a human still controls the important transitions.
The stack
- Next.js
- Sanity
- Sanity Studio
- Sanity App SDK
- AI API
- TypeScript
- React
The interesting part: Sanity is doing more than storing content
My first instinct was to use Sanity as a headless CMS and build the UI separately.
But the challenge pushed me to go deeper.
I experimented with:
1. Custom Sanity interface
Instead of relying completely on the default Studio experience, I created a custom interface for managing the workflow.
The goal was to make it possible to see:
- Current content status
- AI processing state
- Review status
- Assigned reviewer
- Previous actions
all in one place.
2. Workflow as data
I modeled the workflow alongside the actual content.
That means the content isn't simply:
draft → published
It can have states such as:
draft → processing → review → approved → published
This means an AI agent can work with the same workflow that a human reviewer uses.
3. AI-assisted content
The AI can help with things like:
- summarizing content
- generating metadata
- suggesting tags
- identifying missing information
- preparing content for review
But instead of letting AI automatically publish everything, the workflow keeps a human approval step.
4. Real-time updates
One of the things I wanted to explore was making the interface feel alive.
When the state of a piece of content changes in Sanity, the custom interface can reflect that change without requiring the user to constantly refresh.
What I learned
The biggest thing I learned from this challenge is that a CMS doesn't have to be just a place where you store documents.
Sanity can become part of the application's logic.
The combination of structured content, custom interfaces, real-time updates and workflows opens up a lot more possibilities than a traditional blog.
What didn't work
Not everything worked on the first try.
I initially approached the project like a normal Next.js application with Sanity attached to it.
That worked, but it wasn't really taking advantage of what Sanity could do.
I also spent more time than expected figuring out how to model workflow states and connect the different pieces together.
There are still parts I'd improve, especially around [YOUR LIMITATION HERE].
But that's probably my favorite part of this build.
I learned more by trying to make the workflow work than I would have by simply following a tutorial.
What's next?
I'd like to take this further by adding:
- better AI agents
- richer workflow transitions
- role-based approvals
- analytics
- more custom Studio components
- automated content transformations
The project is still a work in progress, but that's exactly what I wanted from this challenge.
Build → break → understand → improve.
That's the fun part. 🚀
🔗 Project
GitHub: [https://github.com/shivv2430/ContinuEd---Your-Learning-Always-in-Continuity.]
Live Video Demo: [https://drive.google.com/file/d/1obbbBIG9gbViwLUkYXD-lKinN_Tj2HFc/view?usp=drive_link]
Demo Link : [https://continu-ed-your-learning-always-in.vercel.app/]
If you're also experimenting with Sanity, I'd love to hear what you're building.
Top comments (0)