Reading additional input from stdin...
OpenAI Codex v0.128.0 (research preview)
--------
workdir: J:\CLAUDE\PROJECTS\Wakeword
model: gpt-5.5
provider: openai
approval: never
sandbox: danger-full-access
reasoning effort: xhigh
reasoning summaries: none
session id: 019e00d5-128d-7602-b2e0-95156b89f6be
--------
user
Environment: Windows 11, bash shell. Project root: J:\CLAUDE\PROJECTS\Wakeword (master).

PROBLEM
Privacy Policy and Terms of Service at `console/frontend/src/pages/Privacy.tsx` + `Terms.tsx` were last updated 2026-03-28, before Stripe billing launch and before Resend email integration. They need:
1. A "Last updated: 2026-05-07" date refresh.
2. A new section disclosing **payment processing via Stripe** (data we share with Stripe — email, billing address as collected by Stripe Checkout — and a link to Stripe's privacy policy at https://stripe.com/privacy).
3. A new section disclosing **email service via Resend** (transactional emails sent on our behalf; Resend's privacy policy at https://resend.com/legal/privacy-policy).
4. **Data retention windows** explicitly stated:
   - Voice recordings: 30 days after upload, then auto-deleted (matches `VIOLAWAKE_RECORDING_RETENTION_DAYS=30` default).
   - Trained models: 90 days after creation (matches `VIOLAWAKE_MODEL_RETENTION_DAYS=90`).
   - Post-training source recordings: deleted 72 hours after training completion (matches `VIOLAWAKE_POST_TRAINING_RETENTION_HOURS=72`).
   - Account deletion: hard-deletes user, recordings, models, subscription cancelled within 24 hours.
5. **Right to deletion** statement: users can delete their account anytime via the Account Settings page; this triggers Stripe subscription cancellation + recording/model purge.

CONSTRAINTS
- Match existing tone/structure of Privacy.tsx and Terms.tsx (formal, plain-English, h2/h3 sections).
- Keep React JSX clean — same className patterns (`legal-section`, `legal-title`, `legal-updated`).
- No PowerShell. Use Read tool / sed / head / tail.
- Stage explicit files only. Commit logically.
- Do NOT push. Do NOT touch other files.

PROVE IT
1. `cd console/frontend && npm run build` must succeed.
2. Show diff of both files (head -100 of git diff).
3. Confirm `Last updated:` date now reads `May 7, 2026` in both files.

REPORT
- Files modified.
- New sections added.
- Commit SHA.
- Any content decisions you made (e.g., specific wording around data sharing).
codex
I’ll make the policy edits directly in the two requested React pages, then build, inspect the diff, stage only those files, and commit without pushing.
mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
codex
The worktree is already heavily dirty, so I’m going to keep the scope tight: read and edit only the two legal pages, then stage only those exact paths.
mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
codex
One of the parallel WSL reads timed out, so I’m switching to sequential bash reads to avoid tool contention. I have enough of the structure to patch; I’m just grabbing the remaining Terms tail before editing.
mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
codex
I’m going to update the legal copy now. The main wording choices are to keep Stripe as the payment processor of record, name the exact checkout data shared, and state Resend gets only what is needed to deliver transactional email.
apply patch
patch: completed
J:\CLAUDE\PROJECTS\Wakeword\console\frontend\src\pages\Privacy.tsx
J:\CLAUDE\PROJECTS\Wakeword\console\frontend\src\pages\Terms.tsx
diff --git a/console/frontend/src/pages/Privacy.tsx b/console/frontend/src/pages/Privacy.tsx
index 0c3943e3bfaf4ea44334c26eb1048a338d6d5cda..933971153cf755208a8c0c9f10a5a1ce9d194678
--- a/console/frontend/src/pages/Privacy.tsx
+++ b/console/frontend/src/pages/Privacy.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Privacy Policy</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Introduction</h2>
@@ -32,16 +32,17 @@
             When you record samples in the Console, those recordings are
             uploaded to the Console server and stored on the server filesystem
             so they can be used for the training job you requested. You can
-            delete your recordings from the dashboard at any time. Automatic
-            retention cleanup is now active: recordings are deleted after 90
-            days by default. Recordings linked to an in-progress training job
-            are never deleted until that job completes.
+            delete your recordings from the dashboard at any time. Voice
+            recordings are automatically deleted 30 days after upload. Source
+            recordings used for a completed training job are deleted 72 hours
+            after training completion.
           </p>
 
           <h3>2.3 Trained Models</h3>
           <p>
-            Models produced for your account are stored with your account until
-            you delete them or delete your account.
+            Models produced for your account are stored with your account for 90
+            days after creation unless you delete them or delete your account
+            sooner.
           </p>
 
           <h3>2.4 Billing Information</h3>
@@ -103,62 +104,83 @@
           <h2>7. Data Retention</h2>
           <ul>
             <li>
-              Account information is retained while your account remains active.
+              Account information is retained while your account remains active
+              unless you delete your account.
             </li>
             <li>
-              Recordings remain stored until you delete them or delete your
-              account.
+              Voice recordings are automatically deleted 30 days after upload.
             </li>
             <li>
-              Trained models remain stored until you delete them or delete your
-              account.
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
             </li>
             <li>
-              Recordings are automatically deleted after 90 days. Recordings
-              tied to an active training job are retained until that job
-              completes.
+              Trained models are automatically deleted 90 days after creation.
             </li>
             <li>
-              Trained models are automatically deleted after 365 days.
+              Account deletion hard-deletes your user account, recordings, and
+              trained models and cancels your active subscription within 24
+              hours.
             </li>
           </ul>
         </section>
 
         <section className="legal-section">
-          <h2>8. Third-Party Services</h2>
-          <ul>
-            <li>
-              <strong>Stripe</strong> processes payments and subscription events.
-              Stripe&apos;s privacy policy is available at{" "}
-              <a
-                href="https://stripe.com/privacy"
-                target="_blank"
-                rel="noopener noreferrer"
-              >
-                stripe.com/privacy
-              </a>
-              .
-            </li>
-          </ul>
+          <h2>8. Payment Processing</h2>
+          <p>
+            Payment processing is provided by Stripe. When you start or manage a
+            paid subscription, we share the information needed to create and
+            manage the Stripe Checkout or billing session, including your email
+            address and any billing address collected by Stripe Checkout. Stripe
+            processes payment details under its own privacy policy, available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>9. Email Service</h2>
+          <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend receives the email address and message content
+            needed to deliver those emails. Resend&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
         </section>
 
         <section className="legal-section">
-          <h2>9. Your Rights</h2>
+          <h2>10. Your Rights</h2>
           <ul>
             <li>Access the account information we hold about you</li>
             <li>Correct inaccurate account details</li>
             <li>Delete recordings, trained models, or your account</li>
           </ul>
           <p>
-            You can delete your account from the service API, and you can also
-            contact{" "}
+            You can delete your account at any time from the Account Settings
+            page. Account deletion cancels your Stripe subscription and purges
+            your recordings and trained models. You can also contact{" "}
             <a href="mailto:privacy@violawake.com">privacy@violawake.com</a> for
             privacy-related requests.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to This Policy</h2>
+          <h2>11. Changes to This Policy</h2>
           <p>
             We may update this Privacy Policy from time to time. When we make
             material changes, we will update the date above and publish the
@@ -167,7 +189,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Contact</h2>
+          <h2>12. Contact</h2>
           <p>
             For questions about this Privacy Policy or our data practices,
             contact us at{" "}
diff --git a/console/frontend/src/pages/Terms.tsx b/console/frontend/src/pages/Terms.tsx
index 0024d11a4ce618190026aa6d93f00b33f2775e7b..b060c9c3dddfdb5cc0e8dea7a56309df9ae54957
--- a/console/frontend/src/pages/Terms.tsx
+++ b/console/frontend/src/pages/Terms.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Terms of Service</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Service Description</h2>
@@ -110,10 +110,28 @@
           <h3>5.2 Paid Subscriptions</h3>
           <p>
             Developer and Business subscriptions are billed through Stripe on a
-            recurring basis until cancelled.
+            recurring basis until cancelled. We do not store full card numbers
+            or CVV values.
+          </p>
+
+          <h3>5.3 Stripe Checkout</h3>
+          <p>
+            When you start or manage a paid subscription, we share the
+            information needed to create and manage the Stripe Checkout or
+            billing session, including your email address and any billing address
+            collected by Stripe Checkout. Stripe&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
           </p>
 
-          <h3>5.3 Refunds</h3>
+          <h3>5.4 Refunds</h3>
           <p>
             If a service problem on our side materially prevents you from using
             a paid allocation, contact{" "}
@@ -123,8 +141,47 @@
         </section>
 
         <section className="legal-section">
-          <h2>6. Service Availability</h2>
+          <h2>6. Email Service</h2>
           <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend&apos;s privacy policy is available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>7. Data Retention and Account Deletion</h2>
+          <ul>
+            <li>
+              Voice recordings are automatically deleted 30 days after upload.
+            </li>
+            <li>
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
+            </li>
+            <li>
+              Trained models are automatically deleted 90 days after creation.
+            </li>
+            <li>
+              You can delete your account at any time from the Account Settings
+              page. Account deletion hard-deletes your user account, recordings,
+              and trained models and cancels your active Stripe subscription
+              within 24 hours.
+            </li>
+          </ul>
+        </section>
+
+        <section className="legal-section">
+          <h2>8. Service Availability</h2>
+          <p>
             We aim to keep the Console available, but we do not guarantee
             uninterrupted service. The Console may be unavailable because of
             maintenance, capacity limits, upstream provider outages, or events
@@ -133,7 +190,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>7. Limitation of Liability</h2>
+          <h2>9. Limitation of Liability</h2>
           <p>
             TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, VIOLAWAKE AND ITS
             AFFILIATES WILL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL,
@@ -149,7 +206,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>8. Indemnification</h2>
+          <h2>10. Indemnification</h2>
           <p>
             You agree to indemnify and hold ViolaWake harmless from claims,
             damages, losses, and expenses arising from your use of the service,
@@ -159,33 +216,35 @@
         </section>
 
         <section className="legal-section">
-          <h2>9. Termination</h2>
+          <h2>11. Termination</h2>
 
-          <h3>9.1 By You</h3>
+          <h3>11.1 By You</h3>
           <p>
-            You may close your account by using the available Console/API
-            account-deletion flow or by contacting{" "}
+            You may close your account from the Account Settings page or by
+            contacting{" "}
             <a href="mailto:hello@violawake.com">hello@violawake.com</a>. If
             you want to keep trained models, download them before deleting your
             account.
           </p>
 
-          <h3>9.2 By Us</h3>
+          <h3>11.2 By Us</h3>
           <p>
             We may suspend or terminate your account if you violate these Terms,
             abuse the service, or if we are required to do so by law.
           </p>
 
-          <h3>9.3 Effect of Termination</h3>
+          <h3>11.3 Effect of Termination</h3>
           <p>
             When an account is deleted, access to the Console ends and the
-            account data we still store for that account is removed through our
-            deletion workflow. Models you already downloaded remain yours.
+            user account, recordings, and trained models we still store for that
+            account are hard-deleted within 24 hours. Any active Stripe
+            subscription is cancelled as part of the same deletion workflow.
+            Models you already downloaded remain yours.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to These Terms</h2>
+          <h2>12. Changes to These Terms</h2>
           <p>
             We may update these Terms from time to time. When changes are
             material, we will update the date above and publish the revised
@@ -194,7 +253,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Governing Law</h2>
+          <h2>13. Governing Law</h2>
           <p>
             These Terms are governed by the laws of the State of Delaware,
             United States, without regard to conflict of law principles.
@@ -202,7 +261,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>12. Contact</h2>
+          <h2>14. Contact</h2>
           <p>
             For questions about these Terms, contact{" "}
             <a href="mailto:legal@violawake.com">legal@violawake.com</a>.

diff --git a/console/frontend/src/pages/Privacy.tsx b/console/frontend/src/pages/Privacy.tsx
index 0c3943e3bfaf4ea44334c26eb1048a338d6d5cda..933971153cf755208a8c0c9f10a5a1ce9d194678
--- a/console/frontend/src/pages/Privacy.tsx
+++ b/console/frontend/src/pages/Privacy.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Privacy Policy</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Introduction</h2>
@@ -32,16 +32,17 @@
             When you record samples in the Console, those recordings are
             uploaded to the Console server and stored on the server filesystem
             so they can be used for the training job you requested. You can
-            delete your recordings from the dashboard at any time. Automatic
-            retention cleanup is now active: recordings are deleted after 90
-            days by default. Recordings linked to an in-progress training job
-            are never deleted until that job completes.
+            delete your recordings from the dashboard at any time. Voice
+            recordings are automatically deleted 30 days after upload. Source
+            recordings used for a completed training job are deleted 72 hours
+            after training completion.
           </p>
 
           <h3>2.3 Trained Models</h3>
           <p>
-            Models produced for your account are stored with your account until
-            you delete them or delete your account.
+            Models produced for your account are stored with your account for 90
+            days after creation unless you delete them or delete your account
+            sooner.
           </p>
 
           <h3>2.4 Billing Information</h3>
@@ -103,62 +104,83 @@
           <h2>7. Data Retention</h2>
           <ul>
             <li>
-              Account information is retained while your account remains active.
+              Account information is retained while your account remains active
+              unless you delete your account.
             </li>
             <li>
-              Recordings remain stored until you delete them or delete your
-              account.
+              Voice recordings are automatically deleted 30 days after upload.
             </li>
             <li>
-              Trained models remain stored until you delete them or delete your
-              account.
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
             </li>
             <li>
-              Recordings are automatically deleted after 90 days. Recordings
-              tied to an active training job are retained until that job
-              completes.
+              Trained models are automatically deleted 90 days after creation.
             </li>
             <li>
-              Trained models are automatically deleted after 365 days.
+              Account deletion hard-deletes your user account, recordings, and
+              trained models and cancels your active subscription within 24
+              hours.
             </li>
           </ul>
         </section>
 
         <section className="legal-section">
-          <h2>8. Third-Party Services</h2>
-          <ul>
-            <li>
-              <strong>Stripe</strong> processes payments and subscription events.
-              Stripe&apos;s privacy policy is available at{" "}
-              <a
-                href="https://stripe.com/privacy"
-                target="_blank"
-                rel="noopener noreferrer"
-              >
-                stripe.com/privacy
-              </a>
-              .
-            </li>
-          </ul>
+          <h2>8. Payment Processing</h2>
+          <p>
+            Payment processing is provided by Stripe. When you start or manage a
+            paid subscription, we share the information needed to create and
+            manage the Stripe Checkout or billing session, including your email
+            address and any billing address collected by Stripe Checkout. Stripe
+            processes payment details under its own privacy policy, available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>9. Email Service</h2>
+          <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend receives the email address and message content
+            needed to deliver those emails. Resend&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
         </section>
 
         <section className="legal-section">
-          <h2>9. Your Rights</h2>
+          <h2>10. Your Rights</h2>
           <ul>
             <li>Access the account information we hold about you</li>
             <li>Correct inaccurate account details</li>
             <li>Delete recordings, trained models, or your account</li>
           </ul>
           <p>
-            You can delete your account from the service API, and you can also
-            contact{" "}
+            You can delete your account at any time from the Account Settings
+            page. Account deletion cancels your Stripe subscription and purges
+            your recordings and trained models. You can also contact{" "}
             <a href="mailto:privacy@violawake.com">privacy@violawake.com</a> for
             privacy-related requests.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to This Policy</h2>
+          <h2>11. Changes to This Policy</h2>
           <p>
             We may update this Privacy Policy from time to time. When we make
             material changes, we will update the date above and publish the
@@ -167,7 +189,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Contact</h2>
+          <h2>12. Contact</h2>
           <p>
             For questions about this Privacy Policy or our data practices,
             contact us at{" "}
diff --git a/console/frontend/src/pages/Terms.tsx b/console/frontend/src/pages/Terms.tsx
index 0024d11a4ce618190026aa6d93f00b33f2775e7b..b060c9c3dddfdb5cc0e8dea7a56309df9ae54957
--- a/console/frontend/src/pages/Terms.tsx
+++ b/console/frontend/src/pages/Terms.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Terms of Service</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Service Description</h2>
@@ -110,10 +110,28 @@
           <h3>5.2 Paid Subscriptions</h3>
           <p>
             Developer and Business subscriptions are billed through Stripe on a
-            recurring basis until cancelled.
+            recurring basis until cancelled. We do not store full card numbers
+            or CVV values.
+          </p>
+
+          <h3>5.3 Stripe Checkout</h3>
+          <p>
+            When you start or manage a paid subscription, we share the
+            information needed to create and manage the Stripe Checkout or
+            billing session, including your email address and any billing address
+            collected by Stripe Checkout. Stripe&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
           </p>
 
-          <h3>5.3 Refunds</h3>
+          <h3>5.4 Refunds</h3>
           <p>
             If a service problem on our side materially prevents you from using
             a paid allocation, contact{" "}
@@ -123,8 +141,47 @@
         </section>
 
         <section className="legal-section">
-          <h2>6. Service Availability</h2>
+          <h2>6. Email Service</h2>
           <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend&apos;s privacy policy is available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>7. Data Retention and Account Deletion</h2>
+          <ul>
+            <li>
+              Voice recordings are automatically deleted 30 days after upload.
+            </li>
+            <li>
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
+            </li>
+            <li>
+              Trained models are automatically deleted 90 days after creation.
+            </li>
+            <li>
+              You can delete your account at any time from the Account Settings
+              page. Account deletion hard-deletes your user account, recordings,
+              and trained models and cancels your active Stripe subscription
+              within 24 hours.
+            </li>
+          </ul>
+        </section>
+
+        <section className="legal-section">
+          <h2>8. Service Availability</h2>
+          <p>
             We aim to keep the Console available, but we do not guarantee
             uninterrupted service. The Console may be unavailable because of
             maintenance, capacity limits, upstream provider outages, or events
@@ -133,7 +190,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>7. Limitation of Liability</h2>
+          <h2>9. Limitation of Liability</h2>
           <p>
             TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, VIOLAWAKE AND ITS
             AFFILIATES WILL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL,
@@ -149,7 +206,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>8. Indemnification</h2>
+          <h2>10. Indemnification</h2>
           <p>
             You agree to indemnify and hold ViolaWake harmless from claims,
             damages, losses, and expenses arising from your use of the service,
@@ -159,33 +216,35 @@
         </section>
 
         <section className="legal-section">
-          <h2>9. Termination</h2>
+          <h2>11. Termination</h2>
 
-          <h3>9.1 By You</h3>
+          <h3>11.1 By You</h3>
           <p>
-            You may close your account by using the available Console/API
-            account-deletion flow or by contacting{" "}
+            You may close your account from the Account Settings page or by
+            contacting{" "}
             <a href="mailto:hello@violawake.com">hello@violawake.com</a>. If
             you want to keep trained models, download them before deleting your
             account.
           </p>
 
-          <h3>9.2 By Us</h3>
+          <h3>11.2 By Us</h3>
           <p>
             We may suspend or terminate your account if you violate these Terms,
             abuse the service, or if we are required to do so by law.
           </p>
 
-          <h3>9.3 Effect of Termination</h3>
+          <h3>11.3 Effect of Termination</h3>
           <p>
             When an account is deleted, access to the Console ends and the
-            account data we still store for that account is removed through our
-            deletion workflow. Models you already downloaded remain yours.
+            user account, recordings, and trained models we still store for that
+            account are hard-deleted within 24 hours. Any active Stripe
+            subscription is cancelled as part of the same deletion workflow.
+            Models you already downloaded remain yours.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to These Terms</h2>
+          <h2>12. Changes to These Terms</h2>
           <p>
             We may update these Terms from time to time. When changes are
             material, we will update the date above and publish the revised
@@ -194,7 +253,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Governing Law</h2>
+          <h2>13. Governing Law</h2>
           <p>
             These Terms are governed by the laws of the State of Delaware,
             United States, without regard to conflict of law principles.
@@ -202,7 +261,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>12. Contact</h2>
+          <h2>14. Contact</h2>
           <p>
             For questions about these Terms, contact{" "}
             <a href="mailto:legal@violawake.com">legal@violawake.com</a>.

codex
The two pages are patched. Next I’m running the required frontend build, then I’ll inspect the diff and verify the rendered date strings in source before staging.
mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
diff --git a/console/frontend/src/pages/Privacy.tsx b/console/frontend/src/pages/Privacy.tsx
index 0c3943e3bfaf4ea44334c26eb1048a338d6d5cda..933971153cf755208a8c0c9f10a5a1ce9d194678
--- a/console/frontend/src/pages/Privacy.tsx
+++ b/console/frontend/src/pages/Privacy.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Privacy Policy</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Introduction</h2>
@@ -32,16 +32,17 @@
             When you record samples in the Console, those recordings are
             uploaded to the Console server and stored on the server filesystem
             so they can be used for the training job you requested. You can
-            delete your recordings from the dashboard at any time. Automatic
-            retention cleanup is now active: recordings are deleted after 90
-            days by default. Recordings linked to an in-progress training job
-            are never deleted until that job completes.
+            delete your recordings from the dashboard at any time. Voice
+            recordings are automatically deleted 30 days after upload. Source
+            recordings used for a completed training job are deleted 72 hours
+            after training completion.
           </p>
 
           <h3>2.3 Trained Models</h3>
           <p>
-            Models produced for your account are stored with your account until
-            you delete them or delete your account.
+            Models produced for your account are stored with your account for 90
+            days after creation unless you delete them or delete your account
+            sooner.
           </p>
 
           <h3>2.4 Billing Information</h3>
@@ -103,62 +104,83 @@
           <h2>7. Data Retention</h2>
           <ul>
             <li>
-              Account information is retained while your account remains active.
+              Account information is retained while your account remains active
+              unless you delete your account.
             </li>
             <li>
-              Recordings remain stored until you delete them or delete your
-              account.
+              Voice recordings are automatically deleted 30 days after upload.
             </li>
             <li>
-              Trained models remain stored until you delete them or delete your
-              account.
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
             </li>
             <li>
-              Recordings are automatically deleted after 90 days. Recordings
-              tied to an active training job are retained until that job
-              completes.
+              Trained models are automatically deleted 90 days after creation.
             </li>
             <li>
-              Trained models are automatically deleted after 365 days.
+              Account deletion hard-deletes your user account, recordings, and
+              trained models and cancels your active subscription within 24
+              hours.
             </li>
           </ul>
         </section>
 
         <section className="legal-section">
-          <h2>8. Third-Party Services</h2>
-          <ul>
-            <li>
-              <strong>Stripe</strong> processes payments and subscription events.
-              Stripe&apos;s privacy policy is available at{" "}
-              <a
-                href="https://stripe.com/privacy"
-                target="_blank"
-                rel="noopener noreferrer"
-              >
-                stripe.com/privacy
-              </a>
-              .
-            </li>
-          </ul>
+          <h2>8. Payment Processing</h2>
+          <p>
+            Payment processing is provided by Stripe. When you start or manage a
+            paid subscription, we share the information needed to create and
+            manage the Stripe Checkout or billing session, including your email
+            address and any billing address collected by Stripe Checkout. Stripe
+            processes payment details under its own privacy policy, available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>9. Email Service</h2>
+          <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend receives the email address and message content
+            needed to deliver those emails. Resend&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
         </section>
 
         <section className="legal-section">
-          <h2>9. Your Rights</h2>
+          <h2>10. Your Rights</h2>
           <ul>
             <li>Access the account information we hold about you</li>
             <li>Correct inaccurate account details</li>
             <li>Delete recordings, trained models, or your account</li>
           </ul>
           <p>
-            You can delete your account from the service API, and you can also
-            contact{" "}
+            You can delete your account at any time from the Account Settings
+            page. Account deletion cancels your Stripe subscription and purges
+            your recordings and trained models. You can also contact{" "}
             <a href="mailto:privacy@violawake.com">privacy@violawake.com</a> for
             privacy-related requests.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to This Policy</h2>
+          <h2>11. Changes to This Policy</h2>
           <p>
             We may update this Privacy Policy from time to time. When we make
             material changes, we will update the date above and publish the
@@ -167,7 +189,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Contact</h2>
+          <h2>12. Contact</h2>
           <p>
             For questions about this Privacy Policy or our data practices,
             contact us at{" "}
diff --git a/console/frontend/src/pages/Terms.tsx b/console/frontend/src/pages/Terms.tsx
index 0024d11a4ce618190026aa6d93f00b33f2775e7b..b060c9c3dddfdb5cc0e8dea7a56309df9ae54957
--- a/console/frontend/src/pages/Terms.tsx
+++ b/console/frontend/src/pages/Terms.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Terms of Service</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Service Description</h2>
@@ -110,10 +110,28 @@
           <h3>5.2 Paid Subscriptions</h3>
           <p>
             Developer and Business subscriptions are billed through Stripe on a
-            recurring basis until cancelled.
+            recurring basis until cancelled. We do not store full card numbers
+            or CVV values.
+          </p>
+
+          <h3>5.3 Stripe Checkout</h3>
+          <p>
+            When you start or manage a paid subscription, we share the
+            information needed to create and manage the Stripe Checkout or
+            billing session, including your email address and any billing address
+            collected by Stripe Checkout. Stripe&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
           </p>
 
-          <h3>5.3 Refunds</h3>
+          <h3>5.4 Refunds</h3>
           <p>
             If a service problem on our side materially prevents you from using
             a paid allocation, contact{" "}
@@ -123,8 +141,47 @@
         </section>
 
         <section className="legal-section">
-          <h2>6. Service Availability</h2>
+          <h2>6. Email Service</h2>
           <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend&apos;s privacy policy is available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>7. Data Retention and Account Deletion</h2>
+          <ul>
+            <li>
+              Voice recordings are automatically deleted 30 days after upload.
+            </li>
+            <li>
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
+            </li>
+            <li>
+              Trained models are automatically deleted 90 days after creation.
+            </li>
+            <li>
+              You can delete your account at any time from the Account Settings
+              page. Account deletion hard-deletes your user account, recordings,
+              and trained models and cancels your active Stripe subscription
+              within 24 hours.
+            </li>
+          </ul>
+        </section>
+
+        <section className="legal-section">
+          <h2>8. Service Availability</h2>
+          <p>
             We aim to keep the Console available, but we do not guarantee
             uninterrupted service. The Console may be unavailable because of
             maintenance, capacity limits, upstream provider outages, or events
@@ -133,7 +190,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>7. Limitation of Liability</h2>
+          <h2>9. Limitation of Liability</h2>
           <p>
             TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, VIOLAWAKE AND ITS
             AFFILIATES WILL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL,
@@ -149,7 +206,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>8. Indemnification</h2>
+          <h2>10. Indemnification</h2>
           <p>
             You agree to indemnify and hold ViolaWake harmless from claims,
             damages, losses, and expenses arising from your use of the service,
@@ -159,33 +216,35 @@
         </section>
 
         <section className="legal-section">
-          <h2>9. Termination</h2>
+          <h2>11. Termination</h2>
 
-          <h3>9.1 By You</h3>
+          <h3>11.1 By You</h3>
           <p>
-            You may close your account by using the available Console/API
-            account-deletion flow or by contacting{" "}
+            You may close your account from the Account Settings page or by
+            contacting{" "}
             <a href="mailto:hello@violawake.com">hello@violawake.com</a>. If
             you want to keep trained models, download them before deleting your
             account.
           </p>
 
-          <h3>9.2 By Us</h3>
+          <h3>11.2 By Us</h3>
           <p>
             We may suspend or terminate your account if you violate these Terms,
             abuse the service, or if we are required to do so by law.
           </p>
 
-          <h3>9.3 Effect of Termination</h3>
+          <h3>11.3 Effect of Termination</h3>
           <p>
             When an account is deleted, access to the Console ends and the
-            account data we still store for that account is removed through our
-            deletion workflow. Models you already downloaded remain yours.
+            user account, recordings, and trained models we still store for that
+            account are hard-deleted within 24 hours. Any active Stripe
+            subscription is cancelled as part of the same deletion workflow.
+            Models you already downloaded remain yours.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to These Terms</h2>
+          <h2>12. Changes to These Terms</h2>
           <p>
             We may update these Terms from time to time. When changes are
             material, we will update the date above and publish the revised
@@ -194,7 +253,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Governing Law</h2>
+          <h2>13. Governing Law</h2>
           <p>
             These Terms are governed by the laws of the State of Delaware,
             United States, without regard to conflict of law principles.
@@ -202,7 +261,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>12. Contact</h2>
+          <h2>14. Contact</h2>
           <p>
             For questions about these Terms, contact{" "}
             <a href="mailto:legal@violawake.com">legal@violawake.com</a>.

codex
The first build command didn’t enter `console/frontend` because the terminal wrapper ignored the working directory. I’m rerunning it with an explicit `cd console/frontend && npm run build`, which is the command you asked to prove.
mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
diff --git a/console/frontend/src/pages/Privacy.tsx b/console/frontend/src/pages/Privacy.tsx
index 0c3943e3bfaf4ea44334c26eb1048a338d6d5cda..933971153cf755208a8c0c9f10a5a1ce9d194678
--- a/console/frontend/src/pages/Privacy.tsx
+++ b/console/frontend/src/pages/Privacy.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Privacy Policy</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Introduction</h2>
@@ -32,16 +32,17 @@
             When you record samples in the Console, those recordings are
             uploaded to the Console server and stored on the server filesystem
             so they can be used for the training job you requested. You can
-            delete your recordings from the dashboard at any time. Automatic
-            retention cleanup is now active: recordings are deleted after 90
-            days by default. Recordings linked to an in-progress training job
-            are never deleted until that job completes.
+            delete your recordings from the dashboard at any time. Voice
+            recordings are automatically deleted 30 days after upload. Source
+            recordings used for a completed training job are deleted 72 hours
+            after training completion.
           </p>
 
           <h3>2.3 Trained Models</h3>
           <p>
-            Models produced for your account are stored with your account until
-            you delete them or delete your account.
+            Models produced for your account are stored with your account for 90
+            days after creation unless you delete them or delete your account
+            sooner.
           </p>
 
           <h3>2.4 Billing Information</h3>
@@ -103,62 +104,83 @@
           <h2>7. Data Retention</h2>
           <ul>
             <li>
-              Account information is retained while your account remains active.
+              Account information is retained while your account remains active
+              unless you delete your account.
             </li>
             <li>
-              Recordings remain stored until you delete them or delete your
-              account.
+              Voice recordings are automatically deleted 30 days after upload.
             </li>
             <li>
-              Trained models remain stored until you delete them or delete your
-              account.
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
             </li>
             <li>
-              Recordings are automatically deleted after 90 days. Recordings
-              tied to an active training job are retained until that job
-              completes.
+              Trained models are automatically deleted 90 days after creation.
             </li>
             <li>
-              Trained models are automatically deleted after 365 days.
+              Account deletion hard-deletes your user account, recordings, and
+              trained models and cancels your active subscription within 24
+              hours.
             </li>
           </ul>
         </section>
 
         <section className="legal-section">
-          <h2>8. Third-Party Services</h2>
-          <ul>
-            <li>
-              <strong>Stripe</strong> processes payments and subscription events.
-              Stripe&apos;s privacy policy is available at{" "}
-              <a
-                href="https://stripe.com/privacy"
-                target="_blank"
-                rel="noopener noreferrer"
-              >
-                stripe.com/privacy
-              </a>
-              .
-            </li>
-          </ul>
+          <h2>8. Payment Processing</h2>
+          <p>
+            Payment processing is provided by Stripe. When you start or manage a
+            paid subscription, we share the information needed to create and
+            manage the Stripe Checkout or billing session, including your email
+            address and any billing address collected by Stripe Checkout. Stripe
+            processes payment details under its own privacy policy, available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>9. Email Service</h2>
+          <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend receives the email address and message content
+            needed to deliver those emails. Resend&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
         </section>
 
         <section className="legal-section">
-          <h2>9. Your Rights</h2>
+          <h2>10. Your Rights</h2>
           <ul>
             <li>Access the account information we hold about you</li>
             <li>Correct inaccurate account details</li>
             <li>Delete recordings, trained models, or your account</li>
           </ul>
           <p>
-            You can delete your account from the service API, and you can also
-            contact{" "}
+            You can delete your account at any time from the Account Settings
+            page. Account deletion cancels your Stripe subscription and purges
+            your recordings and trained models. You can also contact{" "}
             <a href="mailto:privacy@violawake.com">privacy@violawake.com</a> for
             privacy-related requests.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to This Policy</h2>
+          <h2>11. Changes to This Policy</h2>
           <p>
             We may update this Privacy Policy from time to time. When we make
             material changes, we will update the date above and publish the
@@ -167,7 +189,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Contact</h2>
+          <h2>12. Contact</h2>
           <p>
             For questions about this Privacy Policy or our data practices,
             contact us at{" "}
diff --git a/console/frontend/src/pages/Terms.tsx b/console/frontend/src/pages/Terms.tsx
index 0024d11a4ce618190026aa6d93f00b33f2775e7b..b060c9c3dddfdb5cc0e8dea7a56309df9ae54957
--- a/console/frontend/src/pages/Terms.tsx
+++ b/console/frontend/src/pages/Terms.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Terms of Service</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Service Description</h2>
@@ -110,10 +110,28 @@
           <h3>5.2 Paid Subscriptions</h3>
           <p>
             Developer and Business subscriptions are billed through Stripe on a
-            recurring basis until cancelled.
+            recurring basis until cancelled. We do not store full card numbers
+            or CVV values.
+          </p>
+
+          <h3>5.3 Stripe Checkout</h3>
+          <p>
+            When you start or manage a paid subscription, we share the
+            information needed to create and manage the Stripe Checkout or
+            billing session, including your email address and any billing address
+            collected by Stripe Checkout. Stripe&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
           </p>
 
-          <h3>5.3 Refunds</h3>
+          <h3>5.4 Refunds</h3>
           <p>
             If a service problem on our side materially prevents you from using
             a paid allocation, contact{" "}
@@ -123,8 +141,47 @@
         </section>
 
         <section className="legal-section">
-          <h2>6. Service Availability</h2>
+          <h2>6. Email Service</h2>
           <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend&apos;s privacy policy is available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>7. Data Retention and Account Deletion</h2>
+          <ul>
+            <li>
+              Voice recordings are automatically deleted 30 days after upload.
+            </li>
+            <li>
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
+            </li>
+            <li>
+              Trained models are automatically deleted 90 days after creation.
+            </li>
+            <li>
+              You can delete your account at any time from the Account Settings
+              page. Account deletion hard-deletes your user account, recordings,
+              and trained models and cancels your active Stripe subscription
+              within 24 hours.
+            </li>
+          </ul>
+        </section>
+
+        <section className="legal-section">
+          <h2>8. Service Availability</h2>
+          <p>
             We aim to keep the Console available, but we do not guarantee
             uninterrupted service. The Console may be unavailable because of
             maintenance, capacity limits, upstream provider outages, or events
@@ -133,7 +190,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>7. Limitation of Liability</h2>
+          <h2>9. Limitation of Liability</h2>
           <p>
             TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, VIOLAWAKE AND ITS
             AFFILIATES WILL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL,
@@ -149,7 +206,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>8. Indemnification</h2>
+          <h2>10. Indemnification</h2>
           <p>
             You agree to indemnify and hold ViolaWake harmless from claims,
             damages, losses, and expenses arising from your use of the service,
@@ -159,33 +216,35 @@
         </section>
 
         <section className="legal-section">
-          <h2>9. Termination</h2>
+          <h2>11. Termination</h2>
 
-          <h3>9.1 By You</h3>
+          <h3>11.1 By You</h3>
           <p>
-            You may close your account by using the available Console/API
-            account-deletion flow or by contacting{" "}
+            You may close your account from the Account Settings page or by
+            contacting{" "}
             <a href="mailto:hello@violawake.com">hello@violawake.com</a>. If
             you want to keep trained models, download them before deleting your
             account.
           </p>
 
-          <h3>9.2 By Us</h3>
+          <h3>11.2 By Us</h3>
           <p>
             We may suspend or terminate your account if you violate these Terms,
             abuse the service, or if we are required to do so by law.
           </p>
 
-          <h3>9.3 Effect of Termination</h3>
+          <h3>11.3 Effect of Termination</h3>
           <p>
             When an account is deleted, access to the Console ends and the
-            account data we still store for that account is removed through our
-            deletion workflow. Models you already downloaded remain yours.
+            user account, recordings, and trained models we still store for that
+            account are hard-deleted within 24 hours. Any active Stripe
+            subscription is cancelled as part of the same deletion workflow.
+            Models you already downloaded remain yours.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to These Terms</h2>
+          <h2>12. Changes to These Terms</h2>
           <p>
             We may update these Terms from time to time. When changes are
             material, we will update the date above and publish the revised
@@ -194,7 +253,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Governing Law</h2>
+          <h2>13. Governing Law</h2>
           <p>
             These Terms are governed by the laws of the State of Delaware,
             United States, without regard to conflict of law principles.
@@ -202,7 +261,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>12. Contact</h2>
+          <h2>14. Contact</h2>
           <p>
             For questions about these Terms, contact{" "}
             <a href="mailto:legal@violawake.com">legal@violawake.com</a>.

codex
Build passed. I’m checking the legal-page diff and file-specific status now, including whether the build left any ignored or tracked artifacts outside the requested files.
mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
diff --git a/console/frontend/src/pages/Privacy.tsx b/console/frontend/src/pages/Privacy.tsx
index 0c3943e3bfaf4ea44334c26eb1048a338d6d5cda..933971153cf755208a8c0c9f10a5a1ce9d194678
--- a/console/frontend/src/pages/Privacy.tsx
+++ b/console/frontend/src/pages/Privacy.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Privacy Policy</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Introduction</h2>
@@ -32,16 +32,17 @@
             When you record samples in the Console, those recordings are
             uploaded to the Console server and stored on the server filesystem
             so they can be used for the training job you requested. You can
-            delete your recordings from the dashboard at any time. Automatic
-            retention cleanup is now active: recordings are deleted after 90
-            days by default. Recordings linked to an in-progress training job
-            are never deleted until that job completes.
+            delete your recordings from the dashboard at any time. Voice
+            recordings are automatically deleted 30 days after upload. Source
+            recordings used for a completed training job are deleted 72 hours
+            after training completion.
           </p>
 
           <h3>2.3 Trained Models</h3>
           <p>
-            Models produced for your account are stored with your account until
-            you delete them or delete your account.
+            Models produced for your account are stored with your account for 90
+            days after creation unless you delete them or delete your account
+            sooner.
           </p>
 
           <h3>2.4 Billing Information</h3>
@@ -103,62 +104,83 @@
           <h2>7. Data Retention</h2>
           <ul>
             <li>
-              Account information is retained while your account remains active.
+              Account information is retained while your account remains active
+              unless you delete your account.
             </li>
             <li>
-              Recordings remain stored until you delete them or delete your
-              account.
+              Voice recordings are automatically deleted 30 days after upload.
             </li>
             <li>
-              Trained models remain stored until you delete them or delete your
-              account.
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
             </li>
             <li>
-              Recordings are automatically deleted after 90 days. Recordings
-              tied to an active training job are retained until that job
-              completes.
+              Trained models are automatically deleted 90 days after creation.
             </li>
             <li>
-              Trained models are automatically deleted after 365 days.
+              Account deletion hard-deletes your user account, recordings, and
+              trained models and cancels your active subscription within 24
+              hours.
             </li>
           </ul>
         </section>
 
         <section className="legal-section">
-          <h2>8. Third-Party Services</h2>
-          <ul>
-            <li>
-              <strong>Stripe</strong> processes payments and subscription events.
-              Stripe&apos;s privacy policy is available at{" "}
-              <a
-                href="https://stripe.com/privacy"
-                target="_blank"
-                rel="noopener noreferrer"
-              >
-                stripe.com/privacy
-              </a>
-              .
-            </li>
-          </ul>
+          <h2>8. Payment Processing</h2>
+          <p>
+            Payment processing is provided by Stripe. When you start or manage a
+            paid subscription, we share the information needed to create and
+            manage the Stripe Checkout or billing session, including your email
+            address and any billing address collected by Stripe Checkout. Stripe
+            processes payment details under its own privacy policy, available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>9. Email Service</h2>
+          <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend receives the email address and message content
+            needed to deliver those emails. Resend&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
         </section>
 
         <section className="legal-section">
-          <h2>9. Your Rights</h2>
+          <h2>10. Your Rights</h2>
           <ul>
             <li>Access the account information we hold about you</li>
             <li>Correct inaccurate account details</li>
             <li>Delete recordings, trained models, or your account</li>
           </ul>
           <p>
-            You can delete your account from the service API, and you can also
-            contact{" "}
+            You can delete your account at any time from the Account Settings
+            page. Account deletion cancels your Stripe subscription and purges
+            your recordings and trained models. You can also contact{" "}
             <a href="mailto:privacy@violawake.com">privacy@violawake.com</a> for
             privacy-related requests.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to This Policy</h2>
+          <h2>11. Changes to This Policy</h2>
           <p>
             We may update this Privacy Policy from time to time. When we make
             material changes, we will update the date above and publish the
@@ -167,7 +189,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Contact</h2>
+          <h2>12. Contact</h2>
           <p>
             For questions about this Privacy Policy or our data practices,
             contact us at{" "}
diff --git a/console/frontend/src/pages/Terms.tsx b/console/frontend/src/pages/Terms.tsx
index 0024d11a4ce618190026aa6d93f00b33f2775e7b..b060c9c3dddfdb5cc0e8dea7a56309df9ae54957
--- a/console/frontend/src/pages/Terms.tsx
+++ b/console/frontend/src/pages/Terms.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Terms of Service</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Service Description</h2>
@@ -110,10 +110,28 @@
           <h3>5.2 Paid Subscriptions</h3>
           <p>
             Developer and Business subscriptions are billed through Stripe on a
-            recurring basis until cancelled.
+            recurring basis until cancelled. We do not store full card numbers
+            or CVV values.
+          </p>
+
+          <h3>5.3 Stripe Checkout</h3>
+          <p>
+            When you start or manage a paid subscription, we share the
+            information needed to create and manage the Stripe Checkout or
+            billing session, including your email address and any billing address
+            collected by Stripe Checkout. Stripe&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
           </p>
 
-          <h3>5.3 Refunds</h3>
+          <h3>5.4 Refunds</h3>
           <p>
             If a service problem on our side materially prevents you from using
             a paid allocation, contact{" "}
@@ -123,8 +141,47 @@
         </section>
 
         <section className="legal-section">
-          <h2>6. Service Availability</h2>
+          <h2>6. Email Service</h2>
           <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend&apos;s privacy policy is available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>7. Data Retention and Account Deletion</h2>
+          <ul>
+            <li>
+              Voice recordings are automatically deleted 30 days after upload.
+            </li>
+            <li>
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
+            </li>
+            <li>
+              Trained models are automatically deleted 90 days after creation.
+            </li>
+            <li>
+              You can delete your account at any time from the Account Settings
+              page. Account deletion hard-deletes your user account, recordings,
+              and trained models and cancels your active Stripe subscription
+              within 24 hours.
+            </li>
+          </ul>
+        </section>
+
+        <section className="legal-section">
+          <h2>8. Service Availability</h2>
+          <p>
             We aim to keep the Console available, but we do not guarantee
             uninterrupted service. The Console may be unavailable because of
             maintenance, capacity limits, upstream provider outages, or events
@@ -133,7 +190,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>7. Limitation of Liability</h2>
+          <h2>9. Limitation of Liability</h2>
           <p>
             TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, VIOLAWAKE AND ITS
             AFFILIATES WILL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL,
@@ -149,7 +206,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>8. Indemnification</h2>
+          <h2>10. Indemnification</h2>
           <p>
             You agree to indemnify and hold ViolaWake harmless from claims,
             damages, losses, and expenses arising from your use of the service,
@@ -159,33 +216,35 @@
         </section>
 
         <section className="legal-section">
-          <h2>9. Termination</h2>
+          <h2>11. Termination</h2>
 
-          <h3>9.1 By You</h3>
+          <h3>11.1 By You</h3>
           <p>
-            You may close your account by using the available Console/API
-            account-deletion flow or by contacting{" "}
+            You may close your account from the Account Settings page or by
+            contacting{" "}
             <a href="mailto:hello@violawake.com">hello@violawake.com</a>. If
             you want to keep trained models, download them before deleting your
             account.
           </p>
 
-          <h3>9.2 By Us</h3>
+          <h3>11.2 By Us</h3>
           <p>
             We may suspend or terminate your account if you violate these Terms,
             abuse the service, or if we are required to do so by law.
           </p>
 
-          <h3>9.3 Effect of Termination</h3>
+          <h3>11.3 Effect of Termination</h3>
           <p>
             When an account is deleted, access to the Console ends and the
-            account data we still store for that account is removed through our
-            deletion workflow. Models you already downloaded remain yours.
+            user account, recordings, and trained models we still store for that
+            account are hard-deleted within 24 hours. Any active Stripe
+            subscription is cancelled as part of the same deletion workflow.
+            Models you already downloaded remain yours.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to These Terms</h2>
+          <h2>12. Changes to These Terms</h2>
           <p>
             We may update these Terms from time to time. When changes are
             material, we will update the date above and publish the revised
@@ -194,7 +253,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Governing Law</h2>
+          <h2>13. Governing Law</h2>
           <p>
             These Terms are governed by the laws of the State of Delaware,
             United States, without regard to conflict of law principles.
@@ -202,7 +261,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>12. Contact</h2>
+          <h2>14. Contact</h2>
           <p>
             For questions about these Terms, contact{" "}
             <a href="mailto:legal@violawake.com">legal@violawake.com</a>.

mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
diff --git a/console/frontend/src/pages/Privacy.tsx b/console/frontend/src/pages/Privacy.tsx
index 0c3943e3bfaf4ea44334c26eb1048a338d6d5cda..933971153cf755208a8c0c9f10a5a1ce9d194678
--- a/console/frontend/src/pages/Privacy.tsx
+++ b/console/frontend/src/pages/Privacy.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Privacy Policy</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Introduction</h2>
@@ -32,16 +32,17 @@
             When you record samples in the Console, those recordings are
             uploaded to the Console server and stored on the server filesystem
             so they can be used for the training job you requested. You can
-            delete your recordings from the dashboard at any time. Automatic
-            retention cleanup is now active: recordings are deleted after 90
-            days by default. Recordings linked to an in-progress training job
-            are never deleted until that job completes.
+            delete your recordings from the dashboard at any time. Voice
+            recordings are automatically deleted 30 days after upload. Source
+            recordings used for a completed training job are deleted 72 hours
+            after training completion.
           </p>
 
           <h3>2.3 Trained Models</h3>
           <p>
-            Models produced for your account are stored with your account until
-            you delete them or delete your account.
+            Models produced for your account are stored with your account for 90
+            days after creation unless you delete them or delete your account
+            sooner.
           </p>
 
           <h3>2.4 Billing Information</h3>
@@ -103,62 +104,83 @@
           <h2>7. Data Retention</h2>
           <ul>
             <li>
-              Account information is retained while your account remains active.
+              Account information is retained while your account remains active
+              unless you delete your account.
             </li>
             <li>
-              Recordings remain stored until you delete them or delete your
-              account.
+              Voice recordings are automatically deleted 30 days after upload.
             </li>
             <li>
-              Trained models remain stored until you delete them or delete your
-              account.
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
             </li>
             <li>
-              Recordings are automatically deleted after 90 days. Recordings
-              tied to an active training job are retained until that job
-              completes.
+              Trained models are automatically deleted 90 days after creation.
             </li>
             <li>
-              Trained models are automatically deleted after 365 days.
+              Account deletion hard-deletes your user account, recordings, and
+              trained models and cancels your active subscription within 24
+              hours.
             </li>
           </ul>
         </section>
 
         <section className="legal-section">
-          <h2>8. Third-Party Services</h2>
-          <ul>
-            <li>
-              <strong>Stripe</strong> processes payments and subscription events.
-              Stripe&apos;s privacy policy is available at{" "}
-              <a
-                href="https://stripe.com/privacy"
-                target="_blank"
-                rel="noopener noreferrer"
-              >
-                stripe.com/privacy
-              </a>
-              .
-            </li>
-          </ul>
+          <h2>8. Payment Processing</h2>
+          <p>
+            Payment processing is provided by Stripe. When you start or manage a
+            paid subscription, we share the information needed to create and
+            manage the Stripe Checkout or billing session, including your email
+            address and any billing address collected by Stripe Checkout. Stripe
+            processes payment details under its own privacy policy, available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>9. Email Service</h2>
+          <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend receives the email address and message content
+            needed to deliver those emails. Resend&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
         </section>
 
         <section className="legal-section">
-          <h2>9. Your Rights</h2>
+          <h2>10. Your Rights</h2>
           <ul>
             <li>Access the account information we hold about you</li>
             <li>Correct inaccurate account details</li>
             <li>Delete recordings, trained models, or your account</li>
           </ul>
           <p>
-            You can delete your account from the service API, and you can also
-            contact{" "}
+            You can delete your account at any time from the Account Settings
+            page. Account deletion cancels your Stripe subscription and purges
+            your recordings and trained models. You can also contact{" "}
             <a href="mailto:privacy@violawake.com">privacy@violawake.com</a> for
             privacy-related requests.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to This Policy</h2>
+          <h2>11. Changes to This Policy</h2>
           <p>
             We may update this Privacy Policy from time to time. When we make
             material changes, we will update the date above and publish the
@@ -167,7 +189,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Contact</h2>
+          <h2>12. Contact</h2>
           <p>
             For questions about this Privacy Policy or our data practices,
             contact us at{" "}
diff --git a/console/frontend/src/pages/Terms.tsx b/console/frontend/src/pages/Terms.tsx
index 0024d11a4ce618190026aa6d93f00b33f2775e7b..b060c9c3dddfdb5cc0e8dea7a56309df9ae54957
--- a/console/frontend/src/pages/Terms.tsx
+++ b/console/frontend/src/pages/Terms.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Terms of Service</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Service Description</h2>
@@ -110,10 +110,28 @@
           <h3>5.2 Paid Subscriptions</h3>
           <p>
             Developer and Business subscriptions are billed through Stripe on a
-            recurring basis until cancelled.
+            recurring basis until cancelled. We do not store full card numbers
+            or CVV values.
+          </p>
+
+          <h3>5.3 Stripe Checkout</h3>
+          <p>
+            When you start or manage a paid subscription, we share the
+            information needed to create and manage the Stripe Checkout or
+            billing session, including your email address and any billing address
+            collected by Stripe Checkout. Stripe&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
           </p>
 
-          <h3>5.3 Refunds</h3>
+          <h3>5.4 Refunds</h3>
           <p>
             If a service problem on our side materially prevents you from using
             a paid allocation, contact{" "}
@@ -123,8 +141,47 @@
         </section>
 
         <section className="legal-section">
-          <h2>6. Service Availability</h2>
+          <h2>6. Email Service</h2>
           <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend&apos;s privacy policy is available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>7. Data Retention and Account Deletion</h2>
+          <ul>
+            <li>
+              Voice recordings are automatically deleted 30 days after upload.
+            </li>
+            <li>
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
+            </li>
+            <li>
+              Trained models are automatically deleted 90 days after creation.
+            </li>
+            <li>
+              You can delete your account at any time from the Account Settings
+              page. Account deletion hard-deletes your user account, recordings,
+              and trained models and cancels your active Stripe subscription
+              within 24 hours.
+            </li>
+          </ul>
+        </section>
+
+        <section className="legal-section">
+          <h2>8. Service Availability</h2>
+          <p>
             We aim to keep the Console available, but we do not guarantee
             uninterrupted service. The Console may be unavailable because of
             maintenance, capacity limits, upstream provider outages, or events
@@ -133,7 +190,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>7. Limitation of Liability</h2>
+          <h2>9. Limitation of Liability</h2>
           <p>
             TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, VIOLAWAKE AND ITS
             AFFILIATES WILL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL,
@@ -149,7 +206,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>8. Indemnification</h2>
+          <h2>10. Indemnification</h2>
           <p>
             You agree to indemnify and hold ViolaWake harmless from claims,
             damages, losses, and expenses arising from your use of the service,
@@ -159,33 +216,35 @@
         </section>
 
         <section className="legal-section">
-          <h2>9. Termination</h2>
+          <h2>11. Termination</h2>
 
-          <h3>9.1 By You</h3>
+          <h3>11.1 By You</h3>
           <p>
-            You may close your account by using the available Console/API
-            account-deletion flow or by contacting{" "}
+            You may close your account from the Account Settings page or by
+            contacting{" "}
             <a href="mailto:hello@violawake.com">hello@violawake.com</a>. If
             you want to keep trained models, download them before deleting your
             account.
           </p>
 
-          <h3>9.2 By Us</h3>
+          <h3>11.2 By Us</h3>
           <p>
             We may suspend or terminate your account if you violate these Terms,
             abuse the service, or if we are required to do so by law.
           </p>
 
-          <h3>9.3 Effect of Termination</h3>
+          <h3>11.3 Effect of Termination</h3>
           <p>
             When an account is deleted, access to the Console ends and the
-            account data we still store for that account is removed through our
-            deletion workflow. Models you already downloaded remain yours.
+            user account, recordings, and trained models we still store for that
+            account are hard-deleted within 24 hours. Any active Stripe
+            subscription is cancelled as part of the same deletion workflow.
+            Models you already downloaded remain yours.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to These Terms</h2>
+          <h2>12. Changes to These Terms</h2>
           <p>
             We may update these Terms from time to time. When changes are
             material, we will update the date above and publish the revised
@@ -194,7 +253,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Governing Law</h2>
+          <h2>13. Governing Law</h2>
           <p>
             These Terms are governed by the laws of the State of Delaware,
             United States, without regard to conflict of law principles.
@@ -202,7 +261,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>12. Contact</h2>
+          <h2>14. Contact</h2>
           <p>
             For questions about these Terms, contact{" "}
             <a href="mailto:legal@violawake.com">legal@violawake.com</a>.

mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
diff --git a/console/frontend/src/pages/Privacy.tsx b/console/frontend/src/pages/Privacy.tsx
index 0c3943e3bfaf4ea44334c26eb1048a338d6d5cda..933971153cf755208a8c0c9f10a5a1ce9d194678
--- a/console/frontend/src/pages/Privacy.tsx
+++ b/console/frontend/src/pages/Privacy.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Privacy Policy</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Introduction</h2>
@@ -32,16 +32,17 @@
             When you record samples in the Console, those recordings are
             uploaded to the Console server and stored on the server filesystem
             so they can be used for the training job you requested. You can
-            delete your recordings from the dashboard at any time. Automatic
-            retention cleanup is now active: recordings are deleted after 90
-            days by default. Recordings linked to an in-progress training job
-            are never deleted until that job completes.
+            delete your recordings from the dashboard at any time. Voice
+            recordings are automatically deleted 30 days after upload. Source
+            recordings used for a completed training job are deleted 72 hours
+            after training completion.
           </p>
 
           <h3>2.3 Trained Models</h3>
           <p>
-            Models produced for your account are stored with your account until
-            you delete them or delete your account.
+            Models produced for your account are stored with your account for 90
+            days after creation unless you delete them or delete your account
+            sooner.
           </p>
 
           <h3>2.4 Billing Information</h3>
@@ -103,62 +104,83 @@
           <h2>7. Data Retention</h2>
           <ul>
             <li>
-              Account information is retained while your account remains active.
+              Account information is retained while your account remains active
+              unless you delete your account.
             </li>
             <li>
-              Recordings remain stored until you delete them or delete your
-              account.
+              Voice recordings are automatically deleted 30 days after upload.
             </li>
             <li>
-              Trained models remain stored until you delete them or delete your
-              account.
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
             </li>
             <li>
-              Recordings are automatically deleted after 90 days. Recordings
-              tied to an active training job are retained until that job
-              completes.
+              Trained models are automatically deleted 90 days after creation.
             </li>
             <li>
-              Trained models are automatically deleted after 365 days.
+              Account deletion hard-deletes your user account, recordings, and
+              trained models and cancels your active subscription within 24
+              hours.
             </li>
           </ul>
         </section>
 
         <section className="legal-section">
-          <h2>8. Third-Party Services</h2>
-          <ul>
-            <li>
-              <strong>Stripe</strong> processes payments and subscription events.
-              Stripe&apos;s privacy policy is available at{" "}
-              <a
-                href="https://stripe.com/privacy"
-                target="_blank"
-                rel="noopener noreferrer"
-              >
-                stripe.com/privacy
-              </a>
-              .
-            </li>
-          </ul>
+          <h2>8. Payment Processing</h2>
+          <p>
+            Payment processing is provided by Stripe. When you start or manage a
+            paid subscription, we share the information needed to create and
+            manage the Stripe Checkout or billing session, including your email
+            address and any billing address collected by Stripe Checkout. Stripe
+            processes payment details under its own privacy policy, available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>9. Email Service</h2>
+          <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend receives the email address and message content
+            needed to deliver those emails. Resend&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
         </section>
 
         <section className="legal-section">
-          <h2>9. Your Rights</h2>
+          <h2>10. Your Rights</h2>
           <ul>
             <li>Access the account information we hold about you</li>
             <li>Correct inaccurate account details</li>
             <li>Delete recordings, trained models, or your account</li>
           </ul>
           <p>
-            You can delete your account from the service API, and you can also
-            contact{" "}
+            You can delete your account at any time from the Account Settings
+            page. Account deletion cancels your Stripe subscription and purges
+            your recordings and trained models. You can also contact{" "}
             <a href="mailto:privacy@violawake.com">privacy@violawake.com</a> for
             privacy-related requests.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to This Policy</h2>
+          <h2>11. Changes to This Policy</h2>
           <p>
             We may update this Privacy Policy from time to time. When we make
             material changes, we will update the date above and publish the
@@ -167,7 +189,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Contact</h2>
+          <h2>12. Contact</h2>
           <p>
             For questions about this Privacy Policy or our data practices,
             contact us at{" "}
diff --git a/console/frontend/src/pages/Terms.tsx b/console/frontend/src/pages/Terms.tsx
index 0024d11a4ce618190026aa6d93f00b33f2775e7b..b060c9c3dddfdb5cc0e8dea7a56309df9ae54957
--- a/console/frontend/src/pages/Terms.tsx
+++ b/console/frontend/src/pages/Terms.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Terms of Service</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Service Description</h2>
@@ -110,10 +110,28 @@
           <h3>5.2 Paid Subscriptions</h3>
           <p>
             Developer and Business subscriptions are billed through Stripe on a
-            recurring basis until cancelled.
+            recurring basis until cancelled. We do not store full card numbers
+            or CVV values.
+          </p>
+
+          <h3>5.3 Stripe Checkout</h3>
+          <p>
+            When you start or manage a paid subscription, we share the
+            information needed to create and manage the Stripe Checkout or
+            billing session, including your email address and any billing address
+            collected by Stripe Checkout. Stripe&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
           </p>
 
-          <h3>5.3 Refunds</h3>
+          <h3>5.4 Refunds</h3>
           <p>
             If a service problem on our side materially prevents you from using
             a paid allocation, contact{" "}
@@ -123,8 +141,47 @@
         </section>
 
         <section className="legal-section">
-          <h2>6. Service Availability</h2>
+          <h2>6. Email Service</h2>
           <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend&apos;s privacy policy is available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>7. Data Retention and Account Deletion</h2>
+          <ul>
+            <li>
+              Voice recordings are automatically deleted 30 days after upload.
+            </li>
+            <li>
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
+            </li>
+            <li>
+              Trained models are automatically deleted 90 days after creation.
+            </li>
+            <li>
+              You can delete your account at any time from the Account Settings
+              page. Account deletion hard-deletes your user account, recordings,
+              and trained models and cancels your active Stripe subscription
+              within 24 hours.
+            </li>
+          </ul>
+        </section>
+
+        <section className="legal-section">
+          <h2>8. Service Availability</h2>
+          <p>
             We aim to keep the Console available, but we do not guarantee
             uninterrupted service. The Console may be unavailable because of
             maintenance, capacity limits, upstream provider outages, or events
@@ -133,7 +190,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>7. Limitation of Liability</h2>
+          <h2>9. Limitation of Liability</h2>
           <p>
             TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, VIOLAWAKE AND ITS
             AFFILIATES WILL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL,
@@ -149,7 +206,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>8. Indemnification</h2>
+          <h2>10. Indemnification</h2>
           <p>
             You agree to indemnify and hold ViolaWake harmless from claims,
             damages, losses, and expenses arising from your use of the service,
@@ -159,33 +216,35 @@
         </section>
 
         <section className="legal-section">
-          <h2>9. Termination</h2>
+          <h2>11. Termination</h2>
 
-          <h3>9.1 By You</h3>
+          <h3>11.1 By You</h3>
           <p>
-            You may close your account by using the available Console/API
-            account-deletion flow or by contacting{" "}
+            You may close your account from the Account Settings page or by
+            contacting{" "}
             <a href="mailto:hello@violawake.com">hello@violawake.com</a>. If
             you want to keep trained models, download them before deleting your
             account.
           </p>
 
-          <h3>9.2 By Us</h3>
+          <h3>11.2 By Us</h3>
           <p>
             We may suspend or terminate your account if you violate these Terms,
             abuse the service, or if we are required to do so by law.
           </p>
 
-          <h3>9.3 Effect of Termination</h3>
+          <h3>11.3 Effect of Termination</h3>
           <p>
             When an account is deleted, access to the Console ends and the
-            account data we still store for that account is removed through our
-            deletion workflow. Models you already downloaded remain yours.
+            user account, recordings, and trained models we still store for that
+            account are hard-deleted within 24 hours. Any active Stripe
+            subscription is cancelled as part of the same deletion workflow.
+            Models you already downloaded remain yours.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to These Terms</h2>
+          <h2>12. Changes to These Terms</h2>
           <p>
             We may update these Terms from time to time. When changes are
             material, we will update the date above and publish the revised
@@ -194,7 +253,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Governing Law</h2>
+          <h2>13. Governing Law</h2>
           <p>
             These Terms are governed by the laws of the State of Delaware,
             United States, without regard to conflict of law principles.
@@ -202,7 +261,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>12. Contact</h2>
+          <h2>14. Contact</h2>
           <p>
             For questions about these Terms, contact{" "}
             <a href="mailto:legal@violawake.com">legal@violawake.com</a>.

mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
diff --git a/console/frontend/src/pages/Privacy.tsx b/console/frontend/src/pages/Privacy.tsx
index 0c3943e3bfaf4ea44334c26eb1048a338d6d5cda..933971153cf755208a8c0c9f10a5a1ce9d194678
--- a/console/frontend/src/pages/Privacy.tsx
+++ b/console/frontend/src/pages/Privacy.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Privacy Policy</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Introduction</h2>
@@ -32,16 +32,17 @@
             When you record samples in the Console, those recordings are
             uploaded to the Console server and stored on the server filesystem
             so they can be used for the training job you requested. You can
-            delete your recordings from the dashboard at any time. Automatic
-            retention cleanup is now active: recordings are deleted after 90
-            days by default. Recordings linked to an in-progress training job
-            are never deleted until that job completes.
+            delete your recordings from the dashboard at any time. Voice
+            recordings are automatically deleted 30 days after upload. Source
+            recordings used for a completed training job are deleted 72 hours
+            after training completion.
           </p>
 
           <h3>2.3 Trained Models</h3>
           <p>
-            Models produced for your account are stored with your account until
-            you delete them or delete your account.
+            Models produced for your account are stored with your account for 90
+            days after creation unless you delete them or delete your account
+            sooner.
           </p>
 
           <h3>2.4 Billing Information</h3>
@@ -103,62 +104,83 @@
           <h2>7. Data Retention</h2>
           <ul>
             <li>
-              Account information is retained while your account remains active.
+              Account information is retained while your account remains active
+              unless you delete your account.
             </li>
             <li>
-              Recordings remain stored until you delete them or delete your
-              account.
+              Voice recordings are automatically deleted 30 days after upload.
             </li>
             <li>
-              Trained models remain stored until you delete them or delete your
-              account.
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
             </li>
             <li>
-              Recordings are automatically deleted after 90 days. Recordings
-              tied to an active training job are retained until that job
-              completes.
+              Trained models are automatically deleted 90 days after creation.
             </li>
             <li>
-              Trained models are automatically deleted after 365 days.
+              Account deletion hard-deletes your user account, recordings, and
+              trained models and cancels your active subscription within 24
+              hours.
             </li>
           </ul>
         </section>
 
         <section className="legal-section">
-          <h2>8. Third-Party Services</h2>
-          <ul>
-            <li>
-              <strong>Stripe</strong> processes payments and subscription events.
-              Stripe&apos;s privacy policy is available at{" "}
-              <a
-                href="https://stripe.com/privacy"
-                target="_blank"
-                rel="noopener noreferrer"
-              >
-                stripe.com/privacy
-              </a>
-              .
-            </li>
-          </ul>
+          <h2>8. Payment Processing</h2>
+          <p>
+            Payment processing is provided by Stripe. When you start or manage a
+            paid subscription, we share the information needed to create and
+            manage the Stripe Checkout or billing session, including your email
+            address and any billing address collected by Stripe Checkout. Stripe
+            processes payment details under its own privacy policy, available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>9. Email Service</h2>
+          <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend receives the email address and message content
+            needed to deliver those emails. Resend&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
         </section>
 
         <section className="legal-section">
-          <h2>9. Your Rights</h2>
+          <h2>10. Your Rights</h2>
           <ul>
             <li>Access the account information we hold about you</li>
             <li>Correct inaccurate account details</li>
             <li>Delete recordings, trained models, or your account</li>
           </ul>
           <p>
-            You can delete your account from the service API, and you can also
-            contact{" "}
+            You can delete your account at any time from the Account Settings
+            page. Account deletion cancels your Stripe subscription and purges
+            your recordings and trained models. You can also contact{" "}
             <a href="mailto:privacy@violawake.com">privacy@violawake.com</a> for
             privacy-related requests.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to This Policy</h2>
+          <h2>11. Changes to This Policy</h2>
           <p>
             We may update this Privacy Policy from time to time. When we make
             material changes, we will update the date above and publish the
@@ -167,7 +189,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Contact</h2>
+          <h2>12. Contact</h2>
           <p>
             For questions about this Privacy Policy or our data practices,
             contact us at{" "}
diff --git a/console/frontend/src/pages/Terms.tsx b/console/frontend/src/pages/Terms.tsx
index 0024d11a4ce618190026aa6d93f00b33f2775e7b..b060c9c3dddfdb5cc0e8dea7a56309df9ae54957
--- a/console/frontend/src/pages/Terms.tsx
+++ b/console/frontend/src/pages/Terms.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Terms of Service</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Service Description</h2>
@@ -110,10 +110,28 @@
           <h3>5.2 Paid Subscriptions</h3>
           <p>
             Developer and Business subscriptions are billed through Stripe on a
-            recurring basis until cancelled.
+            recurring basis until cancelled. We do not store full card numbers
+            or CVV values.
+          </p>
+
+          <h3>5.3 Stripe Checkout</h3>
+          <p>
+            When you start or manage a paid subscription, we share the
+            information needed to create and manage the Stripe Checkout or
+            billing session, including your email address and any billing address
+            collected by Stripe Checkout. Stripe&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
           </p>
 
-          <h3>5.3 Refunds</h3>
+          <h3>5.4 Refunds</h3>
           <p>
             If a service problem on our side materially prevents you from using
             a paid allocation, contact{" "}
@@ -123,8 +141,47 @@
         </section>
 
         <section className="legal-section">
-          <h2>6. Service Availability</h2>
+          <h2>6. Email Service</h2>
           <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend&apos;s privacy policy is available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>7. Data Retention and Account Deletion</h2>
+          <ul>
+            <li>
+              Voice recordings are automatically deleted 30 days after upload.
+            </li>
+            <li>
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
+            </li>
+            <li>
+              Trained models are automatically deleted 90 days after creation.
+            </li>
+            <li>
+              You can delete your account at any time from the Account Settings
+              page. Account deletion hard-deletes your user account, recordings,
+              and trained models and cancels your active Stripe subscription
+              within 24 hours.
+            </li>
+          </ul>
+        </section>
+
+        <section className="legal-section">
+          <h2>8. Service Availability</h2>
+          <p>
             We aim to keep the Console available, but we do not guarantee
             uninterrupted service. The Console may be unavailable because of
             maintenance, capacity limits, upstream provider outages, or events
@@ -133,7 +190,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>7. Limitation of Liability</h2>
+          <h2>9. Limitation of Liability</h2>
           <p>
             TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, VIOLAWAKE AND ITS
             AFFILIATES WILL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL,
@@ -149,7 +206,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>8. Indemnification</h2>
+          <h2>10. Indemnification</h2>
           <p>
             You agree to indemnify and hold ViolaWake harmless from claims,
             damages, losses, and expenses arising from your use of the service,
@@ -159,33 +216,35 @@
         </section>
 
         <section className="legal-section">
-          <h2>9. Termination</h2>
+          <h2>11. Termination</h2>
 
-          <h3>9.1 By You</h3>
+          <h3>11.1 By You</h3>
           <p>
-            You may close your account by using the available Console/API
-            account-deletion flow or by contacting{" "}
+            You may close your account from the Account Settings page or by
+            contacting{" "}
             <a href="mailto:hello@violawake.com">hello@violawake.com</a>. If
             you want to keep trained models, download them before deleting your
             account.
           </p>
 
-          <h3>9.2 By Us</h3>
+          <h3>11.2 By Us</h3>
           <p>
             We may suspend or terminate your account if you violate these Terms,
             abuse the service, or if we are required to do so by law.
           </p>
 
-          <h3>9.3 Effect of Termination</h3>
+          <h3>11.3 Effect of Termination</h3>
           <p>
             When an account is deleted, access to the Console ends and the
-            account data we still store for that account is removed through our
-            deletion workflow. Models you already downloaded remain yours.
+            user account, recordings, and trained models we still store for that
+            account are hard-deleted within 24 hours. Any active Stripe
+            subscription is cancelled as part of the same deletion workflow.
+            Models you already downloaded remain yours.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to These Terms</h2>
+          <h2>12. Changes to These Terms</h2>
           <p>
             We may update these Terms from time to time. When changes are
             material, we will update the date above and publish the revised
@@ -194,7 +253,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Governing Law</h2>
+          <h2>13. Governing Law</h2>
           <p>
             These Terms are governed by the laws of the State of Delaware,
             United States, without regard to conflict of law principles.
@@ -202,7 +261,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>12. Contact</h2>
+          <h2>14. Contact</h2>
           <p>
             For questions about these Terms, contact{" "}
             <a href="mailto:legal@violawake.com">legal@violawake.com</a>.

codex
The source review and `git diff --check` are clean. I’m staging only `Privacy.tsx` and `Terms.tsx`, then committing just those staged changes.
mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
diff --git a/console/frontend/src/pages/Privacy.tsx b/console/frontend/src/pages/Privacy.tsx
index 0c3943e3bfaf4ea44334c26eb1048a338d6d5cda..933971153cf755208a8c0c9f10a5a1ce9d194678
--- a/console/frontend/src/pages/Privacy.tsx
+++ b/console/frontend/src/pages/Privacy.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Privacy Policy</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Introduction</h2>
@@ -32,16 +32,17 @@
             When you record samples in the Console, those recordings are
             uploaded to the Console server and stored on the server filesystem
             so they can be used for the training job you requested. You can
-            delete your recordings from the dashboard at any time. Automatic
-            retention cleanup is now active: recordings are deleted after 90
-            days by default. Recordings linked to an in-progress training job
-            are never deleted until that job completes.
+            delete your recordings from the dashboard at any time. Voice
+            recordings are automatically deleted 30 days after upload. Source
+            recordings used for a completed training job are deleted 72 hours
+            after training completion.
           </p>
 
           <h3>2.3 Trained Models</h3>
           <p>
-            Models produced for your account are stored with your account until
-            you delete them or delete your account.
+            Models produced for your account are stored with your account for 90
+            days after creation unless you delete them or delete your account
+            sooner.
           </p>
 
           <h3>2.4 Billing Information</h3>
@@ -103,62 +104,83 @@
           <h2>7. Data Retention</h2>
           <ul>
             <li>
-              Account information is retained while your account remains active.
+              Account information is retained while your account remains active
+              unless you delete your account.
             </li>
             <li>
-              Recordings remain stored until you delete them or delete your
-              account.
+              Voice recordings are automatically deleted 30 days after upload.
             </li>
             <li>
-              Trained models remain stored until you delete them or delete your
-              account.
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
             </li>
             <li>
-              Recordings are automatically deleted after 90 days. Recordings
-              tied to an active training job are retained until that job
-              completes.
+              Trained models are automatically deleted 90 days after creation.
             </li>
             <li>
-              Trained models are automatically deleted after 365 days.
+              Account deletion hard-deletes your user account, recordings, and
+              trained models and cancels your active subscription within 24
+              hours.
             </li>
           </ul>
         </section>
 
         <section className="legal-section">
-          <h2>8. Third-Party Services</h2>
-          <ul>
-            <li>
-              <strong>Stripe</strong> processes payments and subscription events.
-              Stripe&apos;s privacy policy is available at{" "}
-              <a
-                href="https://stripe.com/privacy"
-                target="_blank"
-                rel="noopener noreferrer"
-              >
-                stripe.com/privacy
-              </a>
-              .
-            </li>
-          </ul>
+          <h2>8. Payment Processing</h2>
+          <p>
+            Payment processing is provided by Stripe. When you start or manage a
+            paid subscription, we share the information needed to create and
+            manage the Stripe Checkout or billing session, including your email
+            address and any billing address collected by Stripe Checkout. Stripe
+            processes payment details under its own privacy policy, available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>9. Email Service</h2>
+          <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend receives the email address and message content
+            needed to deliver those emails. Resend&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
         </section>
 
         <section className="legal-section">
-          <h2>9. Your Rights</h2>
+          <h2>10. Your Rights</h2>
           <ul>
             <li>Access the account information we hold about you</li>
             <li>Correct inaccurate account details</li>
             <li>Delete recordings, trained models, or your account</li>
           </ul>
           <p>
-            You can delete your account from the service API, and you can also
-            contact{" "}
+            You can delete your account at any time from the Account Settings
+            page. Account deletion cancels your Stripe subscription and purges
+            your recordings and trained models. You can also contact{" "}
             <a href="mailto:privacy@violawake.com">privacy@violawake.com</a> for
             privacy-related requests.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to This Policy</h2>
+          <h2>11. Changes to This Policy</h2>
           <p>
             We may update this Privacy Policy from time to time. When we make
             material changes, we will update the date above and publish the
@@ -167,7 +189,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Contact</h2>
+          <h2>12. Contact</h2>
           <p>
             For questions about this Privacy Policy or our data practices,
             contact us at{" "}
diff --git a/console/frontend/src/pages/Terms.tsx b/console/frontend/src/pages/Terms.tsx
index 0024d11a4ce618190026aa6d93f00b33f2775e7b..b060c9c3dddfdb5cc0e8dea7a56309df9ae54957
--- a/console/frontend/src/pages/Terms.tsx
+++ b/console/frontend/src/pages/Terms.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Terms of Service</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Service Description</h2>
@@ -110,10 +110,28 @@
           <h3>5.2 Paid Subscriptions</h3>
           <p>
             Developer and Business subscriptions are billed through Stripe on a
-            recurring basis until cancelled.
+            recurring basis until cancelled. We do not store full card numbers
+            or CVV values.
+          </p>
+
+          <h3>5.3 Stripe Checkout</h3>
+          <p>
+            When you start or manage a paid subscription, we share the
+            information needed to create and manage the Stripe Checkout or
+            billing session, including your email address and any billing address
+            collected by Stripe Checkout. Stripe&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
           </p>
 
-          <h3>5.3 Refunds</h3>
+          <h3>5.4 Refunds</h3>
           <p>
             If a service problem on our side materially prevents you from using
             a paid allocation, contact{" "}
@@ -123,8 +141,47 @@
         </section>
 
         <section className="legal-section">
-          <h2>6. Service Availability</h2>
+          <h2>6. Email Service</h2>
           <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend&apos;s privacy policy is available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>7. Data Retention and Account Deletion</h2>
+          <ul>
+            <li>
+              Voice recordings are automatically deleted 30 days after upload.
+            </li>
+            <li>
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
+            </li>
+            <li>
+              Trained models are automatically deleted 90 days after creation.
+            </li>
+            <li>
+              You can delete your account at any time from the Account Settings
+              page. Account deletion hard-deletes your user account, recordings,
+              and trained models and cancels your active Stripe subscription
+              within 24 hours.
+            </li>
+          </ul>
+        </section>
+
+        <section className="legal-section">
+          <h2>8. Service Availability</h2>
+          <p>
             We aim to keep the Console available, but we do not guarantee
             uninterrupted service. The Console may be unavailable because of
             maintenance, capacity limits, upstream provider outages, or events
@@ -133,7 +190,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>7. Limitation of Liability</h2>
+          <h2>9. Limitation of Liability</h2>
           <p>
             TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, VIOLAWAKE AND ITS
             AFFILIATES WILL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL,
@@ -149,7 +206,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>8. Indemnification</h2>
+          <h2>10. Indemnification</h2>
           <p>
             You agree to indemnify and hold ViolaWake harmless from claims,
             damages, losses, and expenses arising from your use of the service,
@@ -159,33 +216,35 @@
         </section>
 
         <section className="legal-section">
-          <h2>9. Termination</h2>
+          <h2>11. Termination</h2>
 
-          <h3>9.1 By You</h3>
+          <h3>11.1 By You</h3>
           <p>
-            You may close your account by using the available Console/API
-            account-deletion flow or by contacting{" "}
+            You may close your account from the Account Settings page or by
+            contacting{" "}
             <a href="mailto:hello@violawake.com">hello@violawake.com</a>. If
             you want to keep trained models, download them before deleting your
             account.
           </p>
 
-          <h3>9.2 By Us</h3>
+          <h3>11.2 By Us</h3>
           <p>
             We may suspend or terminate your account if you violate these Terms,
             abuse the service, or if we are required to do so by law.
           </p>
 
-          <h3>9.3 Effect of Termination</h3>
+          <h3>11.3 Effect of Termination</h3>
           <p>
             When an account is deleted, access to the Console ends and the
-            account data we still store for that account is removed through our
-            deletion workflow. Models you already downloaded remain yours.
+            user account, recordings, and trained models we still store for that
+            account are hard-deleted within 24 hours. Any active Stripe
+            subscription is cancelled as part of the same deletion workflow.
+            Models you already downloaded remain yours.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to These Terms</h2>
+          <h2>12. Changes to These Terms</h2>
           <p>
             We may update these Terms from time to time. When changes are
             material, we will update the date above and publish the revised
@@ -194,7 +253,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Governing Law</h2>
+          <h2>13. Governing Law</h2>
           <p>
             These Terms are governed by the laws of the State of Delaware,
             United States, without regard to conflict of law principles.
@@ -202,7 +261,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>12. Contact</h2>
+          <h2>14. Contact</h2>
           <p>
             For questions about these Terms, contact{" "}
             <a href="mailto:legal@violawake.com">legal@violawake.com</a>.

codex
The commit was created on `master`. I’m doing the final verification pass now: committed file list, date strings, and current file status.
mcp: local-terminal/run_command started
mcp: local-terminal/run_command (completed)
diff --git a/console/frontend/src/pages/Privacy.tsx b/console/frontend/src/pages/Privacy.tsx
index 0c3943e3bfaf4ea44334c26eb1048a338d6d5cda..933971153cf755208a8c0c9f10a5a1ce9d194678
--- a/console/frontend/src/pages/Privacy.tsx
+++ b/console/frontend/src/pages/Privacy.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Privacy Policy</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Introduction</h2>
@@ -32,16 +32,17 @@
             When you record samples in the Console, those recordings are
             uploaded to the Console server and stored on the server filesystem
             so they can be used for the training job you requested. You can
-            delete your recordings from the dashboard at any time. Automatic
-            retention cleanup is now active: recordings are deleted after 90
-            days by default. Recordings linked to an in-progress training job
-            are never deleted until that job completes.
+            delete your recordings from the dashboard at any time. Voice
+            recordings are automatically deleted 30 days after upload. Source
+            recordings used for a completed training job are deleted 72 hours
+            after training completion.
           </p>
 
           <h3>2.3 Trained Models</h3>
           <p>
-            Models produced for your account are stored with your account until
-            you delete them or delete your account.
+            Models produced for your account are stored with your account for 90
+            days after creation unless you delete them or delete your account
+            sooner.
           </p>
 
           <h3>2.4 Billing Information</h3>
@@ -103,62 +104,83 @@
           <h2>7. Data Retention</h2>
           <ul>
             <li>
-              Account information is retained while your account remains active.
+              Account information is retained while your account remains active
+              unless you delete your account.
             </li>
             <li>
-              Recordings remain stored until you delete them or delete your
-              account.
+              Voice recordings are automatically deleted 30 days after upload.
             </li>
             <li>
-              Trained models remain stored until you delete them or delete your
-              account.
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
             </li>
             <li>
-              Recordings are automatically deleted after 90 days. Recordings
-              tied to an active training job are retained until that job
-              completes.
+              Trained models are automatically deleted 90 days after creation.
             </li>
             <li>
-              Trained models are automatically deleted after 365 days.
+              Account deletion hard-deletes your user account, recordings, and
+              trained models and cancels your active subscription within 24
+              hours.
             </li>
           </ul>
         </section>
 
         <section className="legal-section">
-          <h2>8. Third-Party Services</h2>
-          <ul>
-            <li>
-              <strong>Stripe</strong> processes payments and subscription events.
-              Stripe&apos;s privacy policy is available at{" "}
-              <a
-                href="https://stripe.com/privacy"
-                target="_blank"
-                rel="noopener noreferrer"
-              >
-                stripe.com/privacy
-              </a>
-              .
-            </li>
-          </ul>
+          <h2>8. Payment Processing</h2>
+          <p>
+            Payment processing is provided by Stripe. When you start or manage a
+            paid subscription, we share the information needed to create and
+            manage the Stripe Checkout or billing session, including your email
+            address and any billing address collected by Stripe Checkout. Stripe
+            processes payment details under its own privacy policy, available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>9. Email Service</h2>
+          <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend receives the email address and message content
+            needed to deliver those emails. Resend&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
         </section>
 
         <section className="legal-section">
-          <h2>9. Your Rights</h2>
+          <h2>10. Your Rights</h2>
           <ul>
             <li>Access the account information we hold about you</li>
             <li>Correct inaccurate account details</li>
             <li>Delete recordings, trained models, or your account</li>
           </ul>
           <p>
-            You can delete your account from the service API, and you can also
-            contact{" "}
+            You can delete your account at any time from the Account Settings
+            page. Account deletion cancels your Stripe subscription and purges
+            your recordings and trained models. You can also contact{" "}
             <a href="mailto:privacy@violawake.com">privacy@violawake.com</a> for
             privacy-related requests.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to This Policy</h2>
+          <h2>11. Changes to This Policy</h2>
           <p>
             We may update this Privacy Policy from time to time. When we make
             material changes, we will update the date above and publish the
@@ -167,7 +189,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Contact</h2>
+          <h2>12. Contact</h2>
           <p>
             For questions about this Privacy Policy or our data practices,
             contact us at{" "}
diff --git a/console/frontend/src/pages/Terms.tsx b/console/frontend/src/pages/Terms.tsx
index 0024d11a4ce618190026aa6d93f00b33f2775e7b..b060c9c3dddfdb5cc0e8dea7a56309df9ae54957
--- a/console/frontend/src/pages/Terms.tsx
+++ b/console/frontend/src/pages/Terms.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Terms of Service</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Service Description</h2>
@@ -110,10 +110,28 @@
           <h3>5.2 Paid Subscriptions</h3>
           <p>
             Developer and Business subscriptions are billed through Stripe on a
-            recurring basis until cancelled.
+            recurring basis until cancelled. We do not store full card numbers
+            or CVV values.
+          </p>
+
+          <h3>5.3 Stripe Checkout</h3>
+          <p>
+            When you start or manage a paid subscription, we share the
+            information needed to create and manage the Stripe Checkout or
+            billing session, including your email address and any billing address
+            collected by Stripe Checkout. Stripe&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
           </p>
 
-          <h3>5.3 Refunds</h3>
+          <h3>5.4 Refunds</h3>
           <p>
             If a service problem on our side materially prevents you from using
             a paid allocation, contact{" "}
@@ -123,8 +141,47 @@
         </section>
 
         <section className="legal-section">
-          <h2>6. Service Availability</h2>
+          <h2>6. Email Service</h2>
           <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend&apos;s privacy policy is available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>7. Data Retention and Account Deletion</h2>
+          <ul>
+            <li>
+              Voice recordings are automatically deleted 30 days after upload.
+            </li>
+            <li>
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
+            </li>
+            <li>
+              Trained models are automatically deleted 90 days after creation.
+            </li>
+            <li>
+              You can delete your account at any time from the Account Settings
+              page. Account deletion hard-deletes your user account, recordings,
+              and trained models and cancels your active Stripe subscription
+              within 24 hours.
+            </li>
+          </ul>
+        </section>
+
+        <section className="legal-section">
+          <h2>8. Service Availability</h2>
+          <p>
             We aim to keep the Console available, but we do not guarantee
             uninterrupted service. The Console may be unavailable because of
             maintenance, capacity limits, upstream provider outages, or events
@@ -133,7 +190,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>7. Limitation of Liability</h2>
+          <h2>9. Limitation of Liability</h2>
           <p>
             TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, VIOLAWAKE AND ITS
             AFFILIATES WILL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL,
@@ -149,7 +206,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>8. Indemnification</h2>
+          <h2>10. Indemnification</h2>
           <p>
             You agree to indemnify and hold ViolaWake harmless from claims,
             damages, losses, and expenses arising from your use of the service,
@@ -159,33 +216,35 @@
         </section>
 
         <section className="legal-section">
-          <h2>9. Termination</h2>
+          <h2>11. Termination</h2>
 
-          <h3>9.1 By You</h3>
+          <h3>11.1 By You</h3>
           <p>
-            You may close your account by using the available Console/API
-            account-deletion flow or by contacting{" "}
+            You may close your account from the Account Settings page or by
+            contacting{" "}
             <a href="mailto:hello@violawake.com">hello@violawake.com</a>. If
             you want to keep trained models, download them before deleting your
             account.
           </p>
 
-          <h3>9.2 By Us</h3>
+          <h3>11.2 By Us</h3>
           <p>
             We may suspend or terminate your account if you violate these Terms,
             abuse the service, or if we are required to do so by law.
           </p>
 
-          <h3>9.3 Effect of Termination</h3>
+          <h3>11.3 Effect of Termination</h3>
           <p>
             When an account is deleted, access to the Console ends and the
-            account data we still store for that account is removed through our
-            deletion workflow. Models you already downloaded remain yours.
+            user account, recordings, and trained models we still store for that
+            account are hard-deleted within 24 hours. Any active Stripe
+            subscription is cancelled as part of the same deletion workflow.
+            Models you already downloaded remain yours.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to These Terms</h2>
+          <h2>12. Changes to These Terms</h2>
           <p>
             We may update these Terms from time to time. When changes are
             material, we will update the date above and publish the revised
@@ -194,7 +253,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Governing Law</h2>
+          <h2>13. Governing Law</h2>
           <p>
             These Terms are governed by the laws of the State of Delaware,
             United States, without regard to conflict of law principles.
@@ -202,7 +261,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>12. Contact</h2>
+          <h2>14. Contact</h2>
           <p>
             For questions about these Terms, contact{" "}
             <a href="mailto:legal@violawake.com">legal@violawake.com</a>.

codex
Implemented and committed.

Files modified:
- [Privacy.tsx](/mnt/j/CLAUDE/PROJECTS/Wakeword/console/frontend/src/pages/Privacy.tsx)
- [Terms.tsx](/mnt/j/CLAUDE/PROJECTS/Wakeword/console/frontend/src/pages/Terms.tsx)

New sections/content added:
- Stripe payment processing disclosure with email + Stripe Checkout billing address sharing and `https://stripe.com/privacy`
- Resend transactional email disclosure with `https://resend.com/legal/privacy-policy`
- Explicit retention windows: 30-day recordings, 90-day models, 72-hour post-training source recordings
- Account deletion/right-to-deletion wording via Account Settings, including Stripe subscription cancellation and recording/model purge within 24 hours

Proof:
- `cd console/frontend && npm run build` succeeded: `tsc && vite build`, 75 modules transformed.
- Date check now shows `Last updated: May 7, 2026` in both files.
- `git diff --check` passed.
- Diff head showed the Privacy date/retention/provider sections and Terms Stripe Checkout/Email Service/Data Retention additions.

Commit:
- `2565b1445b686885d356fa4fafe8fc4983a939b7`
- Message: `Update legal pages for billing and email providers`

Content decisions:
- I stated Stripe receives the email address plus any billing address collected by Stripe Checkout.
- I stated Resend receives the email address and message content needed to deliver transactional emails.
- I left unrelated existing dirty worktree files untouched and staged only the two requested files. Git reported a post-commit `git-lfs` missing warning, but the commit succeeded.
diff --git a/console/frontend/src/pages/Privacy.tsx b/console/frontend/src/pages/Privacy.tsx
index 0c3943e3bfaf4ea44334c26eb1048a338d6d5cda..933971153cf755208a8c0c9f10a5a1ce9d194678
--- a/console/frontend/src/pages/Privacy.tsx
+++ b/console/frontend/src/pages/Privacy.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Privacy Policy</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Introduction</h2>
@@ -32,16 +32,17 @@
             When you record samples in the Console, those recordings are
             uploaded to the Console server and stored on the server filesystem
             so they can be used for the training job you requested. You can
-            delete your recordings from the dashboard at any time. Automatic
-            retention cleanup is now active: recordings are deleted after 90
-            days by default. Recordings linked to an in-progress training job
-            are never deleted until that job completes.
+            delete your recordings from the dashboard at any time. Voice
+            recordings are automatically deleted 30 days after upload. Source
+            recordings used for a completed training job are deleted 72 hours
+            after training completion.
           </p>
 
           <h3>2.3 Trained Models</h3>
           <p>
-            Models produced for your account are stored with your account until
-            you delete them or delete your account.
+            Models produced for your account are stored with your account for 90
+            days after creation unless you delete them or delete your account
+            sooner.
           </p>
 
           <h3>2.4 Billing Information</h3>
@@ -103,62 +104,83 @@
           <h2>7. Data Retention</h2>
           <ul>
             <li>
-              Account information is retained while your account remains active.
+              Account information is retained while your account remains active
+              unless you delete your account.
             </li>
             <li>
-              Recordings remain stored until you delete them or delete your
-              account.
+              Voice recordings are automatically deleted 30 days after upload.
             </li>
             <li>
-              Trained models remain stored until you delete them or delete your
-              account.
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
             </li>
             <li>
-              Recordings are automatically deleted after 90 days. Recordings
-              tied to an active training job are retained until that job
-              completes.
+              Trained models are automatically deleted 90 days after creation.
             </li>
             <li>
-              Trained models are automatically deleted after 365 days.
+              Account deletion hard-deletes your user account, recordings, and
+              trained models and cancels your active subscription within 24
+              hours.
             </li>
           </ul>
         </section>
 
         <section className="legal-section">
-          <h2>8. Third-Party Services</h2>
-          <ul>
-            <li>
-              <strong>Stripe</strong> processes payments and subscription events.
-              Stripe&apos;s privacy policy is available at{" "}
-              <a
-                href="https://stripe.com/privacy"
-                target="_blank"
-                rel="noopener noreferrer"
-              >
-                stripe.com/privacy
-              </a>
-              .
-            </li>
-          </ul>
+          <h2>8. Payment Processing</h2>
+          <p>
+            Payment processing is provided by Stripe. When you start or manage a
+            paid subscription, we share the information needed to create and
+            manage the Stripe Checkout or billing session, including your email
+            address and any billing address collected by Stripe Checkout. Stripe
+            processes payment details under its own privacy policy, available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>9. Email Service</h2>
+          <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend receives the email address and message content
+            needed to deliver those emails. Resend&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
         </section>
 
         <section className="legal-section">
-          <h2>9. Your Rights</h2>
+          <h2>10. Your Rights</h2>
           <ul>
             <li>Access the account information we hold about you</li>
             <li>Correct inaccurate account details</li>
             <li>Delete recordings, trained models, or your account</li>
           </ul>
           <p>
-            You can delete your account from the service API, and you can also
-            contact{" "}
+            You can delete your account at any time from the Account Settings
+            page. Account deletion cancels your Stripe subscription and purges
+            your recordings and trained models. You can also contact{" "}
             <a href="mailto:privacy@violawake.com">privacy@violawake.com</a> for
             privacy-related requests.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to This Policy</h2>
+          <h2>11. Changes to This Policy</h2>
           <p>
             We may update this Privacy Policy from time to time. When we make
             material changes, we will update the date above and publish the
@@ -167,7 +189,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Contact</h2>
+          <h2>12. Contact</h2>
           <p>
             For questions about this Privacy Policy or our data practices,
             contact us at{" "}
diff --git a/console/frontend/src/pages/Terms.tsx b/console/frontend/src/pages/Terms.tsx
index 0024d11a4ce618190026aa6d93f00b33f2775e7b..b060c9c3dddfdb5cc0e8dea7a56309df9ae54957
--- a/console/frontend/src/pages/Terms.tsx
+++ b/console/frontend/src/pages/Terms.tsx
@@ -5,7 +5,7 @@
     <div className="legal-page">
       <div className="legal-content">
         <h1 className="legal-title">Terms of Service</h1>
-        <p className="legal-updated">Last updated: March 28, 2026</p>
+        <p className="legal-updated">Last updated: May 7, 2026</p>
 
         <section className="legal-section">
           <h2>1. Service Description</h2>
@@ -110,10 +110,28 @@
           <h3>5.2 Paid Subscriptions</h3>
           <p>
             Developer and Business subscriptions are billed through Stripe on a
-            recurring basis until cancelled.
+            recurring basis until cancelled. We do not store full card numbers
+            or CVV values.
+          </p>
+
+          <h3>5.3 Stripe Checkout</h3>
+          <p>
+            When you start or manage a paid subscription, we share the
+            information needed to create and manage the Stripe Checkout or
+            billing session, including your email address and any billing address
+            collected by Stripe Checkout. Stripe&apos;s privacy policy is
+            available at{" "}
+            <a
+              href="https://stripe.com/privacy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              stripe.com/privacy
+            </a>
+            .
           </p>
 
-          <h3>5.3 Refunds</h3>
+          <h3>5.4 Refunds</h3>
           <p>
             If a service problem on our side materially prevents you from using
             a paid allocation, contact{" "}
@@ -123,8 +141,47 @@
         </section>
 
         <section className="legal-section">
-          <h2>6. Service Availability</h2>
+          <h2>6. Email Service</h2>
           <p>
+            We use Resend to send transactional emails on our behalf, including
+            account verification, password reset, billing, and training status
+            messages. Resend&apos;s privacy policy is available at{" "}
+            <a
+              href="https://resend.com/legal/privacy-policy"
+              target="_blank"
+              rel="noopener noreferrer"
+            >
+              resend.com/legal/privacy-policy
+            </a>
+            .
+          </p>
+        </section>
+
+        <section className="legal-section">
+          <h2>7. Data Retention and Account Deletion</h2>
+          <ul>
+            <li>
+              Voice recordings are automatically deleted 30 days after upload.
+            </li>
+            <li>
+              Source recordings used for training are deleted 72 hours after the
+              training job completes.
+            </li>
+            <li>
+              Trained models are automatically deleted 90 days after creation.
+            </li>
+            <li>
+              You can delete your account at any time from the Account Settings
+              page. Account deletion hard-deletes your user account, recordings,
+              and trained models and cancels your active Stripe subscription
+              within 24 hours.
+            </li>
+          </ul>
+        </section>
+
+        <section className="legal-section">
+          <h2>8. Service Availability</h2>
+          <p>
             We aim to keep the Console available, but we do not guarantee
             uninterrupted service. The Console may be unavailable because of
             maintenance, capacity limits, upstream provider outages, or events
@@ -133,7 +190,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>7. Limitation of Liability</h2>
+          <h2>9. Limitation of Liability</h2>
           <p>
             TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, VIOLAWAKE AND ITS
             AFFILIATES WILL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL,
@@ -149,7 +206,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>8. Indemnification</h2>
+          <h2>10. Indemnification</h2>
           <p>
             You agree to indemnify and hold ViolaWake harmless from claims,
             damages, losses, and expenses arising from your use of the service,
@@ -159,33 +216,35 @@
         </section>
 
         <section className="legal-section">
-          <h2>9. Termination</h2>
+          <h2>11. Termination</h2>
 
-          <h3>9.1 By You</h3>
+          <h3>11.1 By You</h3>
           <p>
-            You may close your account by using the available Console/API
-            account-deletion flow or by contacting{" "}
+            You may close your account from the Account Settings page or by
+            contacting{" "}
             <a href="mailto:hello@violawake.com">hello@violawake.com</a>. If
             you want to keep trained models, download them before deleting your
             account.
           </p>
 
-          <h3>9.2 By Us</h3>
+          <h3>11.2 By Us</h3>
           <p>
             We may suspend or terminate your account if you violate these Terms,
             abuse the service, or if we are required to do so by law.
           </p>
 
-          <h3>9.3 Effect of Termination</h3>
+          <h3>11.3 Effect of Termination</h3>
           <p>
             When an account is deleted, access to the Console ends and the
-            account data we still store for that account is removed through our
-            deletion workflow. Models you already downloaded remain yours.
+            user account, recordings, and trained models we still store for that
+            account are hard-deleted within 24 hours. Any active Stripe
+            subscription is cancelled as part of the same deletion workflow.
+            Models you already downloaded remain yours.
           </p>
         </section>
 
         <section className="legal-section">
-          <h2>10. Changes to These Terms</h2>
+          <h2>12. Changes to These Terms</h2>
           <p>
             We may update these Terms from time to time. When changes are
             material, we will update the date above and publish the revised
@@ -194,7 +253,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>11. Governing Law</h2>
+          <h2>13. Governing Law</h2>
           <p>
             These Terms are governed by the laws of the State of Delaware,
             United States, without regard to conflict of law principles.
@@ -202,7 +261,7 @@
         </section>
 
         <section className="legal-section">
-          <h2>12. Contact</h2>
+          <h2>14. Contact</h2>
           <p>
             For questions about these Terms, contact{" "}
             <a href="mailto:legal@violawake.com">legal@violawake.com</a>.

SUCCESS: The process with PID 23104 (child process of PID 33672) has been terminated.
ERROR: The process with PID 33672 (child process of PID 45132) could not be terminated.
Reason: The operation attempted is not supported.

tokens used
138,070
Implemented and committed.

Files modified:
- [Privacy.tsx](/mnt/j/CLAUDE/PROJECTS/Wakeword/console/frontend/src/pages/Privacy.tsx)
- [Terms.tsx](/mnt/j/CLAUDE/PROJECTS/Wakeword/console/frontend/src/pages/Terms.tsx)

New sections/content added:
- Stripe payment processing disclosure with email + Stripe Checkout billing address sharing and `https://stripe.com/privacy`
- Resend transactional email disclosure with `https://resend.com/legal/privacy-policy`
- Explicit retention windows: 30-day recordings, 90-day models, 72-hour post-training source recordings
- Account deletion/right-to-deletion wording via Account Settings, including Stripe subscription cancellation and recording/model purge within 24 hours

Proof:
- `cd console/frontend && npm run build` succeeded: `tsc && vite build`, 75 modules transformed.
- Date check now shows `Last updated: May 7, 2026` in both files.
- `git diff --check` passed.
- Diff head showed the Privacy date/retention/provider sections and Terms Stripe Checkout/Email Service/Data Retention additions.

Commit:
- `2565b1445b686885d356fa4fafe8fc4983a939b7`
- Message: `Update legal pages for billing and email providers`

Content decisions:
- I stated Stripe receives the email address plus any billing address collected by Stripe Checkout.
- I stated Resend receives the email address and message content needed to deliver transactional emails.
- I left unrelated existing dirty worktree files untouched and staged only the two requested files. Git reported a post-commit `git-lfs` missing warning, but the commit succeeded.
