shipwithjev

Catalog / Tools & apps

0011GitHub

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. 0573

    Support chat: agent offered a human escalation path

    A frustrated customer hits a bot loop twice; the judge checks whether a human handoff was offered.

    everyai-com · Tools & apps

  2. 0572

    Subscription cancel: effective date is explicit

    An agent cancels a subscription; the judge checks the exact date the cancellation takes effect.

    everyai-com · Tools & apps

  3. 0571

    Sales quote: numbers match the official price list

    An agent quotes $29/seat against a price list; the judge checks the quote matches exactly.

    everyai-com · Tools & apps

  4. 0570

    Refund chat: agent stated the amount before issuing it

    A support agent issues a $42.50 refund; the judge checks the exact amount was stated before the refund was confirmed.

    everyai-com · Tools & apps