cd /news/ai-tools/proof-desk-receipts-before-rewards · home › topics › ai-tools › article
[ARTICLE · art-143004] src=dev.to ↗ pub= topic=ai-tools verified=true sentiment=· neutral

Proof Desk: receipts before rewards

A developer built Proof Desk, an evidence-tracking web app that documents AI-friendly cash-competition opportunities by answering six concrete questions: entry cost, cash offered, entry window, AI-use permission, eligibility, and payment method. The app stores records in Sanity Content Lake, keeps missing evidence explicitly unknown, and never submits entries or spends money, with a public read-only frontend plus an authenticated Studio review workflow. Built with Next.js 16.3.7 and React 19.3.0, it deploys as a full static export via GitHub Actions Pages.

by read5 min views1 publishedOct 1, 2026

This is a submission for the Sanity Challenge, Path Two: Vibe-Code Something Strange. Proof Desk is an evidence desk for people researching AI-friendly cash opportunities. It takes a competition prize and asks six concrete questions: what does entry cost, what cash is offered, when can I enter, is my use of AI allowed, am I eligible, and how is payment made?

The first five records are based on public official rules. Missing evidence remains unknown. For example, Sanity's prize is documented, but its current payment channel is not named in the official rules. The app keeps that opportunity on hold for someone who requires confirmed PayPal.

This is a research tool. A prize is conditional, a review is a decision, and settled revenue would need its own evidence. The app never submits an entry or spends money.

Public frontend: [https://wd666430-rgb.github.io/proof-desk-sanity-challenge/](https://wd666430-rgb.github.io/proof-desk-sanity-challenge/)

Studio: [https://proof-desk-ofdsgt18.sanity.studio/](https://proof-desk-ofdsgt18.sanity.studio/)

The public frontend reads the real public Sanity dataset without a login. Judges can search opportunities, inspect linked receipts, set their own eligibility preferences, export a JSON receipt, and select Practice review on a copy. Practice changes stay in that tab and are visibly labeled. Owner edits use the authenticated Studio action.

Suggested walkthrough: inspect the Sanity record, notice its unknown payment field, open a practice copy, request review, and mark it blocked with a reason. A real authorized Studio test also moved that record from draft to review. The Studio showed version 1 and one recorded transition; refreshing the public Pages demo showed the same review state, #01 and history event. The note kept payout and eligibility explicitly unconfirmed. This was a test of the workflow, not approval to enter or evidence of earnings.

The Studio event detail shows the stored draft → review transition. The human actor label is a declared role, not identity proof.

Repository: https://github.com/wd666430-rgb/proof-desk-sanity-challenge The expanded source and source ZIP are available alongside the live build. A useful reading path is the Sanity schema for the structured evidence fields, the Studio review action for owner review with revision checks, then the decision model for deterministic gates.

The app uses Next.js 16.3.7 and React 19.3.0. The GitHub Pages deployment uses the complete Next.js static export, including the framework's generated pages and _next/static resources, configured for the repository's base path. An official GitHub Actions Pages workflow extracts the prebuilt static ZIP and deploys that directory. Sanity Content Lake stores the records; client-side reads use an exact, credential-free CORS origin. No model API, server write endpoint or permanent write token is needed for the public demo.

The full Next export deployment succeeded. A fresh guest-browser visit verified the generated _next/static scripts, five live Sanity records, two open entries, and the Sanity record's review state. The earlier portable React preview remains only a backup.

I built the app in Codex Desktop, my AI-native development environment, on September 30. The scope was deliberately narrow: public opportunities, explicit receipts, and one complete workflow. It reuses the general idea of tracing a source through eligibility and an offer to a decision, without copying any private commercial or protocol data.

Three condensed task prompts capture the iteration. These are reconstructions from the build notes, not verbatim session quotes:

The first working version kept a local JSON copy so the checks and interface could be tested before an account existed. That mode was labeled as local. Once the owner created the Sanity project and authorized CLI access, the same records were imported into the public Content Lake.

That exposed a real integration mistake. The import command reported success, but unauthenticated queries returned zero records. I had used dotted document IDs. Sanity's public-read rules exclude IDs containing dots. I changed the IDs to hyphenated names, reimported the public records, removed the unused copies, and checked the actual API response rather than trusting the import message.

Independent review found another concrete bug: the review API accepted a client-supplied clock. A caller could move the clock backwards to make an expired entry appear current. The route now uses only server time, with a regression test for that case. A review role is an owner declaration; the code does not claim to identify whether a credential holder is a person or software.

Sanity adds more than storage here. Claims and source receipts are modeled separately inside each record. A custom Studio action moves published records through draft, review, approval or blocked states using the displayed revision. Conflicts are rejected, content drafts must be resolved first, and publishing new evidence resets its decision. Transition history lives alongside the content. It is useful review history, not an immutable financial ledger.

The schema makes a claim's source and confidence explicit: a claim stores its field, verdict (supported, unknown or contradicted), and sourceKey; an opportunity carries the sources, claims, state, version and history fields. A public GROQ query such as count(*[_type == "opportunity"]) can verify the dataset is populated without an editor token. The owner-only Studio action performs the state change; the static demo has no public write route.

The checks run without paid model calls. AI helped create the app; factual evidence and runtime checks do the verification work. Fourteen automated tests cover known failure cases, and the Next frontend, static export and Studio build pass. Browser verification of the public GitHub Pages demo required no login: five researched records, two open entries, linked receipts and an unknown payment field that keeps the decision on hold. The authorized Studio draft-to-review write and the matching public refresh demonstrated the actual cloud workflow. The action uses the existing authenticated session; it does not prove that a credential holder is a human.

ofdsgt18 production, public opportunity, with source receipts, claims, eligibility fields and review events The design uses capabilities available on Sanity Free. The new account begins with a $0 trial and automatically returns to Free; the app does not depend on a paid feature. Only public rule summaries are imported. No credentials, private customer data, email addresses or local machine files are in the dataset.

No raw session is attached. A sanitized excerpt can be added after review; the full research conversation contains unrelated account and project context and is unsuitable for public upload.

── more in #ai-tools 4 stories · sorted by recency
── more on @proof desk 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/proof-desk-receipts-…] indexed:0 read:5min 2026-10-01 · —