shipwithjev

Catalog / Tools & apps

0010GitHub

UXRay

A screen overlay that flags manipulative interface patterns.

Mohammad Zohaib’s heads-up display watches the whole system and asks Jev whether what is on screen is a dark pattern.

zohaib-md/UXRayREADME ↗
# Dark Pattern HUD (UXRay)

System-wide overlay that reads **visible** on-screen text via an `AccessibilityService`, sends it to TypeSafe's Jev API, and shows a floating badge when a manipulative UI pattern looks likely.

It never sends password-field values, and it skips the scan entirely on screens that look like card / PIN entry.

## Setup

1. Open `~/Projects/UXRay` in Android Studio.
2. Install on an emulator or device (min SDK 26).
3. Launch **Dark Pattern HUD**.
4. Paste a Jev API key and tap **Save key**.
5. Tap **Enable in Settings**, then turn on **Dark Pattern HUD** under Accessibility. This cannot be granted from the app.
6. Tap **Grant overlay** and allow **Display over other apps**.

Logcat tag: `UXRay`. The first real Jev response is logged in full so the Noul probability field can be confirmed.

## Confidence bands

| Probability | What happens |
|---|---|
| ≥ 0.9 | Floating badge names the pattern(s). Tap the badge for detail, then dismiss. |
| 0.6–0.9 | Quiet review log in the app. No interruption. |
| < 0.6 | Discarded. |

Session stats (screens scanned, median latency, cost from `input_tokens` at **$0.042 / million input tokens**) stay in memory. API errors are logged and swallowed — the service never crashes the foreground app.

## Test plan

After enabling the service and overlay:

1. Open Indian shopping / food-delivery apps (Flipkart, Amazon.in, Swiggy, Zomato, Meesho).
2. Scroll product, cart, and checkout-adjacent screens — **stop before entering card or UPI PIN**.
3. Screenshot or screen-record any screen where the badge fires.
4. Open Dark Pattern HUD again and note any **0.6–0.9** review-log rows. That middle band is the interesting result, not only the obvious catches.

Also filed under Tools & apps

  1. 0616

    Jevstiller: distill Jev calls into a local model

    A self-hosted proxy that trains a local model on Jev's answers. It served 72% of Banking77 locally at 15 ms, with a 2% audit and a bound on disagreement.

    tomerglick57 · Tools & apps · 15 ms local

  2. 0611

    Scruple: code checks for what linters miss

    Semantic-aware linting with System One models: rules you can state in a sentence, checked against your code by Jev.

    @nalexpeae · Tools & apps

  3. 0606

    Algolia-style Postgres search with a Jev reranker

    Typo tolerance, typeahead, barcodes and facet counts in plain Postgres SQL, plus an optional Jev step that asks one question per top-10 result.

    @alex_forman1 · Tools & apps

  4. 0604

    Virtual Closet: outfits from closet videos

    built a virtual closet & outfit generator from raw closet videos. classification + semantic search thanks to jev 🥰. clueless closet dreams finally coming to life

    @maitreemervana · Tools & apps