This playbook is optimized for a live mentor demo where reliability matters more than breadth.
Use this exact framing:
- Consent-bound verification (not just static hash checks)
- One-time proof consumption (replay/copy misuse blocked)
- Verifier identity binding (
verifierName + verifierDomain) - Verification receipts with cryptographic hash trail
- Explainable trust score (clear policy checks + score breakdown)
- Apply DB migrations in order:
supabase/migrations/003_fix_credentials_user_fk_to_users.sqlsupabase/migrations/004_add_consent_bound_verification.sql
- Ensure
.env.localhas:NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYJWT_SECRETPINATA_JWT
- Start app:
npm run dev
- Smoke checks:
npm run lint(warnings allowed)npm run build(must pass)
- Login with real email domain (non-placeholder).
- Go to
Create Identity. - Upload a real government ID image/PDF.
- Show that a source document fingerprint (
sha256) is derived from the uploaded bytes. - Issue credential.
Narration: "We cryptographically fingerprint the actual uploaded document and bind credential issuance to that evidence."
- Go to
Verifypage. - Use the newly issued credential ID (auto-saved from browser local state).
- Run normal verification and show no PII exposure.
Narration: "Verifier learns validity and trust score without seeing raw identity data."
- In
Consent-Bound One-Time Verification:- Click
Create Request - Click
Approve Request - Click
Consume One-Time Proof
- Click
- Show
Verification Receipt Hash. - Click
Simulate Replay Attack. - Show it gets blocked.
Narration: "A copied token cannot be reused. Proof is single-consumption and verifier-bound."
- Show policy checks and trust-score breakdown panel.
Narration: "Decision transparency is built in, which helps for compliance and audit review."
Answer: "Not with our consent-bound flow. Verification needs a short-lived, verifier-bound proof token and is single-use. Replay attempts fail and are logged with receipts."
Answer: "Typical checks validate static artifacts. We validate dynamic consent, verifier binding, one-time consumption, and produce auditable receipts."
Answer: "AI verification and fraud scoring are integrated in the workflow today; model quality can be upgraded without changing the credentialing and verification contract."
- Verify migration
003has been applied (FK must targetusers). - Retry with a newly logged-in user.
- Create a fresh verification request (tokens are short-lived).
- Re-run approve -> consume.
- Hard refresh browser.
- Re-issue one credential and continue from verify page.
- Open these tabs before presenting:
/create-identity/verify- Supabase SQL editor (for confidence backup)
- Keep one fresh credential already issued as backup.
- Verify replay simulation once privately before stage.
- Close unrelated apps/tabs and disable auto-updates.
The project is final-demo-ready when all are true:
- You can issue a credential from uploaded document bytes.
- You can verify that exact newly issued credential.
- Consent-bound flow completes end-to-end.
- Replay simulation is blocked.
- Receipt hash is generated and displayed.
- Build passes (
npm run build).