Work / Collaborations

CleanPlay

Graph-based device trust scoring that targets gold-selling rings in online games but never penalizes a shared family IP.

Status
built
Role
Collaborator
Collaboration
Built with Fluxxion88
Timeline
Jul 2026 →
  • Python 3.11
  • FastAPI
  • Neo4j (Cypher)
  • RocketRide
  • Claude Haiku 4.5
  • PyJWT (RS256)
  • Stripe (test mode)
  • Docker
  • Railway

A collaboration with Fluxxion88.

What it does

CleanPlay models a game economy as a Neo4j graph and scores every device from 0 to 100. Three Cypher detectors look for:

  • one-directional, high-value transfer funnels (one to four hops) out of farm-like accounts;
  • clusters of accounts created close together on one device;
  • brand-new accounts that receive more than 2,000 gold within 48 hours.

Shared IP carries a weight of exactly zero by design, so a family behind one router isn’t flagged for living together. With these weights, the seeded ring’s mule device lands at 5/100 while the seeded family stays at 100.

Around the scorer

A moderator scan writes a short case report through a RocketRide pipeline on Claude Haiku 4.5, stores the verdict, and sends a Discord alert for untrusted devices, all behind RS256 JWT auth and a metered free/pro plan. Eight commits, five of them co-authored with Claude, take it from a first-phase skeleton to a Dockerized Railway deploy in under three hours.

Status

Built and demonstrated on synthetic, seeded data only. Payments run in Stripe’s test mode.

Verified numbers

MetricValueSource
Score penalties: funnel / clustered device / new-account smurfing / shared IP−70 / −25 / −25 / 0 (from 100)Fluxxion88/cleanplay/scripts/scoring.py:33-38
Detectors: funnel depth · new-account rule1–4 hops · > 2,000 gold within 48 hFluxxion88/cleanplay/scripts/detect_queries.py
Seeded ring’s mule device vs. seeded family5 vs. 100 (synthetic data)Fluxxion88/cleanplay/README.md
m.mittal
Home
Work
Research
Lab
About
Experience
Now
Résumé
Uses
Colophon
Contact
AccountWardin-build
Redlbuilt
The Councilresearch
BEMAresearch
EXIT LIQUIDITYin-build
NEXUSarchived
Warrant + Forgebuilt
Concordarchived
BlueCollarPalin-build
Chispenbuilt
Warrant Portalbuilt
JobAppin-build
Night/Dayexplored
BLACKSITE: NULLin-build
SlugBitesbuilt
Riptidebuilt
AeroBitesarchived
Internbuilt
CAD & 3D printingexplored
ForgeCouncilexplored
ADDE: adversarial due-diligence engineexplored
Model routing in practiceexplored
AI due-diligence market mapexplored
Quorumarchived
Colossus Wakeexplored
FitFindrbuilt
Project Omniexplored
Oblivionexplored
MeetWisebuilt
EyeOSexplored
LinkLeap AIexplored
Up-Toexplored
Offline speech-to-notes (Java)explored
AI-assisted game production pipelineexplored
COLLAPSEarchived
THE TRIALSarchived
EcoNodearchived
ESP32-S3 / LoRa benchexplored
CleanPlaybuilt
Rezonyrbuilt
Habit Tracker Telegram Botbuilt
Job Board Aggregatorin-build
Visual Hand Trackbuilt
CLI Task Trackerbuilt
All work44 entries
Can’t Hallucinate, Can Still Be Wrong: Calibration of a Typed-Decision Model Under Input Noisepaper
Disagreement as Signal: A Hybrid Multi-Agent and Council Architecture for Error Detection in LLM Systemspaper
Killing Good Ideasessay
Uncorrelated Failure Modesessay
ADDE: adversarial due-diligence engineexplored
AI due-diligence market mapexplored
AI-assisted game production pipelineexplored
Aura Chatexplored
Colossus Wakeexplored
EcoNodearchived
ESP32-S3 / LoRa benchexplored
EyeOSexplored
FitFindrbuilt
ForgeCouncilexplored
LinkLeap AIexplored
MeetWisebuilt
Model routing in practiceexplored
Offline speech-to-notes (Java)explored
Oblivionexplored
Print benchexplored
Project Omniexplored
Provably-fair outcome enginebuilt
Quorumarchived
Up-Toexplored
Copy hello@mitanshm.com
Switch theme
Play motion
RésuméPDF
Open GitHub ↗mit37
Open LinkedIn ↗
Toggle layout gridh
Toggle single-key shortcuts/ h