尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Every ping forks your day. Parallel shows you both futures before you tap.
Built for CASCADE ’26 · Theme 3 · Problem 3: The Attention Digital Twin
Run it · All features · Project context · Logic & formulas · Psychology · Phone experience · Door to the Future · Real notifications · Architecture · Data & ML · Mobile build · API
You're studying. “aarav_07 and 12 others liked your post.”
| Universe A: you tap it | Universe B: your twin holds it |
|---|---|
| +2 min to look → Instagram opened → +17 min of reels → +8 min to remember where you were = ~27 focus minutes gone | Held until your next checkpoint, read in a 10-second batch = ~0.7 min |
Everyone's attention is different. The same like can cost one person 2 minutes and another 40. Parallel learns you: it predicts the chain of events one notification will set off, gives a range and a confidence, compares it with the counterfactual (what happens if you hold it), and then checks itself against what really happened.
Parallel is a digital twin of your attention. It is three things stacked on top of each other:
| Layer | What it does | Where it lives |
|---|---|---|
| The model | Learns when you focus best, what pulls you away, which apps fragment you, when you're tired and which pings actually matter. Simulates 2,000 futures per ping with Monte Carlo, and estimates the counterfactual from randomized holdouts. | backend/app/twin.py, backend/ml/ |
| The decision | For every ping: let it through, hold it until a checkpoint, or put it in a digest. Trusted senders always pass. When evidence is thin it asks you instead of deciding. | /api/simulations, Smart inbox |
| The feeling | Makes the number felt: swipe cards, a jar of held pings, doors that open onto comic futures, texts from future you, haptics for every choice. Comedy on top, real numbers underneath. | frontend/src/components/* |
It runs as a website, an installable PWA, and Android/iOS apps (Capacitor) from one React codebase.
Open /demo (for example http://localhost:5180/demo). It's a self-playing phone:
Signed in, open Simulations (/app/simulations); without an account, /demo. Pick a moment and watch it play on a phone. Each one is also a ready-made 1080×1920 video:
| Scenario | What it shows | Video |
|---|---|---|
| Study session: the Instagram like | Cost on top of the notification, both doors, the jar, the 1 PM batch | study.mp4 |
| Developer in flow: three pings, three calls | Algorithm bait held, Mom (VIP) passes, PR review to the 12:30 digest | dev.mp4 |
| 1 AM doomscroll: the late-night guard | Night guard, Door A's worst case, future you, wind down, morning digest | night.mp4 |
| Exam week: the group-chat storm | Strict mode, 14 messages → 1 held thread, auto-reply draft, 7 PM summary | exam.mp4 |
| The “we miss you” trap | Manipulation X-ray, teaser unmasking, re-engagement shield, aura | reengage.mp4 |
/demo?scenario=<id>&clean=1 is the recording mode (just the phone and captions) used to make these videos; scenarios are data in frontend/src/lib/scenarios.ts, so adding one is a few dozen lines.
| The twin learns… | How | Where you see it |
|---|---|---|
| When you focus best | Focus quality by weekday × hour, shifted by your declared wake/bed time and chronotype | Fingerprint heatmap, 3D ring, golden hours |
| What causes interruptions | Calibrated p(open | context): task depth, fatigue, time, sender, recent switches | Multiverse “why” factors, Twin brain |
| Which content causes prolonged sessions | p(rabbit hole) plus dwell-time models per app/category | Fragmentation bars, Replay |
| Which notifications matter | Your “did this matter?” taps, rules and randomized uplift per category | Smart inbox, Today |
| When you're fatigued | Behavioural estimate plus your 10-second energy check-ins | Today, planner, coach |
| Which apps fragment you | Breaks per day × cost per break; tool apps vs nag apps | Fingerprint, attention debt |
| “If I allow this now?” + counterfactual | 2,000 Monte Carlo futures; randomized holdouts; T-learner | Multiverse (hero feature) |
On day one the twin has no history, so it borrows the typical pattern of your kind of busy, then moves towards you as your data arrives. Its personal weight grows as n/(n+20).
| Persona | Starting focus peaks | Work tools | Most frequent pings | Fatigue usually from |
|---|---|---|---|---|
| Student | 10 AM and 9:30 PM | Notion, Docs, lectures | Social likes, DMs | 4 PM |
| Developer | 11 AM and 11 PM | VS Code, Terminal, GitHub | Work chat, email, news | 4:30 PM |
| Creator | 2 PM and 8 PM | Figma, Docs, Notion | Social likes (their feed is also their work) | 6 PM |
| Professional | 9:30 AM and 3 PM | Excel, Docs, Notion | Work chat, email, meetings | 3 PM |
| Page | What it does |
|---|---|
| Today | Echo the 3D companion, focus capacity, fatigue, golden hours, energy battery check-in, “did this matter?”, knowledge meter, held-pings jar, texts from future you, attention budget, focus reservation, context checkpoint, quests |
| Multiverse | Pick a ping and the moment it arrives. Guess its cost first, then see two comic universes over grounded numbers, raining futures, dominoes, the Door to the Future, a drag-to-fork decision, a holo badge card and a reality check that grades the prediction |
| Smart inbox | Swipe deck on phones (right allow, left hold, up digest, down noise), list on desktop, Peek on every card, deferred queue with a pourable jar, auto-reply drafts in 4 languages, and a till receipt when you clear it |
| Fingerprint | Your attention heatmap, 3D ring and fragmentation by app |
| Replay | Your day as a timeline of switches and focus blocks |
| Twin brain | Explorable knowledge graph of tasks, times, triggers, apps and outcomes |
| Accuracy | Calibration, comparison against a generic rule, drift (PSI), prediction-vs-reality |
| Data & models | Dataset preview, model registry, metrics vs baselines, hash-chained audit log |
| Coach (copilot) | Answers with cards you can act on: attention receipts, ping prices with Peek / Hold / Open, plans, the jar, X-rays. Acts for you with Undo (“hold everything except Mom for 90 minutes”, /hold 2h, /focus 50), diagnoses “I can't focus”, nudges you at most 3 times a day, remembers commitments. See docs/COACH.md. Voice and text in English, हिन्दी, मराठी, Español. Answers 25+ kinds of question (what now, plan my evening, Instagram vs YouTube, time lost this week, doomscrolling, exams, sleep, stress…), remembers the conversation and offers follow-up chips. Every number comes from a facts sheet built by your models; with an ANTHROPIC_API_KEY on the server, Claude writes the reply from the same facts |
| Lab | Attention budget and debt, co-focus rooms, habit experiments, developer Attention API + JS SDK, team health (aggregates only, k ≥ 5) |
The core numbers are serious; the way you meet them doesn't have to be. Everything below is built, tested at 375 px, and documented in docs/PHONE_EXPERIENCE.md.
| Feature | What it feels like |
|---|---|
| Swipe triage deck | Tinder for pings. Right allow, left hold, up digest, down “noise” (also teaches the twin it didn't matter). Stamps, a price tag in focus minutes, and a distinct haptic per direction. |
| Held-pings jar | A physics jar. Every hold drops a ball in, coloured by category. Tap or shake the phone to pour them out as one calm batch. |
| Drag to fork | Drag a token into Universe A or B. Live “+min” counters run as you drag; it ticks every quarter of the way. |
| Energy battery | Drag a battery up or down to check in. One tick per level. |
| Guess before reveal | Bet how many minutes the ping would eat before the twin answers. “Ate.” / “Delulu alert.” / “Dramatic much?” |
| Raining futures | The 2,000 simulated futures fall as dots and pile into the cost histogram. |
| Dominoes | Universe A's chain as dominoes sized by the minutes each step adds. They fall, one haptic each. |
| Holo badge cards | Each decision earns that universe's archetype card (Main Character Energy, Professional Thumb Athlete…). The foil follows your finger or the gyroscope. 12 to collect in a binder. |
| Inbox receipt | Clear the inbox and a till receipt prints: focus protected, opened on purpose, XP, “NO REELS WERE HARMED”, Share. |
| Door to the Future | Two doors per ping. Each opens onto a four-panel comic drawn in code from your numbers, ending on The Scrollfather or Main Character, with a shareable 1080×1920 poster. See docs/FUTURE_PEEK.md. |
| Manipulation X-ray | Each ping's wording is scanned (in memory only) for social proof, vague teasers, fake urgency, re-engagement bait, streak pressure, algorithm bait and FOMO hooks. Tap a chip to see how the tactic works; vague pings get “unmasked” with what they usually turn out to be. |
| Shields | The re-engagement shield sends “we miss you” pings to the digest; the holds everything but VIPs from 30 minutes before bed until you wake. |
A single haptic language runs through all of it (frontend/src/lib/feel.ts): native Capacitor haptics in the app, navigator.vibrate on Android Chrome, silent elsewhere, and a parallel.haptics = off switch.
Today the inbox is fed by realistic sample pings. The production design is documented step by step in docs/REAL_NOTIFICATIONS.md. In short:
NotificationListenerService (the user grants Notification access) sees each notification's package, category and timing, drops the text, asks the twin, and either lets it through, snoozes/cancels it and re-posts it at the checkpoint, or adds it to the digest. A heads-up “Parallel” notification with Peek / Hold / Open actions is how it appears on top of the original. Usage access (UsageStatsManager) gives the app timeline.POST /api/ingest/activitywatch); Windows UserNotificationListener later.The API reports this capability matrix at GET /api/platform/capabilities.
python -m ml.dataset creates a synthetic population: 60 users × 30 days, 81,582 notification events × 35 columns and 149,649 app sessions, saved as CSVs and SQLite tables.python -m ml.train trains population models evaluated on users never seen in training:| Target | Model | Unseen-user result | Baseline |
|---|---|---|---|
| p(open) | Gradient boosting + isotonic | AUC 0.845 | 0.728 |
| p(rabbit hole) | Gradient boosting + isotonic | AUC 0.802 | — |
| Focus cost p10–p90 | Quantile GBMs | 79% coverage, MAE 5.5 min | MAE 6.0 |
| Counterfactual | T-learner | 0.9 min gap vs randomized truth | — |
user_segments, user_notifications). Real events (source='live') are appended, and the twin refits from the database.git clone https://github.com/vizsh/Parallel.git
cd Parallel
./run.sh
On Windows: powershell -ExecutionPolicy Bypass -File .\run.ps1. Then open http://localhost:5180 (API on 8787). The script creates the Python venv, installs both halves, builds the synthetic dataset and trains the models on first run.
| Demo login | Password |
|---|---|
| [email protected] · [email protected] · [email protected] · [email protected] | parallel123 |
On your phone (same Wi-Fi, no installs): start Vite with --host (npm run dev -- --host), open http://<laptop-LAN-IP>:5180 and use Add to Home screen. The dev server forwards /api to the API on your laptop, so don't set VITE_API_URL for this: a hard-coded IP or port breaks every API call as soon as either changes. Allow Python and Node through the firewall on private networks if the phone can't connect. Full instructions: RUN.md and docs/MOBILE.md.
APK: needs the Android SDK (it comes with Android Studio): cd frontend && npm run android, then Build → Build APK(s). Java alone isn't enough, because Gradle needs Android's platform jars and build tools to compile and package the native shell.
React 19 (web · PWA · Capacitor Android/iOS) ──HTTPS/JWT──▶ FastAPI ──▶ SQLite
3D landing (R3F + GLSL) · 12 app screens twin.py · routine.py · population.py users · profiles · history
phone layer: swipe · jar · doors · texts routine_api · platform_api · assistant predictions · audit chain
i18n (4 languages) · voice coach · haptics ▲ versioned models (ml/train.py) ds_* population dataset
The life of one ping, end to end, is in docs/ARCHITECTURE.md and docs/CONTEXT.md.
| Layer | Stack |
|---|---|
| Frontend | React 19, Vite 6, TypeScript, Tailwind v4, motion (Framer Motion), three.js + React Three Fiber, GSAP, react-i18next |
| Native | Capacitor 8 (Android, iOS): haptics, local notifications, status bar, app |
| Backend | FastAPI, SQLite, scikit-learn, NumPy/pandas, JWT auth |
| ML | Gradient boosting + isotonic calibration, quantile GBMs, T-learner, Monte Carlo rollouts |
Parallel/
├─ README.md · RUN.md · CHANGELOG.md · CONTRIBUTING.md · run.sh · run.ps1
├─ docs/
│ ├─ CONTEXT.md ← start here: the whole project's context, decisions and gotchas
│ ├─ LOGIC_AND_FORMULAS.md every formula, transcribed from the code
│ ├─ PSYCHOLOGY.md notification manipulation, the research, and Parallel's counter-design
│ ├─ PHONE_EXPERIENCE.md every playful phone interaction, how it works, where it lives
│ ├─ FUTURE_PEEK.md Door to the Future + Texts from future you + the Gen Z backlog
│ ├─ REAL_NOTIFICATIONS.md running over real notifications: Android, iOS, desktop, permissions
│ ├─ ARCHITECTURE.md · DATA_AND_ML.md · MOBILE.md · API.md · FEATURES.md · ROADMAP.md
│ ├─ IDEATION.md · PRESENTER_GUIDE.md · Parallel_Project_Report.(pdf|docx)
│ └─ screenshots/
├─ sdk/parallel-sdk.js Attention API client
├─ backend/
│ ├─ app/ main · twin · routine · routine_api · platform_api · population · history · synth · assistant · gamify
│ ├─ ml/ dataset.py · train.py
│ └─ tests/ test_api.py
└─ frontend/
├─ src/landing/ TwinWorld (WebGL world) · shapes · scroll
├─ src/pages/ Landing · Auth · Onboarding (7 steps) · Demo · Privacy · Contact · NotFound
├─ src/app/ Today · Multiverse · Inbox · Fingerprint · Replay · Brain · Lab · Accuracy · Data & models · Coach · Settings
├─ src/components/ SwipeDeck · HeldJar · ForkDrag · EnergyBattery · GuessGame · FuturesRain · Dominoes · BadgeCard
│ Receipt · FuturePeek · ComicArt · FutureTexts · PhoneDemo · Universes · RoutineEditor · VoiceCoach · charts
├─ src/lib/ api · auth · feel (haptics) · future (comic builder) · futureTexts · cards · universes · native · i18n
├─ android/ · ios/ Capacitor native projects
└─ public/ PWA manifest, service worker, icons, robots, sitemap, OG image
| Status | |
|---|---|
| Personal twin, Multiverse, Smart inbox, population models, registry, audit | ✅ built and working |
| Routine-aware decisions, onboarding, check-ins, check moments | ✅ built |
| Phone-first layer (swipe, jar, fork drag, battery, guess, rain, dominoes, cards, receipt) | ✅ built, tested at phone width in a browser |
Door to the Future, Texts from future you, /demo | ✅ built, tested in a browser |
| X-ray, shields, aura & fate, peephole, plot twist, Simulations (5 scenarios + videos), rebuilt coach | ✅ built, tested in a browser |
| Haptics, shake and gyro on a real device | 🟡 code in place; vibration works in Android Chrome; shake and tilt need HTTPS or the native app; not yet tested on hardware |
| Inbox pings | 🟡 realistic samples from the API, not your phone's real notifications |
| Day-0 history and accuracy numbers | 🟡 synthetic, shaped by your declared routine; real data replaces it as it arrives |
| Badge cards and future texts | 🟡 stored on the device (localStorage), not synced to the backend |
| Android NotificationListener plugin | 🗺️ next; fully specified in REAL_NOTIFICATIONS.md |
| Signed APK / store builds | 🗺️ needs Android Studio (SDK) or a CI build |
The ordered plan is in docs/ROADMAP.md; the Gen Z feature backlog (aura points, plot-twist panels, weekly webtoon, door skins, co-op comics…) is in docs/FUTURE_PEEK.md.
| Doc | Read it when you want… |
|---|---|
| docs/CONTEXT.md | the full story: what exists, why it was built this way, conventions, gotchas, how to continue (also written for AI coding agents) |
| docs/FEATURE_LIST.md | every feature in one place, how it works, and its status |
| docs/LOGIC_AND_FORMULAS.md | every formula behind the numbers: the Monte Carlo chain, shrinkage, the decision rule, confidence, blending, evaluation, XP |
| docs/PSYCHOLOGY.md | how apps use notifications to pull people in, the evidence, and how each Parallel feature counters it |
| docs/PHONE_EXPERIENCE.md | how each interactive phone component works and where its code is |
| docs/FUTURE_PEEK.md | the Door to the Future spec, the comic system, future texts, the Gen Z backlog and art references |
| docs/REAL_NOTIFICATIONS.md | how Parallel would sit on top of real notifications on Android, iOS and desktop |
| docs/ARCHITECTURE.md | the system diagram and request flow |
| docs/DATA_AND_ML.md | the dataset, features, models and evaluation |
| docs/MOBILE.md |
POST /api/ingest/activitywatch?tz_offset_min=330; ActivityWatch times are UTC, 330 is IST).| Simulations | Five real-life phone scenarios (study, dev flow, 1 AM doomscroll, exam group chat, “we miss you” trap) with scrubber and MP4 downloads |
| Settings | Routine, weekly schedule, deadlines, tool vs nag apps, VIPs, privacy: pause learning, retention, export, delete |
| Aura & fate meter | Holding the line earns aura (+500 max), a confirmed doomscroll costs −1000; weekly tiers from NPC era to Main character. Today's needle swings between The Scrollfather and Main Character. |
| Peephole & plot twist | Press and hold a door to peek at its ending through the keyhole. When reality beats or misses the twin's range, a fifth comic panel appears where the twin admits it was wrong. |
| Texts from future you | Every decision queues a chat from “you, N minutes from now”, timed to the twin's predicted cost: “bro. it's 11:18 pm. we opened insta ‘to see who liked it’ 💀”. On Android/iOS it arrives as a real local notification. |
| Phone demo | /demo: a self-playing phone showing a notification landing and Parallel working on top of it. |
| PWA, Android and iOS builds |
| docs/API.md | every endpoint |
| docs/FEATURES.md | the 75-item backlog with status |
| docs/IDEATION.md | the problem, research, competitors and differentiators |
| docs/PRESENTER_GUIDE.md | a demo script for judges |
| RUN.md | running it on Mac, Windows and phones |