We're excited to announce our newest challenge with Sanity!
The Sanity Challenge runs September 18 to October 4. Build an AI agent on structured content, or vibe-code an app with Sanity behind it. $2,500 in prizes.
New to Sanity? Sanity is the AI Content Operating System. Your content lives in the Content Lake as JSON documents, with schemas you define in TypeScript and query with GROQ. You can use Sanity to build anything that you can imagine with structured content as your starting point.
Read on to learn more.
Our Prompts
Path one: Ship an agent that queries real content
Build an agent, then point it at a Sanity Context MCP endpoint backed by a Knowledge Base. Any agent framework, hosted anywhere.
Build anything that needs an answer it can't afford to get wrong. A board game companion that knows the errata contradicts the rulebook. A better interface to your favorite open-source docs. A eurorack planner that knows what actually fits in your case. An award-travel agent that untangles which transfer partner story is current. A car repair agent? A camera gear-head compendium? The sky is the limit.
Point Sanity Context at a website, a set of files, or your own Sanity content, and it distills a navigable Knowledge Base your agent reads through MCP. Every entry stays linked to the source it came from. When two sources contradict each other, both claims surface side by side with their sources, and the decision you make carries across future builds. It all lives in your Sanity Dashboard.
Path One Submission Template
The strongest submissions will show an agent that only works because the content was structured. If a keyword search would have gotten you the same answer, aim higher.
Note: Knowledge Bases are in beta and currently index up to 150 documents. Design for that budget, or point your agent at your full dataset through a Context MCP endpoint with embeddings enabled. Both count for Path One.
Path two: Vibe-code something strange
Prompt your way to a working app. Any AI-native IDE, Next.js or Astro on the front, Sanity behind it.
This one is judged on the build as much as the result. How deep did you get into Sanity's features? Did you customize the interface? Build a new component to turn videos into gifs? Create a workflow that kicks off an external API call? A rough app with an honest writeup beats a polished one with three sentences.
Bonus points for reaching past the Studio. Two things we'd especially like to see prompted into existence:
-
App SDK: build a custom app on top of your content, with real-time data and your own interface, instead of another read-only frontend.
-
Workflows: model a process (content reviews, translations, and so on) as data next to the content, so an agent can move a draft forward and a person can approve it through the same transitions.
Neither is required. A submission that uses one well will stand out from a pile of blog templates.
Path Two Submission Template
One Extra Submission Requirement 📌
Every submission, both paths, needs to include your Sanity project ID or a link to a public dataset URL.
This lets the Sanity team look at how you actually modeled and used your structured content, which is a real part of judging. There's a section for it in both templates above. Submissions without it may be considered incomplete, so don't skip it.
Judging Criteria
Path one: Ship an agent that queries real content submissions will be evaluated for:
- Meaningful use of Sanity Context and structured content
- Technical implementation and code quality
- Use of Knowledge Bases
- Usability
Path two: Vibe-code something strange submissions will be evaluated for:
- Quality and honesty of the build process writeup
- Functionality of the finished app
- Thoughtfulness of the schema behind it
- Creativity and originality
Prizes 🏆
Three winners from Path one, "Ship an agent that queries real content," will receive:
-
$500 USD cash prize
-
DEV++ Membership
- Exclusive DEV Badge
Two winners from Path two, "Vibe-code something strange," will receive:
-
$500 USD cash prize
-
DEV++ Membership
- Exclusive DEV Badge
All participants with a valid submission will receive a completion badge on their DEV profile.
How To Participate
Publish a post on DEV using the prompt submission templates above and be sure to include the required challenge tag: #sanitychallenge. You may submit to both paths, but you must create a separate post for each.
If your app requires logging in, please provide testing credentials in your submission and/or instructions on how to best test your application for judges.
Optional but encouraged: embed your agent session. Upload a transcript from Claude Code, Gemini CLI, Codex, GitHub Copilot CLI, or Pi, curate or slice the parts worth showing, and drop it straight into your post. It beats a screenshot, and for Path two it's the most direct way to show your work.
Head to the Agent Sessions uploader to get started. Two things to remember: uploads are unlisted by default, so use the Make Public button or judges won't be able to open your session. And check your transcript for keys and sensitive data before publishing. There's a redaction layer, but it won't catch every edge case.
Please review our judging criteria, rules, guidelines, and FAQ page before submitting so you understand our participation guidelines and official contest rules such as eligibility requirements.
Getting Started With Sanity 🚀
Important Dates
-
September 18: Sanity Challenge begins!
- October 4: Submissions due at 11:59 PM PDT
-
October 22: Winners Announced
We can't wait to see what you build. Questions about the challenge? Drop them in the comments below.
Good luck and happy coding!
Top comments (65)
Just when I thought I was out, they pull me back in.
😂
😅same
That's what she said!
I think you are the best
Let's goooo.
I'm going to participate in this, no matter what!!
I'm so excited!!!
Entered both paths, on one shared dataset: an Oracle → Azure migration knowledge graph with 446 documents, where every claim points at a source.
Path One: Keyword search found the facts but lost the sources. An agent over two Sanity Context endpoints, with a blind four-way eval. Keyword search got 14 of 18 verdicts right but cited the required publishers only 4 times out of 16. The GROQ agent cited them 12 times and grounded all 18 answers.
Path Two: The Legacy Obituaries. Every Oracle feature that didn't survive the move to Azure gets a newspaper obituary: born in, cause of departure, survived by. An App SDK desk certifies the notices, and a Workflows lifecycle runs over the queue.
Both posts include the agent sessions and what went wrong along the way. Thanks for running this one, and good luck everyone.
Entered both paths.
Path One — Errata Desk: dev.to/luisprimecore/errata-desk-s...
Live: luiscore.com/errata-desk/ · check: luiscore.com/errata-desk/check
Path Two — The Needle: dev.to/luisprimecore/the-needle-on...
Dial: luiscore.com/errata-desk/needle
Battery 10/10. decidedBy stays empty until a person signs.
I vibe-coded something strange: GROQ & Dagger 🕵️♂️⚡
It's an atmospheric cyber-noir interactive crime board built with Next.js, Sanity, and GROQ. Instead of a static table, it models linked suspect dossiers, physical evidence locker items, testimony contradictions, and sequential timelines.
My favorite part was using GROQ graph dereferencing (
->) so you can select any suspect and instantly isolate every piece of connected clues across the entire dashboard in a single query!I NAVIGATED some tricky Vercel deployment hurdles along the way. Check out the full breakdown and live demo here:
👇👇👇
dev.to/inkwavebytes/groq-dagger-un...
Path one submission: TrueStay — a resort-fee desk that adds the fee search hides.
Official pages say “no hidden fees,” “$55,” and “waived for Gold” at once. Not Gold + self-park → $55 + $20. Gold+ booked direct → $0 resort fee, parking still $20.
Writeup: dev.to/ravi_saxena_6fd4d0ef1c9cb/t...
Demo (no login): truestay-five.vercel.app
thinking about it.
Super excited for this challenge! Sanity + AI agents is such a strong combo. Can't wait to see what everyone builds! 🚀
LEARN. BUILD. REPEAT 🔁
Yee Awesome lets goo
Some comments may only be visible to logged-in visitors. Sign in to view all comments.