dumbtv
dumbtv가 ADB로 Fire TV에서 광고·추적·업데이트 알림을 제거, 루트·앱 변경 없이, 무료 오픈소스
Dormathon 2026, 트랙 1 예측 모델
Dormathon 2026, Track 1 (Predictive Model): Scam Guardian, a wallet demo that pauses risky transfers when someone may be coached by a scammer. Expo, Android and Web.
보안TypeScript · HTMLGitHub @51-Shenn온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A pause before the money moves.
The product page.
The demo: Guardian's read-out, the bank app, and the trusted contact's phone.
Scam Guardian demonstrates help for a person finding the transfer hard and a verification pause for a person who may be following someone else's instructions. Display categories come from demonstration policy, not a validated three-class detector.
This repository is a prototype for Dormathon 2026, Track 1, "Predict Early, Decide Better": an Expo application for Android and web with a product page and an interactive mock banking app. No real money moves.README 전문 보기 ↗PDF: ScamGuardianPitchDeck_ThreePeasInAPod_TaylorsUniversity
Scam Guardian demonstrates help for a person finding the transfer hard and a verification pause for a person who may be following someone else's instructions. Display categories come from demonstration policy, not a validated three-class detector.
This repository is a prototype for Dormathon 2026, Track 1, "Predict Early, Decide Better": an Expo application for Android and web with a product page and an interactive mock banking app. No real money moves.
| Session | In the demo | Response |
|---|---|---|
| Normal | Saved recipient, usual amount | No interruption |
| Struggling | Three back steps or two help taps | Simple mode: one instruction at a time, with larger controls after repeated back steps |
| Coached | Call active and a new recipient | A 15-second pause that asks whether someone is directing the transfer |
| Coached, high | The above, plus a pasted account number or more than 3x the usual amount | The same pause, and a request for the trusted contact to call |
After the pause the person can still continue. Guardian adds time and support; it never blocks someone's own money.
src/domain/risk.ts and binary AI review.A frozen model bundle from the AI team runs inside the app, on the device or in the browser. Nothing is downloaded and no server is called. Its only output is binary: recommend a review, or do not.
The two models
| Model | Used when | Inputs | Review threshold |
|---|---|---|---|
xgb_behavior_binary (XGBoost) | No payment request is present | Behaviour only | 0.724 |
lr_combined_binary (logistic regression) | An authored request has been delivered | Behaviour and request cues | 0.952 |
Both separate Normal_or_Struggling from Coached. Struggling is never a reason for an AI review. The files, thresholds and routing come from src/domain/model/selection.json and are unchanged from the handoff.
How a transfer reaches the model
src/domain/collector.ts turns each action in an opted-in transfer into a content-free event: an edit with its length change and whether it was typed or pasted, focus and blur, navigation, help taps, and app or window focus. No digits, names or amounts are recorded.src/domain/features.ts reduces the events so far to twenty behaviour features, their change over the last 5 seconds, and the current step.src/domain/request.ts turns its text into eleven yes/no cues such as urgency, secrecy and "ignore the warning". This is an English pattern matcher on a fixed demo message, not language understanding, and never a real message from another app.src/domain/contextual_inference.mjs, the AI team's runtime kept byte for byte, picks the model and compares its score with that model's threshold.What the app does with the result
src/domain/decision-support.ts. They are not learned outputs.What the model does not see
The simulated call, the simulated app switch, motion, the amount and the recipient's history. Those can only drive the separate rules in src/domain/risk.ts.
See it in the demo
/demo, pick Coached (the coached request with warning bypass) under Authored request in the controls card.Without a delivered request, behaviour alone has not triggered a review on transfers made in this app: five app-shaped transfers scored on device stayed under 0.72.
How well it works
| Evaluation | Coached sessions caught | Reviews on legitimate sessions |
|---|---|---|
| Original simulated test set | 647 of 720 (89.9%) | 2 of 720 |
| New authored challenge, 32 sessions | 6 of 16 (37.5%) | 2 of 16 |
Full results are in the diagnosis. Reproduce them with node scripts/evaluate_pitch_evidence.mjs --verify.
Limits
npm test checks that the bundled files match the handoff's hashes and that the app reproduces the AI team's worked examples. See reference/ai/README.md.
Use Node.js 22.13+ and npm (validated here with Node 22.18.0):
npm ci
npm run web
npm run android
Android builds require Android Studio's SDK and Java 21, plus a running emulator or connected device. npm run android generates the ignored native project through Expo and compiles it.
The product page at / only shows the bank app. Pressing the phone, or one of the four scenarios on the card beside it, opens /demo.
/demo shows three layouts: the Guardian read-out, Rohani's phone with the bank app, and Aina's phone as the trusted contact. On a wide screen they sit side by side and always fit the window. On a phone, a switch at the top moves between them.
Enable Guardian on the bank app's home screen. Family-alert consent is separate. Pick a preset under "Scenario preset", then start a transfer. The table at the top says what each one does.
A preset only sets the starting signals. Three of them can be changed by hand at any time:
npm run lint
npm run typecheck
npm test
npm run export:platforms
node scripts/preview.mjs
The application preview runs at http://127.0.0.1:4173, with the demo at /demo. Both Android and web bundles go into ignored dist/. These exports verify compilation, not APK assembly or device behavior.
The web build deploys to Vercel as a static site with npm run build:web; vercel.json holds the settings. No secrets and no model server are needed. See deployment instructions.
/evidence page: the presentation script and its evidence.src/app/: Expo Router landing and demo routes.src/screens/: responsive shared Android/web screens.src/components/bank/: the mock banking app, its transfer flow, the account-number field and the simulated other app.src/components/glass/: the frosted glass surface, as CSS backdrop blur on web and a translucent sheen on Android.src/components/guardian/: the read-out and presets, the product page's scenario card, the family phone, the phone frame, web beUI controls and platform art.src/domain/: the session reducer, demonstration risk rules, the signal collector, feature extraction, the on-device model bundle and tests.reference/ai/: the AI team's handoff files, kept byte for byte and used by the tests.tools/collectability-harness/: a separate Expo app that tests which behavioural fields can be collected. It is a test tool with its own package.json, not part of the product build.design/: the Hairline artifact and its source.docs/implementation-plan.md: research source, scope, remaining decisions and later integration work.AGENTS.md and CLAUDE.md: project instructions, including Conventional Commits.