cd /news/ai-agents/the-cryptid-field-office-an-ai-triag… · home › topics › ai-agents › article
[ARTICLE · art-139606] src=dev.to ↗ pub= topic=ai-agents verified=true sentiment=↑ positive

The Cryptid Field Office: an AI triages sightings, a person signs off

A developer built the Cryptid Field Office, a Sanity-based report-triage pipeline in which an AI Field Investigator scores public sighting reports and routes them through the same workflow actions available to human staff, with a person signing off on unclear cases. The project runs three surfaces on one Sanity content lake — a public Next.js case map and Director's Desk, a Sanity App SDK corkboard for staff, and a Studio for editors — all sharing a single fireAction audit trail. The developer, who describes themselves as non-technical, directed Claude Code to build the system and published the repo with a planning runbook and build log.

by read5 min views3 publishedSep 25, 2026

This is a submission for the Sanity Challenge, Path Two: Vibe-Code Something Strange The Cryptid Field Office: a deadpan government bureau that takes every unexplained sighting seriously. Cryptids, lights over the desert, a figure on the stairs, a jinn in the storeroom, a lodge that is on no property register. You file a report. An AI Field Investigator reads it, scores it and decides where it goes. A person signs off on anything unclear. Every case ends in a stamp: CLASSIFIED, DEBUNKED or INCONCLUSIVE.

It is silly on the surface and serious underneath. Take away the Bigfoot and it is a report-triage pipeline: public intake, AI screening, linking related reports, a human decision, and an audit trail. Swap the creatures for potholes and you have a city 311 system. The same pattern runs bug trackers, insurance claims and fraud review. That was the point: something strange, built on something real.

It has three surfaces on one Sanity content lake:

What it is Who uses it
Public site (Next.js) Case map and files, a four-step report form, a live "your report is being triaged" page, and a public Director's Desk Anyone. No login.
Case Board (SanityApp SDK ) A live corkboard: drag case photos around, pull a red pin from one card onto another to draw a string, approve or reject the AI's suggested links, fire workflow actions Bureau staff
Studio Custom desk, status badges, a map location picker, and the official Workflows plugin Editors

The part I am proudest of: the agent and a person move a case through exactly the same workflow actions. The AI triages a report, a visitor on the Director's Desk opens an investigation, and a staff member closes it from the Case Board, and all three are the same fireAction on the same instance, recorded in one audit trail.

**Live site (no login needed): [https://cryptid-field-office-mubeen9.vercel.app](https://cryptid-field-office-mubeen9.vercel.app)**

Try it in about a minute:

The Studio and Case Board need a Sanity login, so the video and screenshots below show them. The Director's Desk gives you the same workflow power without one.

The video shows the whole loop, from a public report to a stamp, and it is the only place to see the Case Board and Studio without a Sanity login.

https://github.com/MAMubeenKhan/cfo The repo includes PLAN.md (the full runbook I had Claude write before any code) and BUILDLOG.md (an honest day-by-day log, including everything that broke).

Tools: Claude Code (Opus 5.5 for planning, Sonnet 5 for most building), the official sanity-best-practices agent skill, Playwright, axe-core and Lighthouse for testing. I am non-technical; I directed, Claude built.

My first prompt was the challenge page pasted in, plus: "give me options on what we should make and tell me what is best and why." Claude scored four ideas against the four judging criteria and both bonuses and recommended the cryptid bureau, because a case moving from triage to a verdict is exactly the "agent moves it forward, a person approves it" pattern, and a red-string board is a natural App SDK app.

My honest worry was: "won't it be weird and silly and make me a joke?" Claude's answer became the design rule for the whole project: play it deadpan. The humour lives in the bureaucracy (case numbers, stamps, memos), never in the subject. A silly idea with a real workflow reads as clever; a silly idea with three screens reads as a joke.

Then I kept pushing the scope: "include UFOs, aliens, Area 51", then "ghosts, jinn, spirits and occult", then "secret cults and societies." That created a real design question I want to be upfront about, because it shaped the code:

Before writing code I asked for "an end to end plan so a new session doesn't have to do any planning, including edge cases, no tests until completion, only one comprehensive test at the end." Claude read the Workflows and App SDK docs, checked real package versions, and wrote a ~500-line runbook. Three mid-flight prompts shaped it: "it should be attractive with good UX and highly polished", "as per current standards" (this became a WCAG 2.2 AA, Core Web Vitals, dark-mode, reduced-motion spec), and my memory file (a memory.md Claude reads at every session start and appends lessons to).

connection document with provenance and confidence: the red strings. Witnesses are anonymous codenames with a credibility score computed across their cases.case-lifecycle definition: five stages, five automated effects, human actions for the Director and Investigator. It passed sanity-workflows deploy --check on the first attempt. I then ran all 30 seeded cases through the client.agent.action.prompt. useQuery streams, useWorkflowEngine, useWorkflowSession, @sanity/workflow-diagram). I would rather show the dead ends than pretend there were none.

npm install left a half-extracted zod, which made every Sanity CLI command fail with MODULE_NOT_FOUND, then made a second install fail with Invalid Version:. Fix: delete node_modules and the lockfile, install fresh, in the background. On this network installs took 10 to 25 minutes.sanity-best-practices skill and it caught that @sanity/icons v5 has framework: nextjs and a redeploy fixed it. Deployment Protection was also putting a login in front of the site.scripts/deploy-web.sh). static folder. And demo cases I had hidden were still appearing as "related files" on public pages, so the query now drops a connection if either end is hidden.noindex header to its free addresses.prod.wf-instance.<caseId>) made starting a case idempotent. Bureau settings. cyh4xyo1 · production (public)https://cyh4xyo1.api.sanity.io/v2026-09-01/data/query/production?query=*[_type=="case"][0...5]{caseNumber,title,category,status} case (workflow subject with a status mirror), witness (anonymous, credibility computed across cases), subject (six categories), region (a restricted flag drives the Area 51 banner and redactions).

── more in #ai-agents 4 stories · sorted by recency
── more on @sanity 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/the-cryptid-field-of…] indexed:0 read:5min 2026-09-25 · —