DEV Community

Cover image for Join the Sanity Challenge: $2,500 in prizes for FIVE winners!

Join the Sanity Challenge: $2,500 in prizes for FIVE winners!

Jem on September 18, 2026

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 c...
Collapse
 
dannwaneri profile image
Daniel Nwaneri •

Just when I thought I was out, they pull me back in.

Collapse
 
heyitsjem profile image
Jem The DEV Team •

😂

Collapse
 
apples_one_cd174284bffb profile image
vigneshwar •

😅same

Collapse
 
bobvasic profile image
Bob Vasic •

That's what she said!

Collapse
 
luke_bennett_ed52405c798e profile image
Luke Bennett •

I think you are the best

Collapse
 
ayothegod profile image
Ayo.web •

Let's goooo.

Collapse
 
divyasinghdev profile image
Divya •

I'm going to participate in this, no matter what!!
I'm so excited!!!

Collapse
 
uptimearchitect profile image
Uptime Architect •

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.

Collapse
 
inkwavebytes profile image
Rimsha •

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...

Collapse
 
ravi_saxena_6fd4d0ef1c9cb profile image
RAVI SAXENA •

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

Collapse
 
luisprimecore profile image
luisprimecore •

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.

Collapse
 
sushyam_nagallapati profile image
Sushyam Nagallapati •

Super excited for this challenge! Sanity + AI agents is such a strong combo. Can't wait to see what everyone builds! 🚀

LEARN. BUILD. REPEAT 🔁

Collapse
 
kilawattcloud profile image
Damian Dixon •

thinking about it. 

Collapse
 
vpsuform profile image
VPSUForm •

Yee Awesome lets goo

Collapse
 
kavindotdev profile image
kavin.dev •

Boom!! let's craft it!

Collapse
 
3200pro profile image
3200pro •

On it! Standby.

Collapse
 
inkwavebytes profile image
Rimsha •

Lets try this. I have no idea how it will be but I'd love to grow and experience.

Collapse
 
az-dev1 profile image
Akash •

Interested ! I'm innnn

Collapse
 
rustam335 profile image
Dhotiiiii •

