Beta tester guide

Install, sign in, run a test survey, report what you saw.

Welcome — thank you for testing RoadEye. This page covers everything you need to install the app, sign in, run a test survey, and report what you saw. Plain-language — if you hit anything not covered here, copy any error text you can see and reply to whoever sent you this link.

What you're testing

You're testing a fresh build of the RoadEye Android app — a survey app that drives along a road, runs computer-vision detection on the road and roadside, and uploads the findings to a web dashboard.

Three things matter most for this beta:

  1. Install + onboarding works smoothly on a fresh device.
  2. At least one detection provider produces detections during a short drive (real or simulated).
  3. The drive shows up correctly on the web dashboard at roadeye.iroads.dev after Stop Drive.

Anything else you notice — UI weirdness, slowness, crashes, confusing copy — is also useful feedback.

Before you start

You need:

  • An Android phone (Android 7.0 / API 24 or newer).
  • ~50 MB free for the APK + breathing room for the SQLite cache and video segments (~50 MB per ~3-minute drive).
  • A network connection (WiFi or LTE) for sign-in and final upload. The app works offline during the drive and uploads when network comes back.

Permissions you'll grant during onboarding: camera, location (while using app), notifications. RoadEye does not access contacts, photos, microphone, or background location.

Step 1 — uninstall any prior RoadEye build (if present)

If you previously installed any version of RoadEye on this device, uninstall it first before installing the new APK:

  1. Long-press the RoadEye icon → Uninstall → confirm.
Why: this new build is signed with a different signing key than the older preview builds. Android refuses to update across signing keys with the error INSTALL_FAILED_UPDATE_INCOMPATIBLE. Fresh devices don't need this step.

Step 2 — install the APK

  1. On your phone, open this URL in Chrome: roadeye.iroads.dev/install/apk. It redirects to the current EAS-hosted APK artifact.
  2. When Chrome asks "This type of file can harm your device" — that's the normal sideload warning for any APK not from the Play Store. Tap Download anyway → wait for the download to finish.
  3. Tap the downloaded file in Chrome's download bar. Android will show "For your security, your phone currently isn't allowed to install unknown apps from this source." Tap Settings → enable Allow from this source → back arrow.
  4. Android shows the standard install prompt. Tap Install. The install takes ~30 seconds (the APK is ~215 MB — bundled video model + on-device ML weights).
  5. Open the app from your launcher.

Don't see the install prompt? Pull down the notification shade — the download notification usually has an Install button that bypasses the file-manager step.

Step 3 — sign in

  1. First screen says "Sign in to RoadEye" with a single text field labelled "Access code".
  2. Type: TRYME001 (case-sensitive — eight characters, no spaces).
  3. Tap Sign in.
    • If it works: brief "Signing you in…" then the Drive screen (black screen, camera viewfinder, big green Start drive button).
    • If it fails: tap the "Where do I get a code?" link for help text. Most likely cause: typo, or no network. Retry with WiFi if cellular is flaky.

TRYME001 is the public demo access code seeded into the demo organisation. Real-driver access codes use the same flow but with a real-driver org code.

Step 4 — onboarding (only happens once)

After the first sign-in, RoadEye walks you through a 7-step onboarding mini-tour. Tap Continue through each step. You'll grant camera + location permissions when prompted.

If the onboarding skips on you (because of a quick screen re-render), no problem — the same screens are available later via Settings → "Onboarding tour".

Permissions to grant when asked:

  • CameraAllow while using app.
  • LocationWhile using the app (not "All the time").
  • Notifications (Android 13+) → Allow.

Step 5 — try a short test drive (Test Survey Mode)

You can validate the full data path indoors using simulated GPS:

  1. Go to Settings (gear icon, bottom-right tab).
  2. Find the "Test Survey Mode" section.
  3. Toggle "Use simulated GPS (no driving needed)" to ON.
  4. Tap the Drive tab (bottom-left), then Start drive.

