Today at a glance
Smoked6
Protected3
Waves ridden2
BEHAVIOR-CHANGE TECHNOLOGY — STARTING WITH SMOKING
QuitMap learns the hidden pattern behind your smoking and helps you catch the next cigarette before you reach for it.
Not by fighting the craving.
By getting there first.
Smoked6
Protected3
Waves ridden2
Lower risk Higher risk
Your next harder time is in 1h 20m
Protect this onenot burned
down 18%
Evening cluster detected
You tend to smoke most after work.See the distance your smoking adds up to on an actual map.
QuitMap combines the moments you report with the patterns your logs reveal over time.
Spot the hours, days, and situations where smoking usually wins.
Protect the next cigarette before it becomes automatic.
Every log makes your dashboards, harder times, and next steps more personal.
QuitMap turns your smoking history into a real-road trail so the habit becomes visible.
Heat maps show when smoking usually wins, without turning your day into a stats project.
QuitMap helps you protect the next cigarette before it becomes automatic.
Track the money your habit burns and the savings that start coming back.
Progress cards show whether your smoking is moving in the right direction.
The more honestly you log, the more personal your timing and next steps become.
Today
Map
Progress
Circle
You
QuitMap
Your mapEvery cigarette adds up. QuitMap makes the habit visible in distance, time, and money, so you can stop smoking on autopilot and start your quit plan with a clear next step.
Enter cigarettes, years, and pack cost in plain words.
See lifetime cigarettes, money, and distance.
See one clear estimate and one next move.
Simple math from your details. No medical claims.
Estimated spend: $0
Time smoking: 0 full daysNext 10 years: $0 more
Time smoking: 0 more full daysSmall changes today can change the next 10 years.
QuitMap shows how cigarettes, distance, money, and return time are estimated. If you remember better details later, you can edit them and the plan updates.
Pick a landmark, ZIP/city, or private address. Private addresses are used only to draw the trail, then hidden.
Pick a safe public starting point. QuitMap never asks for an exact home address.
Do not solve the whole habit right now. Wait for the next planned moment, then choose: smoke, skip, or start a short rescue.
The live map should use a Tanveer-owned Mapbox public access token only. Until then, QuitMap keeps the local canvas map, avoids exact home-address prompts, makes no map-provider calls by default, and keeps Mapbox blocked as the default visual until final provider QA and owner approval pass.
Format check only. QuitMap masks the value in reports and does not save it from this field.
Map provider gate not run yet.
Builds a masked Mapbox image URL from approximate country/city anchors only. No exact home address is used.
Mapbox static preview not built yet.
Start the return only when you are ready to turn the number into a plan.
Pick one simple card. The receiver still opens their own baseline, not your full result.
They start with their own numbers and build their own baseline.
Keep logging what really happens. QuitMap will stay quiet until the pattern earns trust.
Your chosen moments still drive today's plan.QuitMap will show the next planned cigarette and the simplest action to take.
Start when you want to protect the next planned cigarette.
This craving will pass in about 3 minutes — whether you smoke or not. You don't have to fight it. Let's ride it out together.
The wave is starting.
Notice the urge without fighting it. You do not have to decide yet.
A planned moment is the next pause QuitMap expects from your old rhythm. When it arrives, log what really happened: smoked, skipped, or craving.
Enter your smoking details to see your recovery time.
QuitMap updates the recovery estimate after every smoke, skip, or craving.
Prove messy-day behavior without changing the user's real current-day log.
Taper QA not run yet.
Use these buttons only to record what already happened.
Use Log later only for cigarettes you forgot to record earlier.
Choose how many, when the last one happened, and the closest reason.
QuitMap can learn from reasons over time, but you can keep logging without answering every prompt.
No pressure. The first screen still gives the truth and starter plan immediately.
When you skip one, QuitMap will learn what helped.Ready
QuitMap can prove the next reminder path locally before real cloud push is connected.
In-app fallback stays ready if browser push is blocked.
Real push needs account sync, device permission, and hosted notification jobs. This local simulator keeps the logic visible first.
QuitMap will explain what this spend number is based on.
QuitMap shows which numbers came from you and which older-year prices are still estimated.
Checks launch countries, currency codes, distance units, pricing defaults, and region labels before we trust localized calculations.
Country QA not run yet.
Only use this if you want to correct older years yourself.
Waiting for today's taper plan.
Compare today against usual coffee or tea.
Compare this week against usual drinks.
Watch vape, pouch, or replacement nicotine.
QuitMap checks whether lower smoking is being replaced by caffeine, alcohol, or replacement nicotine.
QuitMap needs a few logged days before it can trust the seven-day pattern.
Seed private demo history to test Rolling Body Load confidence without waiting a week.
Rolling Body Load scenario QA not run yet.
Cross-Habit Watch not built yet.
Cross-Habit Watch gate not run yet.
When an urge hits, use Protect this one. QuitMap gives you a guided pause without resetting your day.
Circle is a structured support feed for signed-in users. Only real skipped/protected wins can appear. Replies use fixed chips only.
Share a small win after a real skip and let others send quiet support.
A small win is ready to share privately.
This local preview proves the safety path exists before public activation. It creates a draft moderation packet only; nothing is sent, posted, or shared.
Safety packet not built yet.
QuitMap Circle gate not run yet.
The coach foundation reads the local taper plan, off-plan cigarettes, cravings, substitution watch, and official country support resource. It returns one recovery move instead of a giant dashboard.
After protected, smoked, or still-craving, QuitMap will show one next move here.
AI Rescue handoff not built yet.
Coach plan not built yet.
AI Coach safety gate not run yet.
QuitMap should learn coffee, alcohol, work breaks, driving, stress, time, and location-bucket patterns. This local preview uses safe buckets and manual arrival simulation only.
Trigger Intelligence gate not run yet.
Care Circle is designed for a partner, family member, friend, or clinician to receive only consented recovery summaries. No invite is sent, no contacts are uploaded, and no raw logs are shared in this build.
Care Circle gate not run yet.
QuitMap can show the money protected by delayed or skipped cigarettes and preview a future transfer ritual. No bank is connected, no investment advice is given, and no money moves in this build.
Money Vault gate not run yet.
The journal turns above-plan cigarettes, cravings, and body-load shifts into a calm recovery note. It stays private, local, and deterministic in this build.
Hard-day recovery note not built yet.
Hard Day Journal gate not run yet.
Saved on this device until Supabase login is connected.
The demo keeps profile, token, cost, and habit data in one exportable shape so it can move into a real account later.
Copy the local profile payload for debugging before cloud sync is enabled.
ReadyGather the export receipt, recovery timeline, and account controls into one plain review before any real login, support request, hosted write, billing action, or local clear exists.
This is local-only. It does not sign in, upload, send support, bill, sync, clear local data, call Supabase, or run any public account action.
Account safety hub not built yet.
Show the user what can be exported, what a future delete-account request must remove, and what remains blocked before real cloud accounts exist.
This is a local review only. It does not delete local data, call Supabase, or remove any account.
Proof still needed before delete, support, billing, attach, sync, or local clear.
Data rights review not built yet.
Prove the local profile has a restorable export package before account attach, cloud upload, or local clear can ever be trusted.
This is local-only. It does not sign in, upload, email support, bill, register a device, call AI, post publicly, or clear local data.
Account recovery seal not built yet.
Dry-run inspect the recovery packet and prove the current local profile is unchanged before any future attach, restore, upload, or clear path is trusted.
This is local-only. It does not restore, sign in, upload, read hosted rows, write hosted rows, email support, bill, register a device, call AI, post publicly, or clear local data.
Account recovery drill not run yet.
Turn the sealed recovery packet into a human-readable future restore plan before any real restore, attach, upload, or local clear path exists.
This is preview-only. It does not restore local data, replace state, sign in, read hosted rows, write hosted rows, upload records, bill, notify devices, call AI, post publicly, or clear local data.
Restore preview not built yet.
Rehearse account attach failed, hosted readback mismatch, restore-needed, and too-early clear paths before real accounts exist.
This is local-only. It does not attach, restore, read hosted rows, write hosted rows, upload records, send support, bill, notify devices, call AI, post publicly, or clear local data.
Failure simulator not run yet.
Prepare a redacted, user-copyable support packet for future attach, readback, restore, or recovery issues without sending anything.
This is local-only. It does not open email, submit a ticket, upload files, attach accounts, restore, read hosted rows, write hosted rows, bill, notify devices, call AI, post publicly, or clear local data.
Support packet not built yet.
Summarize the full local recovery chain in one readable timeline: export, seal, drill, restore preview, failure simulator, support packet, and the still-blocked launch gates.
This is local-only. It does not attach accounts, restore data, open support, upload files, read hosted rows, write hosted rows, bill, notify devices, call AI, post publicly, or clear local data.
Recovery readiness timeline not built yet.
Review official country quit-support resources and the privacy-policy skeleton before any public launch, account attach, billing, or cloud upload work is enabled.
Support and privacy URLs are drafts here. They must be published and manually reviewed before Apple or Google submission.
Support/privacy review not built yet.
Build the exact Supabase Auth setup checklist before live email, Google, Apple, account attach, or profile upload work is enabled.
This is local-only. It does not send magic links, start OAuth, exchange codes, create accounts, upload profiles, or clear local data.
Auth setup runbook not built yet.
Prove the exact conditions required before email, Google, Apple, account attach, or device sync can move from sandbox planning to live sign-in.
This is local-only. It does not send email, start OAuth, exchange codes, create users, attach profiles, upload records, clear local data, or update Supabase settings.
Real auth activation gate not built yet.
Review the future switches that will allow hosted email, Google, Apple, callback exchange, session checks, and profile attach to move from local planning into hosted QA.
This is local-only. It does not change environment settings, send auth calls, exchange codes, create users, write database rows, attach profiles, or clear local data.
Hosted auth switch gate not built yet.
Map every account-session state before real hosted auth is connected: no config, client not loaded, signed out, session found, expired session, attach blocked, hosted switch separation, and no side effects.
This is local-only. It does not call Supabase, check a live session, start sign-in, exchange codes, upload profiles, create rows, clear local data, or change config.
Auth session matrix not run yet.
Consolidate the account controls that must exist before public launch: export, delete account, sign out, delete local demo data, privacy URL, support URL, recovery path, and attach consent.
This is local-only. It does not sign out, delete accounts, clear local data, publish pages, contact support, submit store metadata, upload profiles, or call Supabase.
Account controls gate not run yet.
Define the exact order for turning on real Supabase auth: hosted setup, email first, callback/session verification, attach still blocked, then Google and Apple only after proof.
This is local-only. It does not change env settings, send email, start OAuth, exchange codes, check a live session, upload profiles, enable billing, register devices, or clear local data.
Real auth execution plan not built yet.
Review Apple App Store and Google Play blockers before privacy, support, auth, billing, screenshots, or native packaging are treated as submission-ready.
This is local-only. It does not submit metadata, upload builds, publish pages, start billing, send auth calls, or contact Apple/Google.
Store submission gate not built yet.
Review what is ready for PWA packaging and what still blocks real iOS and Android builds: bundle IDs, Android application ID, deep links, push tokens, icons, screenshots, and store accounts.
This is local-only. It does not create native projects, sign builds, upload binaries, register app identifiers, or contact Apple/Google/Expo.
Mobile packaging gate not built yet.
Review the public URL map before domain purchase, DNS, auth callbacks, privacy, legal, support, account, billing publishing, store metadata, email sender setup, or brand clearance are treated as ready.
This is local-only. It does not buy a domain, change DNS, publish pages, file marks, update store metadata, send email, or contact registrars.
Domain launch gate not built yet.
Check config validation, secret boundaries, client loading, session gates, redirect safety, and upload blockers before any real sign-in is wired.
Connection QA not run yet.
Build the founder checklist for the real Supabase project: what Tanveer copies, where it comes from, where it is pasted later, and which actions stay manual before any hosted auth test.
This is local-only. It does not create a project, save credentials, update Supabase, run SQL, load the client, send auth calls, upload data, enable billing, register devices, or clear local data.
Supabase owner setup assistant not built yet.
Prepare the manual SQL execution packet for the real Supabase SQL editor: schema first, RLS second, then contract QA before any hosted auth or profile upload is allowed.
Codex owns the code, QA, tracker, GitHub, and Vercel updates. Tanveer only runs the schema/RLS SQL manually inside his own Supabase dashboard when this gate says it is time.
This is local-only. It does not run SQL, create tables, enable RLS, save credentials, update Supabase, load the client, send auth calls, read/write hosted rows, enable billing, register devices, or clear local data.
Supabase SQL setup packet not built yet.
Check the local SQL file plan before Tanveer touches Supabase: schema file, RLS file, read-only verification file, 44-table inventory, and the Node QA contract that parses the real files.
This is local-only. It does not read Supabase, run SQL, create tables, enable RLS, accept proof, load auth, write data, upload files, enable billing, sync real users, or clear local data.
Supabase SQL file integrity preflight not built yet.
Final handoff before Tanveer runs SQL manually: Codex handles code, QA, tracker, GitHub, and Vercel; Tanveer can use the optional one-paste SQL bundle or separate schema/RLS files inside his own Supabase dashboard when this gate is green.
Simple path: open the SQL bundle, copy it into Supabase SQL Editor, run it once, then send back only the proof values. Do not send private keys, passwords, tokens, payment secrets, or customer data.
This is still local-only. It does not inspect Supabase, run SQL, accept schema/RLS as verified, load auth, write data, upload files, enable billing, sync real users, or clear local data.
Open SQL bundle only shows the one-paste file Tanveer can copy into Supabase SQL Editor. It does not run SQL, save secrets, or unlock live auth/writes.
Supabase owner SQL run readiness not built yet.
Prepare the checklist Tanveer uses after running SQL manually: table inventory, RLS proof, catalog-read proof, owner-scope proof, and no-clear blockers before hosted auth or sync can be trusted.
The packet now points to a read-only verification SQL file, so the proof step checks tables and RLS without unlocking login, writes, uploads, billing, or real sync.
This is local-only. It does not inspect Supabase, run SQL, read hosted rows, write hosted rows, load the client, send auth calls, upload profiles, enable billing, register devices, or clear local data.
Supabase manual verification packet not built yet.
Paste the non-secret proof values from the owner evidence handoff. This checks the format locally without trusting the database, saving secrets, loading Supabase, or enabling live accounts.
Even when every number matches, this stays a review sandbox: hosted config, auth, database writes, uploads, billing, real sync, and local clear remain blocked.
Open proof template only shows the non-secret paste-back checklist. Load sample proof is demo-only for local QA. It does not inspect Supabase, run SQL, save secrets, or unlock live auth/writes.
Evidence review sandbox not run yet.
Paste Tanveer's yes/no callback allowlist proof after he sets Supabase URL Configuration. This checks only the proof shape and secret boundary. It does not send email, exchange a callback, check a session, or unlock live accounts.
Public Supabase Auth settings cannot prove dashboard allowlist values. Use only yes/no evidence from
supabase/callback-allowlist-evidence-template.txt.
Sample proof is demo-only for QA. Even if every value is yes, this only queues the one owner-approved hosted email/callback/session proof; it does not approve production auth.
Callback allowlist evidence not reviewed yet.
Build the exact hosted environment packet for Supabase URL, public anon key, auth callbacks, default-off switches, and owner dashboard tasks before live email sign-in can be tested.
This is local-only. It does not write environment variables, update Supabase, load the client, send auth calls, run SQL, upload profiles, enable billing, or register devices.
Hosted config checklist not built yet.
Guard the moment real Supabase URL and public anon key are saved. Config can become reviewable, but client load, auth, reads, writes, billing, devices, and local clear must stay manual.
This is local-only. It does not save new config, load Supabase, check a session, send auth calls, read hosted rows, write hosted rows, upload profiles, enable billing, or register devices.
Hosted config activation guard not built yet.
Turn the real Supabase setup into a simple founder checklist: exact fields to collect, dashboard settings to confirm, and switches that must stay off before hosted QA.
This is local-only. It does not save credentials, update Supabase, send email, load the client, check sessions, write hosted rows, enable billing, or clear local data.
Hosted owner handoff gate not built yet.
Prepare the exact owner packet for real Supabase credentials: public env values, switch order, hosted callback URL, and the first email magic-link test steps.
This is local-only. It does not write environment variables, load Supabase, send email, check sessions, write hosted rows, enable billing, register devices, or clear local data.
Hosted QA activation packet not built yet.
Lock the full local-only setup order: Connection QA, Owner Setup, SQL Setup, SQL File Integrity, Owner SQL Run Readiness, Manual Verification, Hosted Config, Config Activation, Owner Handoff, and Hosted QA Packet.
This is local-only. It does not inspect Supabase, save credentials, run SQL, load the client, send auth calls, check sessions, read/write hosted rows, upload profiles, enable billing, register devices, or clear local data.
Supabase setup sequence lock not built yet.
Real sign-in is disabled until Supabase config and the browser client are connected.
Supabase browser client must exist before any real session can be checked.
No account session has been checked yet.
Upload stays blocked until a real Supabase user id exists.
Review what happens after a magic-link or OAuth return. QuitMap must detect the return, require a session check, and keep migration blocked until a real user id is confirmed.
Return handler QA not run yet.
Build a local-only contract for email, Google, or Apple sign-in. This does not send magic links, redirect OAuth, create users, or upload quit data.
Build a provider plan from one of the sign-in buttons above.
Review the future email sign-in executor. It must stay blocked until config, client, redirect, email, and manual switch gates are ready.
Email guard not run yet.
Build the first hosted provider test plan for email magic links, using the hosted config packet, email guard, return handler, signed-out start rule, and downstream upload blockers.
This is local-only. It does not send a magic link, exchange a callback, create a user, upload a profile, enable billing, register a device, or clear local data.
Hosted email auth QA plan not built yet.
Paste the non-secret yes/no evidence after the one owner-approved hosted email, callback, and session proof. This checks proof shape only, then keeps auth rollout blocked.
This is local-only. It does not send email, open an email link, exchange a callback, check a session, read or write hosted rows, upload, bill, push, call AI, sync, or clear local data.
Sample proof is demo-only for QA. Even if every value is yes, this panel cannot verify a real session or unlock account attach, hosted writes, billing, push, AI, sync, native/store launch, or local clear.
Hosted email proof evidence not reviewed yet.
Paste the non-secret yes/no session evidence after the hosted email proof review. This checks proof shape only, then keeps account attach and hosted data blocked.
This is local-only. It does not check a live session, read or write hosted rows, attach an account, upload, bill, push, call AI, sync, or clear local data.
Do not paste tokens, magic links, account rows, raw smoking logs, screenshots, or customer data. Sample proof is demo-only for QA. Even if every value is yes, this panel cannot approve account attach, hosted reads, hosted writes, billing, push, AI, sync, native/store launch, or local clear.
Hosted session proof evidence not reviewed yet.
Define the exact `getSession()` proof required after a hosted email callback returns, before account attach, profile upload, billing, or device registration can move forward.
This is local-only. It does not check a live session, create a user, upload a profile, enable billing, register a device, or clear local data.
Hosted session proof gate not built yet.
Bridge hosted session proof to the local migration payload. It maps identity matching, conflict handling, abort rules, and upload blockers before any real account attach.
This is local-only. It does not attach an account, write rows, upload a profile, enable billing, register a device, or clear local data.
Hosted attach handoff gate not built yet.
Define the first allowed Supabase write contract: migration batch first, profile upsert second, RLS owner match, idempotent retry, readback proof, and local recovery.
This is local-only. It does not call Supabase, insert a migration batch, upsert a profile, enable billing, register a device, or clear local data.
Hosted profile write gate not built yet.
Bridge the approved attach handoff to the first real hosted profile write. It locks the guarded profile-write executor, owner-scoped migration batch, profile bridge row, and readback blocker.
This is local-only. It does not check a live session, insert a migration batch, upsert a profile, write hosted rows, enable billing, register a device, or clear local data.
Hosted profile write execution bridge not built yet.
Define the proof packet immediately after the first future migration batch and profile write. It locks the session owner, batch status, profile row match, and secondary-row blocker.
This is local-only. It does not check a live session, read hosted rows, write hosted rows, enable billing, register a device, or clear local data.
Hosted first write readback bridge not built yet.
Define the remaining hosted migration row order after the profile write: plan rows, token events, receipts, Body Load, substitution alerts, notifications, and billing skip rules.
This is local-only. It does not call Supabase, write secondary rows, enable billing, register a device, or clear local data.
Hosted data row order gate not built yet.
Bridge the approved row order to the first future secondary-row migration. It locks allowed tables, duplicate keys, owner scope, row-count proof, and billing/device exclusions.
This is local-only. It does not write secondary rows, update billing, register devices, run readback, or clear local data.
Hosted secondary row execution bridge not built yet.
Bridge the future secondary-row migration to signed-in verification before the batch can be considered complete. It locks row counts, duplicate-key lookups, notification responses, and export proof.
This is local-only. It does not read hosted rows, update migration completion, enable billing, register devices, or clear local data.
Hosted secondary row readback bridge not built yet.
Prove future signed-in readback must match Cross-Habit rolling confidence, sample count, history length, and Body Load rows before local recovery data can ever be cleared.
This is local-only. It does not call Supabase, read hosted rows, write hosted rows, enable billing, register a device, call AI, post publicly, or clear local data.
Cross-Habit readback gate not built yet.
Define the signed-in readback proof required after future hosted writes: migration batch, profile bridge, row counts, duplicate-key lookups, notification responses, and export match.
This is local-only. It does not call Supabase, read hosted rows, write hosted rows, enable billing, register a device, or clear local data.
Hosted readback verification gate not built yet.
Lock the future moment where a migration batch can be marked complete. Completion must wait for signed-in readback, secondary-row readback, export proof, owner scope, and matching row counts.
This is local-only. It does not update migration status, read hosted rows, write hosted rows, enable billing, register a device, or clear local data.
Hosted migration batch completion guard not built yet.
Lock the scary step after hosted readback: export first, verify signed-in rows, match row counts, require typed confirmation, and keep local recovery data until everything checks out.
This is local-only. It does not erase local data, remove browser storage, call Supabase, send support requests, enable billing, or register a device.
Local data clear protection gate not built yet.
Define the first safe hosted check after real config: session proof plus read-only profile and migration-batch lookups, with every write path still disabled.
This is local-only. It does not call Supabase, run SELECT queries, insert rows, update records, delete data, enable billing, register a device, or clear local data.
Hosted read-only probe gate not built yet.
Bridge the local plan to the first real hosted email magic-link test. It locks the exact signInWithOtp call, redirect boundary, owner switch, and downstream blockers.
This is local-only. It does not send email, exchange a callback, check a live session, read hosted rows, write hosted rows, upload a profile, enable billing, register a device, or clear local data.
Hosted auth execution bridge not built yet.
Bridge the first real magic-link callback to session proof. It locks the exact callback exchange, manual owner switch, safe return URL, and downstream no-upload boundary.
This is local-only. It does not exchange a callback, check a live session, read hosted rows, write hosted rows, upload a profile, enable billing, register a device, or clear local data.
Hosted return execution bridge not built yet.
Bridge the hosted auth return to the first real account lookup. It locks the guarded read-only executor, owner profile id, count-only reads, and no-write boundary.
This is local-only. It does not exchange a callback, check a live session, read hosted rows, write hosted rows, upload a profile, enable billing, register a device, or clear local data.
Hosted read-only execution bridge not built yet.
Paste the non-secret yes/no read-only evidence after the owner read-only proof. This checks proof shape only, then keeps account attach and hosted writes blocked.
This is local-only. It does not check a live session, run hosted SELECTs, expose account rows, write hosted rows, attach an account, upload, bill, push, call AI, sync, or clear local data.
Sample proof is demo-only for QA. Even if every value is yes, this panel cannot approve account attach, hosted reads, hosted writes, billing, push, AI, sync, native/store launch, or local clear.
Hosted read-only proof evidence not reviewed yet.
Paste the non-secret yes/no account-attach evidence after the owner account-attach proof. This checks proof shape only, then keeps account attach, profile writes, and hosted writes blocked.
This is local-only. It does not check a live session, run hosted SELECTs, expose account rows, write hosted rows, attach an account, upload, bill, push, call AI, sync, or clear local data.
Sample proof is demo-only for QA. Even if every value is yes, this panel cannot approve account attach, profile writes, hosted writes, billing, push, AI, sync, native/store launch, or local clear.
Hosted account attach proof evidence not reviewed yet.
Check email, Google, and Apple sign-in contracts together before any live provider call is allowed.
Provider QA not run yet.
QuitMap is a self-awareness and planning tool, not medical advice. Local demo data stays on this device until a user explicitly attaches it to an account.
Support resources: official country help links must be sourced before public launch. Alcohol safety: QuitMap watches substitution only; it does not provide detox instructions.
Safety gate not run yet.
Before a local profile ever attaches to a real account, QuitMap must show the user exactly what will move, what identity will own it, what stays local, and what controls remain blocked.
This review is local only. It does not sign in, upload, clear local data, or create a cloud profile.
Attach review not built yet.
Build the exact local-to-Supabase payload for QA. This does not sign in, upload, or call the database.
No payload built yet.
Prove the dry-run preserves seven-day Body Load rows and Cross-Habit confidence before any hosted sync is allowed.
Rolling migration gate not run yet.
Simulate the future cloud-write sequence, blockers, duplicate guards, and rollback plan before we allow any real upload code.
No upload plan built yet.
Run a final no-network gate report before any future uploader exists. This proves live writes are still blocked.
No execution guard run yet.
Stress-test upload safety across no-plan, signed-out, fake-auth, switch, stale, and no-uploader scenarios.
Guard matrix not run yet.
Review the final human-consent gate. QuitMap must show what will move, preserve local data, and block migration until a real user chooses to attach the profile.
Consent guard not run yet.
Prove messy-day reality survives migration: multi-cigarette events, over-plan smoking, skipped quantity, and hosted notification responses.
No integrity check run yet.
Select a plan to preview monthly access or the one-time recovery price from your Return Home estimate.
Payment providers are not connected. This is local gate logic for QA.
Review country rates, estimated recovery-time price formula, product IDs, entitlement rules, receipt validation, cancellation paths, and provider blockers before real paid access exists.
This is local-only. It does not open checkout, start an in-app purchase, create products, charge users, write entitlement rows, or contact Stripe/Apple/Google.
Billing provider gate not built yet.
QuitMap will show the reason in plain words, without asking you to understand the math.
Based on today so far.
Choose one: enter each day, use the same average, mark no smoking, or keep them unknown. QuitMap confirms before the estimate changes.
Unknown days are excluded from the 7-day estimate, not counted as zero. QuitMap asks for confirmation before anything changes.