Let`s Go Baby !!

Collapse
 
sophialee121128 profile image
Sophia Lee •

This is very very very good project 😍😍

Collapse
 
tejasrawool186 profile image
Tejas Rawool •

locked in.....🎯

Collapse
 
richard_smith_154156d471ef profile image
Richard Smith •

That "rough app with honest writeup beats polished one" bit is refreshing. Been there, spent way too long on polish and barely explained it.

Collapse
 
davidkljajo profile image
David Kljajo •

Hey ho, let's go!

Collapse
 
bearsacebear profile image
BJÖRN VIKING ÖST •

Wicked to be here thank you mucho 🥰

Collapse
 
imegwari profile image
Muhammad Younis Riad Ebrahim •

Okay

Collapse
 
nuerardl profile image
Nuera RDL •

:]

Collapse
 
sumitnayak1337 profile image
Sumit Nayak •

Yeppp !! Sanity is amezing.

Collapse
 
sk_saado_0765fdd4878b8c36 profile image
Sk Saado •

Hello

Collapse
 
tripathiayush175 profile image
Ayush Tripathi •

Hi to All Devs, Let's Roll...

Collapse
 
mikachu profile image
Mika Flowers •

Gonna give this a shot good luck everyone!

Collapse
 
abubkar_alhassanyahaya_5 profile image
ABUBKAR ALHASSAN YAHAYA •

Hello I'm interested

Collapse
 
hope_world_53b966f3551c64 profile image
Buy Nembutal Pentobarbital •

yep thats solid

Collapse
 
michael_48a357c1cb7bb6cc1 profile image
Michael •

I'm going to participate in this, no matter what!!
I'm so excited!!

Collapse
 
bertin_gundimba profile image
Bertin Gundimba Konzi •

Je vais participer

Collapse
 
luisprimecore profile image
luisprimecore •

Entered both paths — demos need no login.

Path One — Errata Desk: dev.to/luisprimecore/errata-desk-s...
Live desk: luiscore.com/errata-desk/ · checks: luiscore.com/errata-desk/score
Project gsu7qzk9, public dataset.

Path Two — The Needle: dev.to/luisprimecore/the-needle-on...
Dial: luiscore.com/errata-desk/needle · workflow: luiscore.com/errata-desk/workflow

Curious what people think of the June 3 split — paper and Magic Online have switched, Arena has not. Same sentence, three answers.

Collapse
 
shahbaz_ali profile image
Shahbaz Ali •

Path Two Submission: Contradiction Triage

I built a contradiction-triage workflow using the Sanity App SDK.

The idea is pretty simple: when two company documents disagree, an agent reviews the conflict and proposes a ruling with supporting precedent. A human can then approve or override that recommendation. Once a decision is made, it becomes a typed, queryable document that future decisions can reference.

One important part of the design is that the ruled transition can only be triggered by a human. That rule is enforced structurally in the app rather than relying on convention.

Links

What I Learned

The most interesting part of the project ended up being the bugs I found along the way.

Three bugs initially looked unrelated, but they all came back to the same underlying issue: something had one meaning in one place and a different meaning somewhere else.

  • One field was being used to represent two different things.
  • One predicate was matching two different patterns.
  • One comment accidentally swallowed an export.

All three bugs made it past sanity build.

I only caught them after running tsc and testing the actual GROQ query against the live data.

That ended up being one of my biggest takeaways from the project:

A successful build doesn't necessarily mean the behavior is correct.

The type checker and live queries caught issues that the build alone didn't.

Happy to answer any questions or walk through the implementation.

Collapse
 
ketutdana profile image
Ketut Dana •

Live Demo: sanity-challenge.vercel.app
Collection Demo (GROQ live): sanity-challenge.vercel.app/collec...
Sanity Studio (public, no login): sanity-challenge.vercel.app/studio
GitHub (MIT): github.com/dnysaz/niche-collector
Sanity Project ID: 71m89sy5
Dataset: production — 71m89sy5.apicdn.sanity.io/v2024-01...
Organization ID: os9xuj7u1
Submission tag: #sanitychallenge

Collapse
 
aisiteflow profile image
AI SiteFlow •

Path Two submission: AI Director — High-Performance Commercial & SaaS Engine Powered by Sanity CMS

Writeup: dev.to/aisiteflow/ai-director-high...
Live Demo: ai-director-roan.vercel.app
Commercials Showcase: ai-director-roan.vercel.app/commer...
SaaS Templates: ai-director-roan.vercel.app/templates
GitHub: github.com/aisiteflow/ai-director
Sanity Project ID: ix5izt37 (Dataset: production)

Collapse
 
mpmike profile image
Mike Demo •

The 150 KB document limit makes this almost impossible for any practical workflows. I spent a lot of time in on this only to get an error.

The organization's plan limit for indexed documents is reached (3536 of 150 used). Upgrade the plan to continue.

(I am been in the contact with the great Sanity team on their discord.) But its just feels like a waste of time spent. :(

Collapse
 
mpmike profile image
Mike Demo •

Sanity community via discord*

Collapse
 
dani_shemesh profile image
Dani Shemesh •

The part I'd copy is where the authority sits. The model gathers evidence and explains, and a few lines of plain code make the call. I build coding-agent workflows the same way: the agent proposes, and a fixed gate decides what gets merged.

Your mid-run recovery made me think about the rule's inputs. When a tool drops out halfway, client_approved or director_flagged can end up unknown for some shots. I'd have the filter treat unknown as ineligible and have the note say which fields were missing. Then a partial run still gives a safe answer, and the person on call knows how much the system actually saw.

Did you think about having the scoring function also return why each shot was excluded? That list seems useful for debugging and for the dashboard note.

Collapse
 
vicarioy profile image
Victor • • Edited

Path one submission: Nebula Agent - reads the errata the rulebook hides.

Rulebook says 5 energy tokens, 10 stars. Errata says 8 and 12. Strategy guide cites the errata but still mentions 10. All three live in the same dataset. A keyword search returns all of them with no way to rank.

My agent queries Sanity, sees the contradiction, and replies: "Rulebook says 5. Errata corrects it to 8. Here's the source URL for each."

The magic isn't the LLM, it's that every document has a structured 'source' field, so the agent can attribute each claim to its origin.

Writeup: [dev.to/vicarioy/nebula-agent-an-ai...]
Code: [github.com/Vicarioy/sanity-nebula-...]

Collapse
 
indiainfranotes profile image
IndiaInfraNotes •

green ticks close the UX. settlement week still needs a tip anyone can GET after the portal flips.

which public query proves the cut without a second shadow ledger?

curious what breaks first: MDR opacity or hop finality.

marker1001h1828-dt

Collapse
 
sajjadmusavi profile image
Sayed Sajjad Hussain Musavi •

😀

Collapse
 
sumaiya_qureshi_2632cec9d profile image
sumaiya qureshi •

I am the judge/mentor here.

Collapse
 
frame_flick_b1b26e72a0e18 profile image
Frame Flick •

goona hit first

Collapse
 
kaushik_patil_b20f74fe212 profile image
Kaushik Patil •
Collapse
 
nour_dude_314 profile image
nourdude •

i thought we were having a break from the bloat? i'm just vibin with registers and opcodes

Collapse
 
sakshikumari025 profile image
Sakshi Kumari •

Hii

Collapse
 
sparshsingh12312 profile image
Sparsh Singh •

Hi

Collapse
 
ankush_roy_chaudhury13 profile image
Ankush Roy Chaudhury •

Hi there!!! Wanted start my career in IT backend, any advice will be okay!!

Collapse
 
kn_wangkn_3678dc4e70c96c4 profile image
王克能 •

我是中文文字组合内容,和人工智能产品,对话方式的,使用者,及对工具的属性。非工具性属性,有好奇心,的追述者

Collapse
 
midasvideo profile image
Midas Video •

hello

Collapse
 
uygg_tyyy_fc69fd45b701a5e profile image
Uygg tyyy •

Hi 😌