What you should see:

  • Live camera viewfinder (point at anything — doesn't matter for this test, but framing a road sign or traffic light will trigger real detections).
  • A route polyline shows the simulated GPS moving along a loop.
  • Counters tick up at the bottom: "Points: 1, 2, 3, …" and "Detections: 0".
  • After ~30 seconds, tap Stop drive.

A "Drive summary" card appears showing how many points + detections were captured. Tap Done to return to the Drive tab.

Step 6 — try each detection provider

This is the main thing the team wants you to test. Open Settings → Detection and you'll see five provider options:

ProviderWhat it doesExpected during a 30s drive
OffNo auto-detection. Manual taps still work via the palette.Detections: 0.
Demo (synthetic only — not real)Fake detections for demos. Don't pick this for a real survey.Detections: 4-8 (fake).
On-device — general (YOLOv8n)Runs on your phone, no internet needed. Traffic signs, stop signs, traffic lights.Detections: 0-many, depends on what's in front of the camera.
On-device — newest (YOLO26n, BETA)Newer model on the phone. Same classes; smaller + faster on recent devices. NEW.Detections: 0-many. Most important to test.
Cloud (recommended)Sends each frame to the RoadEye cloud. Best quality, uses data.Detections: depends on backend.

For each provider you want to test:

  1. Stop any drive that's running.
  2. Settings → Detection → tap the provider you want.
  3. Drive tab → Start drive.
  4. Hold the camera up to something with a stop sign, traffic light, or printed road sign on a screen for ~30 seconds.
  5. Stop drive. Note the detection count from the summary card.
  6. Tap the latest drive in the History tab → see the detection list with timestamps and class labels.
Critical for the YOLO26 BETA option: please report whether you see detections appearing on the live viewfinder (yellow bbox rectangles around objects). If "On-device (YOLOv8n)" sees a stop sign but "On-device (YOLO26n, BETA)" sees zero detections on the same frame, that's the key signal we need from beta. Switch between the two on the same camera framing if you can.

Step 7 — cross-check on the web dashboard

After Stop drive, the drive uploads to Supabase in the background (usually <30 seconds on WiFi). To see your drive on the web:

  1. On a laptop, open roadeye.iroads.dev.
  2. The map shows recent drives as route polylines. Your drive should appear with the device-id from your phone.
  3. Click any detection marker — a side panel opens with the class, confidence, and a link to QA review.
  4. Open the drive replay: click your drive → video player synced to the GPS scrubber with live bbox overlays on the recorded footage.
  5. Did the AI miss something? While the video is playing (or paused at any frame), use the new "+ Add detection here" button in the detection panel. Pick a class + severity + optional note; the entry is saved as a manual detection tied to your drive at the current video timestamp + GPS position. Admin / inspector role required.

If you have admin/inspector access on the web, also visit /admin/ai-monitoring and see per-provider job counts + the "Provider readiness" panel. This is the cross-validation: if mobile shows "On-device YOLO26 → 5 detections" and the admin page shows those 5 jobs with detection_provider=yolo26n-coco-v0, the chain is end-to-end healthy.

Step 8 — diagnostics (when something looks wrong)

  1. Settings → Field diagnostics.
  2. You'll see connectivity, configuration, identity, recent log events.
  3. Tap Share diagnostics. Send the resulting text blob to whoever sent you this guide. Diagnostics include device model, app version, recent log lines — no private data, no actual detection content.

What to report back

For each provider you tested, please include:

  • Provider name + your device model + Android version.
  • Time of day + lighting (outdoor / indoor / dark room).
  • What the camera was pointed at (printed sign, real road, TV, etc.).
  • Detection count from the summary card.
  • Did you see live bbox overlays on the viewfinder? yes / no / some.
  • Any crash, freeze, or noticeable lag.
  • Any UI text that was confusing or wrong.

If you can take a screenshot of the drive summary and the latest drive's History entry, that's gold.

Known issues (don't report these unless they look broken)

  1. Mobile route map is a placeholder card, not a real map. Intentional in this build. The web dashboard has the proper map.
  2. The 30-second simulated GPS loop is small, ~90 m around. Intentional — synthetic test track.
  3. Server provider may not respond if the Edge Function's primary backend is set to YOLO26 and the self-hosted endpoint isn't reachable. Fallback chain (YOLO26 → YOLOv8 via HF → stub) still produces some detections.
  4. Battery < 20% automatically drops GPS accuracy to "balanced" to save power. Plug in before a long drive for max-accuracy GPS.
  5. First start of a fresh app install can take 5-10 seconds while ML weights are loaded. Subsequent starts are instant.

Deliberate omissions in this build:

  • Live route map on mobile (web map is the route-review path).
  • iOS app (Android sideload only for now).
  • Play Store distribution.
  • Background drive (must keep the app foregrounded).

Where to find help

Thank you again. Specific, descriptive reports are more useful than "it didn't work" — paste exact error text + the diagnostics blob and we'll be able to triage fast.