Problem

Scam calls and messages try to make a decision feel urgent. Reading a warning after the fact is different from practising what to do while a fictional caller is applying pressure. A TV-based, remote-controlled exercise can make the next move concrete without asking anyone to disclose a real scam experience or personal information.

Solution

ScamStage presents short fictional contact situations, lets the learner choose an untimed response with the remote, shows a consequence, and only then explains the safer principle. Rewind lets the learner try another response without a score or penalty. A changed situation asks them to apply the same habit in a new context. The complete written exercise remains usable if narration or networking is unavailable.

Why This Matters

The product rehearses one bounded, transferable habit: pause, separate from the contact's instructions, and verify through a route the learner chooses independently. It does not claim to guarantee protection or to diagnose a real message. The intended value is a readable, non-punitive practice experience for people who use a TV and remote.

Key Features

  • Four practices: fake technical support, family impersonation, bank fraud alert, and marketplace buyer.
  • D-pad/Select navigation with visible focus, untimed choices, and pause/replay/caption controls.
  • Consequence-before-lesson feedback using safer, caution, and risky language rather than scores or penalties.
  • Rewind, changed-situation transfer, and local completion/progress.
  • 58 locally generated narration tracks with timed captions and a readable offline fallback.
  • Optional reviewed-ID AWS coach path, with authored fallback when disabled or unavailable.

Architecture

The Fire TV entry is a Vega OS React Native app. Authored scenario content and deterministic state transitions drive the practice loop. Versioned local storage retains progress and preferences. Packaged narration and short feedback tones work without a cloud connection. A bounded optional backend can map approved learner history to reviewed follow-up IDs; the released demo configuration leaves it disabled, and the app shows authored fallback coaching. No credentials or real scam messages are required for a learner session.

How We Used AI

  • Local Kokoro text-to-speech generated 58 owned, script-reviewed narration tracks; timed captions and a full-text fallback preserve the content when audio is unavailable. The demo's external narration was also generated locally with a distinct Isabella voice.
  • The optional AWS Bedrock coach contract can select only reviewed follow-up IDs. It cannot write arbitrary learner-facing advice. Errors and disabled service state use deterministic, authored offline guidance. The service is disabled in the recorded demo, so the coach panel shown there is the authored fallback, not a live model response.
  • Original illustrative B-roll stills were generated for the demo and labelled as illustration. They do not recreate product UI. The app interaction is genuine Vega Virtual Device footage from the recorded build. The public source later replaced three feedback-tone WAVs for documented provenance; the edit mutes app video tracks and uses only an earlier bank-contact narration segment, so it does not mix the prior cues.

How We Used Codex

Codex helped turn the practice-loop design into the Vega React Native app, scenario and progress tests, bounded coach contract, narration/caption checks, release-package verification, and an evidence-first Remotion demo. The work kept automated tests, simulator observations, owner-reported visual review, and unperformed physical-TV or participant testing as separate evidence classes. This is a description of development assistance, not a claim that Codex autonomously validated user outcomes.

What I learned and the challenges

The build kept authored scenario logic separate from the platform so practice paths and progress could be tested independently. Media and focus behaviour still needed checks in the Vega Virtual Device: tests alone could not establish audio playback or TV readability. Consequence-before-lesson feedback, untimed choices, Rewind, and a complete written fallback shaped the implementation.

The interrupted SDK/device-image download needed repair; paths with spaces required a no-spaces build copy; the generated SDK Jest setup hung for pure logic tests; and visible simulator recording required repairing macOS capture permissions. The friction log records the tasks, observed failures, workarounds, and suggestions. Later packaged narration uses local owned WAVs; earlier network-media experiments do not describe the final architecture.

Run and test it

  1. Use Vega SDK 0.24.9914 and a Vega Virtual Device with an aarch64 TV image. Clone the public source repository into a path without spaces and follow docs/judge-guide.md to build the v0.5.0/build-2 package, validate it, install it, and launch it. The chosen public repository route is build from source; the local candidate VPKG is deliberately not in that repository.
  2. On the VVD, launch com.scamstage.spike.main. From Home choose Bank fraud alert. Use the remote to select a caution response; observe the outcome scene before its written lesson. Select Rewind, then choose the independent bank-app route. Continue to the changed bank-text situation and completion.
  3. Try focus movement, captions, pause/replay, and full readable text. Open the tech-support completion coach panel. Its label should identify the authored offline fallback and the optional Bedrock path as disabled in this recording.
  4. From app/, run npm ci, npm test -- --runInBand --silent, npm run lint, and npx tsc --noEmit. From the repository root, run python3 -m unittest discover -s backend/tests -v. A no-spaces temporary path is required for the Vega package build on this machine.

Recorded checks as of 4 October 2026: 16 Jest suites/145 tests, ESLint, TypeScript, 21 backend unit tests, 58-track handoff validation, package validation, and candidate VVD install/launch passed. Render-tree evidence is technical interaction evidence, not physical-TV readability or independent usability testing.

Source and judge guide: https://github.com/rumi7911/scamstage

Development friction log: https://github.com/rumi7911/scamstage/blob/main/docs/friction-log.md

Evidence and limitations

The public video is 2:26 and shows genuine Vega Virtual Device interaction. The owner approved the uploaded video's playback on 5 October. The public source replaces three earlier feedback cues with deterministic, documented tones; the video's app-video tracks are muted and its separately mixed app audio is bank-contact narration before feedback. The recorded footage and public source are not claimed to be byte-identical builds.

This is a simulator-tested prototype. Physical-TV testing, independent participant studies, and guaranteed scam protection are not claimed. The optional Bedrock coach is disabled in the recorded demo; the visible coach panel is authored offline fallback. A launcher-tile visual check and full on-device audio/caption review remain unconfirmed. The clean package has content/version validation, not byte-for-byte reproducibility across temporary build paths.

Authored code and text use MIT; brand/media reservations and third-party licensing are documented in ASSET-LICENSES.md. The public repository includes the source, packaged app assets, and setup instructions; judges build the Vega package from source.

Built With

Share this project:

Updates

Submission history