cd /news/ai-products/what-it-costs-to-moderate-500-daily-… · home › topics › ai-products › article
[ARTICLE · art-160878] src=johalloran.dev ↗ pub= topic=ai-products verified=true sentiment=↑ positive

What it costs to moderate 500 daily doodles with Jev

Developer James O'Halloran built Squigdle, a daily drawing game, and moderates roughly 1,000 anonymous doodles with Jev, an image-capable model from TypeSafe, at a total cost of 6 cents — about $0.00006 per doodle. Each 512×512 PNG plus its title is sent to Jev, which returns structured probability scores (for example, sexual: 0.90, ok: 0.09) that O'Halloran's code converts into approved, NSFW or human-review verdicts using thresholds such as ok ≥ 0.65 for approval and sexual ≥ 0.5 for NSFW. O'Halloran reports the system is holding up well, with the main misses being occasional phallic-looking false alarms that cost one tap in Discord.

by read2 min views8 publishedOct 30, 2026
What it costs to moderate 500 daily doodles with Jev
Image: source

I made Squigdle, a daily drawing game. Everyone gets the same three squiggles, turns them into a doodle, then votes on everyone else’s.

As you can imagine, a game where strangers share drawings anonymously gets a lot of… you know what. 🍆

The setup #

Before anyone else sees a drawing, the server renders it to a PNG and sends it, with its title, to Jev, a model from TypeSafe (that now accepts images!). I picked Jev because it’s fast, cheap, and answers with structured data instead of text I’d have to parse.

It’s super slick to work with, you define the structure of your response in the form of yes/no or multiple-choice questions, and the input (The doodle)…

questions: {
  verdict: {
    type: "choice",
    instructions: "Which best describes this drawing and its title?",
    criteria: {
      ok: "Fine for a general audience. Cheeky jokes, butts and innuendo are fine. ...",
      sexual: "Draws a penis, naked breasts WITH nipples, or a sex act. ...",
      // ...plus other criteria like profanity, hateful, etc.
    },
  },
},

Those descriptions are the whole policy. Nipples? A line in sexual. Butts? A line in ok. The trick is putting the forbidden thing in one option and its harmless lookalike in another.

And back comes the verdict:

probabilities: { sexual: 0.90, ok: 0.09 /* ...the rest ~0 */ }

Then my code decides what’s acceptable, using thresholds I can tweak.

function decide(p) {
  if (p.ok >= 0.65) return "approved";
  if (p.sexual >= 0.5) return "nsfw";
  // ...a few more rules for the harmful stuff
  return "review";
}

Clean drawings go into voting. NSFW ones can still be shared behind a blurred warning, but don’t appear to the public in the voting pool. Anything potentially harmful waits for me to verify (through a Discord webhook alert).

Teaching it what’s a leg, and what’s an extra leg #

The squiggles are curvy and blobby, so a lot of innocent doodles end up looking a bit phallic. My codebase has a lot of hints describing what counts as an undeniable 🍆. I’ve had to make a lot of subjective anatomical decisions over what’s allowed and what’s suspect. I am, essentially, building Jian Yang’s Not Hotdog app.

How it’s going #

After ~1,000 doodles, it’s holding up really well. The misses are the occasional phallic-looking false alarm, which costs me one tap in Discord. Each check sends a 512×512 PNG plus the title. All 1,000 have cost me 6 cents in total, about $0.00006 per doodle. Your mileage will obviously vary with image size and how much you ask per check.

If you want to see what everyone made with today’s squiggles, come check it out! (And please don’t take this as an open invitation to stress-test the limits of the moderation, it’s really designed to be a family friendly game 🙂)

Cheers, James

── more in #ai-products 4 stories · sorted by recency
── more on @squigdle 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/what-it-costs-to-mod…] indexed:0 read:2min 2026-10-30 · —