███╗ ███╗ ██████╗ ██████╗ ███████╗ ██████╗ ██████╗ ██████╗ ███████╗
████╗ ████║██╔═══██╗██╔════╝ ██╔════╝██╔════╝██╔═══██╗██╔══██╗██╔════╝
██╔████╔██║██║ ██║██║ ███╗███████╗██║ ██║ ██║██████╔╝█████╗
██║╚██╔╝██║██║ ██║██║ ██║╚════██║██║ ██║ ██║██╔═══╝ ██╔══╝
██║ ╚═╝ ██║╚██████╔╝╚██████╔╝███████║╚██████╗╚██████╔╝██║ ███████╗
╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝
Upload your facecard. Receive a completely objective PSL/RMS assessment. The ML is real. The conclusions are not.
MogScope is a satirical facial analytics platform that applies real, browser-side ML (SSD MobileNet + 68-point facial landmarks) to generate absurdist PSL/RMS scores using authentic looksmaxxing terminology. It parodies the pseudoscientific "looksmaxxing" subculture — where young men obsessively measure canthal tilt, bizygomatic width, and hunter index to quantify their attractiveness.
The face detection is real. The scoring pipeline is real. The conclusions — that you're "prey-coded" or a "PSL God" — are not.
⚠️ PARODY WARNING — MogScope satirizes looksmaxxing culture. Scores are algorithmic nonsense. No face is objectively superior. If this makes you feel bad: close the tab. That's the point.
|
🔬 PSL ANALYZER
|
👁 RMS MODE (FEMALE)
|
|
💀 THUNDERDOME
|
📖 BLACKPILL LEXICON
|
┌─────────────────────────────────────────────────────────────────┐
│ CLIENT (Vite + React 18) │
│ │
│ @vladmandic/face-api ──► SSD MobileNet + 68pt Landmarks │
│ Three.js r162 ──► 3D Anatomical Skull (WebGL) │
│ Framer Motion 11 ──► Page transitions + KO overlay │
│ Recharts ──► PSL Radar + metric visualization │
│ Zustand ──► Global state (analyzer + battle) │
│ Howler.js ──► Audio hooks (Web Audio API synthesis) │
│ Tailwind CSS ──► Utility styling (custom design tokens)│
│ │
└──────────────────────┬──────────────────────────────────────────┘
│ POST /api/roast
▼
┌─────────────────────────────────────────────────────────────────┐
│ VERCEL EDGE FUNCTION │
│ │
│ Groq API ──► llama-3.3-70b-versatile (primary LLM) │
│ Generates PSL Ascension Reports │
│ Generates RMS Assessments │
│ Dead-serious looksmaxxing tone │
│ │
└─────────────────────────────────────────────────────────────────┘
| Layer | Technology |
|---|---|
| Framework | React 18 + Vite 5 |
| Face Detection | @vladmandic/face-api — SSD MobileNetV1 |
| Landmark Model | 68-point faceLandmark68Net (CDN-cached) |
| 3D Rendering | Three.js r162 — custom anatomical skull geometry |
| LLM | Groq llama-3.3-70b-versatile via Vercel Edge |
| State | Zustand 4 |
| Animations | Framer Motion 11 |
| Audio | Web Audio API (MK-style voice synthesis, no files) |
| Charts | Recharts (PSL radar overlay) |
| Styling | Tailwind CSS 3 + custom Bebas Neue / JetBrains Mono |
| Deployment | Vercel (Edge Functions + static) |
All processing happens 100% client-side. No face images are sent to any server.
LANDMARK REFERENCE (68-point face-api model)
0-16 ─── Jaw outline
17-26 ─── Eyebrows (left + right)
27-35 ─── Nose bridge + tip
36-41 ─── Left eye (36=outer corner, 39=inner corner)
42-47 ─── Right eye (42=inner corner, 45=outer corner)
48-67 ─── Mouth
CANTHAL TILT (Hunter Index)
angle(lm[36], lm[39]) + angle(lm[42], lm[45]) / 2
Positive° = hunter. Near 0° = average. Negative° = prey-coded.
FRAME GAUGE
dist(lm[0], lm[16]) / dist(lm[27], lm[8]) → bizygomatic ratio
+ tapering: bizygW / bigonW (cheekbone to jaw ratio)
SYMMETRY
17 matched pairs: |dist(lm[a].x, cx) - dist(lm[b].x, cx)| / faceW
100 - avgDelta * 560 → realistic range 60–78%
PSL COMPOSITE (weighted)
hunterIndex × 0.28
frameGauge × 0.20
symmetry × 0.20
goldenRatio × 0.14
hollowCheek × 0.10
(100-preyRisk) × 0.08
→ Math.pow(composite, 1.22) × 9.8 → PSL 1.0–9.8
Score distribution is intentionally realistic — most people score 3.5–6.5. 8+ is genuinely rare.
# Clone
git clone https://github.com/Asad101001/mogscope.git
cd mogscope
# Install
npm install
# Add Groq key (free at console.groq.com)
cp .env.example .env.local
# → set GROQ_API_KEY=gsk_your_key_here
# Run
npm run devOpen http://localhost:5173 — face detection models (~2MB) load from CDN on first use and are cached by the service worker.
No Groq key? The app falls back to static roast templates. All face detection still works.
mogscope/
├── api/
│ └── roast.js # Vercel Edge Function → Groq API
├── src/
│ ├── components/
│ │ ├── face/
│ │ │ ├── FaceCanvas.jsx # Landmark overlay renderer
│ │ │ ├── MetricBar.jsx # Animated score bars
│ │ │ ├── MetricRadar.jsx # Recharts radar chart
│ │ │ └── ScanOverlay.jsx # Analysis loading UI
│ │ ├── layout/
│ │ │ ├── Navbar.jsx # Mobile + desktop nav
│ │ │ └── ThreeBackground.jsx # WebGL skull scene
│ │ ├── battle/
│ │ │ └── KOOverlay.jsx # Mortal Kombat KO screen
│ │ └── ui/
│ │ ├── CameraCapture.jsx # Live camera + auto-lock
│ │ └── DropZone.jsx # Drag/drop/paste upload
│ ├── lib/
│ │ ├── faceMetrics.js # PSL + RMS scoring engine
│ │ ├── faceModel.js # face-api.js loader + SSD MobileNet
│ │ ├── glossaryData.js # 42 looksmaxxing term definitions
│ │ ├── roastBank.js # Static fallbacks + Groq integration
│ │ ├── shareCard.js # Canvas 2D share image generator
│ │ ├── sound.js # Web Audio API MK voice synthesis
│ │ └── store.js # Zustand global state
│ └── pages/
│ ├── Analyzer.jsx # PSL/RMS analyzer + history
│ ├── Battle.jsx # Thunderdome head-to-head
│ ├── Home.jsx # Landing + feature showcase
│ └── Lexicon.jsx # Blackpill term glossary
└── public/
├── sw.js # Service worker (model weight caching)
└── manifest.json # PWA manifest
The 3D skull in the background is entirely custom-built in Three.js — no external model files loaded. It's constructed from two deformed SphereGeometry meshes (neurocranium + mandible) with explicit feature shaping:
- Supraorbital torus (brow ridge projection)
- Zygomatic arch curves
- Gonial angle corners
- Orbital rims with positive canthal tilt
- Nasal piriform aperture
- Measurement overlay lines (amber thirds, red bizygomatic, blue canthal tilt)
Reacts to mouse movement, pulses on analysis completion, shakes on KO.
Zero external audio files. All sounds synthesized via Web Audio API:
MK-style voice synthesis pipeline:
Sawtooth oscillator → Formant bandpass bank → Hard distortion → Reverb convolution → Compressor
Phoneme map (30 phonemes): AA, AH, EH, IH, OH, OO, M, G, D, F, CH, K...
Word sequences: MOGGED, CANTHAL, FLAWLESS, SUBHUMAN, PSL GOD...
Last 10 analyses stored in localStorage — score, tier, metrics, roast text. Face images are not stored (too large). Accessible via the History panel in the Analyzer.
Generates 1080×1080 PNG share cards via Canvas 2D API with:
- Terminal grid background + noise grain
- Big PSL/RMS score with glow
- Tier label + verdict text
- All 6 metric bars
- AI roast excerpt
- Face photo overlay (if available)
- Web Share API on mobile, download fallback on desktop