Remote-first scam-safety practice for Vega TV.
Rehearse a calmer response to unexpected contact, one fictional situation at a time.
Watch the 2:26 demo · View the Devpost entry · Build and run · Contribute
Scam contact often tries to make a decision feel urgent. ScamStage gives learners a place to practise a response with a TV remote: pause, separate from the contact's instructions, and verify through an independently chosen route.
Choose an untimed response, see its consequence, then read the lesson. Rewind to try another approach and apply the same habit to a changed situation. The app uses safer, caution and risky feedback, without scores or penalties. No personal scam stories or credentials are needed.
These are unmodified, owner-approved stills from genuine Vega Virtual Device recordings. They are simulator evidence. Image provenance and rights.
| Practice | Habit to rehearse |
|---|---|
| Fake technical support | Pause before acting on an unexpected support contact. |
| Family impersonation | Separate an urgent request from an independently verified family contact. |
| Bank fraud alert | Check through a bank route you choose independently. |
| Marketplace buyer | Pause and verify unexpected buyer or payment instructions. |
The core experience includes:
- Remote navigation: D-pad/Select, visible focus and untimed choices.
- Consequence before lesson: see the outcome before its explanation.
- Rewind and transfer: retry a choice and apply the lesson to a changed situation.
- Readable offline content: complete written exercises, 58 packaged narration tracks and timed captions.
- Local progress: completed practices and preferences persist on the device.
- Bounded optional coaching: reviewed follow-up cards, with deterministic authored fallback.
flowchart TB
app["Vega app · D-pad / Select"] --> practice["Authored practice loop"]
app --> local["Packaged media + local progress"]
practice --> cards["Authored follow-up cards"]
practice -. "Completed practice path" .-> coach["Optional AWS coach"]
coach -. "Validated reviewed IDs" .-> cards
classDef core fill:#143047,stroke:#22D3EE,color:#E2F7FC
classDef result fill:#FCD34D,stroke:#DAB332,color:#111827
classDef optional fill:#27364A,stroke:#A5BBCD,color:#F8FAFC,stroke-dasharray:5 5
class app,practice,local core
class cards result
class coach optional
The optional service uses API Gateway → Lambda, DynamoDB usage limits, and Bedrock / Nova Micro. The model selects from eligible explanation and follow-up IDs; it does not write arbitrary learner-facing advice. The public app configuration disables cloud coaching. The demo shows the authored offline fallback, and running the four practices requires no AWS deployment. See backend contract and infrastructure boundaries.
ScamStage is a native Vega app. Start with the judge guide for the checked SDK version, aarch64 Release build, package validation, and Vega Virtual Device install/launch steps.
git clone https://github.com/rumi7911/scamstage.git
cd scamstage/app
npm ciUse a checkout path without spaces for the Vega build. The documented review route uses Vega SDK 0.24.9914, app identity com.scamstage.spike.main, and v0.5.0 / build 2. This repository provides source and required app assets; judges build their own package from the lockfile.
App checks, from app/:
npm run test:domain
npm test -- --runInBand --silent
npm run lint
npx tsc --noEmitBackend checks, from the repository root:
python3 -m unittest discover -s backend/tests -vRecorded on 4 October 2026: 16 app test suites / 145 tests, 21 backend tests, lint, typecheck, 58-track narration validation, package validation, and candidate simulator install/launch passed. These are dated local results, not a current CI status badge. Detailed release evidence.
A fresh source rehearsal on 13 October also passed all 145 app tests, backend tests, lint/typecheck, Release build, package validation and technical VVD install/launch. Human self-testing remains separate from these automated results.
The public video shows real simulator interaction and had owner-reported playback approval on 5 October. Physical-TV testing, independent participant usability studies, a launcher-tile visual check, and full on-device audio/caption review remain unclaimed. The video and public source are not asserted to be byte-identical builds. See the judge guide for the evidence boundaries.
| Path | Purpose |
|---|---|
app/ |
Vega React Native app, authored scenarios, local progress and packaged media. |
backend/ |
Optional reviewed-ID coach contract and Python tests. |
infra/ |
SAM templates, usage limits and deployment/teardown guidance. |
docs/judge-guide.md |
Build, install and review the app. |
docs/friction-log.md |
SDK/device setup observations and documented workarounds. |
docs/media/ |
Narration and feedback-tone provenance. |
Improvements to remote navigation, readable content, tests, setup guidance and reproducibility are welcome. Read the contribution guide, then open a focused bug report or improvement proposal.
ScamStage-authored code and written content are licensed under MIT, copyright 2026 Muhammad Sohaib Roomi.
The ScamStage name/logo, packaged narration, feedback audio and demonstration images are reserved assets. Their inclusion supports building, running and evaluating the project; MIT does not grant standalone media reuse. See asset terms, narration provenance and feedback-tone provenance.
The edited video's separately licensed music and production font files are not included in this source repository.



