Skip to content
Victor Ndunda
Home About Work Resume Blog Services Contact Book an Assessment

Privacy Policy

Last updated: November 1, 2026

1. Introduction

This Privacy Policy describes how Victor Ndunda ("we", "us", or "our") collects, uses, and protects information when you visit victorndunda.com (the "Site"). We are committed to protecting your privacy and complying with the Kenya Data Protection Act 2019 and international privacy standards including GDPR.

2. Information We Collect

2.1 Public Pages (Home, Blog, Services)

The public pages of this Site do not collect personal information. We do not use cookies for tracking on public pages. We do not collect analytics data on public visitors.

2.2 Owner Dashboard (browser-local)

The owner dashboard at /dashboard/ is protected by a client-side sign-in gate (Google sign-in with signature-verified ID tokens, plus a password fallback and a second-factor prompt). It is a personal console for the site owner — not a server-side account system:

  • Google provides the email address, name and profile image of the signing-in user; the ID token's signature is verified against Google's published keys before it is accepted
  • Only your email address and activity timestamps are kept, in your browser's session storage (cleared when the tab closes or after 30 minutes of inactivity)
  • We do not store sign-in data on any server — authentication is client-side for this static site, which is why the dashboard deliberately holds no confidential records

2.3 Client Workspace (encrypted, browser-local)

If you create a client workspace at /services/client-dashboard.html, your projects, payment reports and messages are encrypted with AES-GCM-256 inside your own browser. The decryption key is derived from your password and held in memory only — it is never written to browser storage, so every visit asks for your password once. There is no server copy: one browser holds one account, and clearing the browser deletes the data.

2.4 Job Listings

Job listings are fetched in real-time from third-party APIs (Arbeitnow, RemoteOK). Your search queries and filter preferences are processed in your browser only and are not sent to or stored on any server.

3. Google Authentication

The owner dashboard uses Google Identity Services (GIS) for sign-in. When you click "Sign in with Google":

  • You authenticate with Google, which returns a signed ID token to the Site
  • The token's cryptographic signature is verified against Google's published signing keys, along with issuer, audience, expiry and email-verification checks
  • Only the email addresses mututandunda@gmail.com and torv54@gmail.com are accepted
  • All other email addresses are rejected

Google's Privacy Policy is available at policies.google.com/privacy.

4. Third-Party Services

This Site uses the following third-party services (including Web3Forms for contact forms, booking requests, and invoice sharing notifications) that may collect data according to their own privacy policies:

Booking-page assistant notifications: when you complete an estimate, request a call slot in the first-party scheduler, or choose a contact option in the enquiry assistant, the estimate configuration (service, volume, integrations, languages, price range), the requested slot, and the chosen channel are emailed to the site owner via Web3Forms so enquiries are not missed. No chat text, no message content, and no personal data beyond what you type into the request form are included, and no tracking cookies are used.

  • Google Identity Services — Authentication (Privacy Policy)
  • Google Fonts — Typography (Privacy Policy)
  • GitHub Pages — Hosting (Privacy Policy)
  • Arbeitnow API — Job listings (Privacy Policy)
  • RemoteOK API — Job listings (Privacy Policy)

5. Browser Storage — the complete inventory

This Site does not use cookies for tracking, advertising, or analytics. Every piece of browser storage we use is summarized below; the machine-readable version with purposes, retention, encryption status and deletion paths is data-inventory.json in the public repository, and our CI fails if a new key is ever introduced without being registered there.

  • Preferences (not personal): theme (dark/light), vn_lang (language), vn_recent (command-palette history), vn_read:… (article read markers), vn_cp_index (palette cache)
  • Client workspace (encrypted): vn_portal_auth — your AES-GCM-256 encrypted vault (projects, payment reports, messages) plus PBKDF2 password salts; vn_portal_session / vn_portal_remember — keyless session markers (email + expiry only; never the decryption key); vn_portal_events — workspace activity log; vn_demo_account — seeded demo marker
  • Scope wizard / briefs: vn_client_briefs — briefs you create (name, email, company, project description), migrated into the encrypted vault when you use the workspace
  • Owner tooling (this browser): vn_invoices, vn_proposals, vn_leads, vn_jobs_applications, vn_projects, vn_portal_clients (imported client snapshots — always marked unverified), vn_snapshot_nonces, victor_activity_log, victor_login_log, victor_totp_enrolled, victor_session (session storage, 30-minute idle timeout), vn_visits / vn_resume_downloads (counters)
  • Assistants: vn_last_estimate (booking estimate configuration), vn_assessment_ctx, vn_roi_inputs (calculator inputs), vn_subscribers (emails captured by the newsletter form on this browser), vn_ping_… (session-storage rate limiters, 4 minutes), gh_… / gh_backoff (GitHub API caches)

No decryption key is ever stored. Since November 2026 the workspace key exists only in memory during an unlocked session; reloading always requires your password again. See Trust Boundaries for what each tool is and is not.

6. Data Security

We implement appropriate technical measures for a static, browser-local system:

  • HTTPS encryption enforced via GitHub Pages
  • AES-GCM-256 encryption of workspace data inside your browser, with the key held in memory only
  • Google ID-token signature verification (JWKS) before any sign-in is accepted
  • Session-based sign-in with a 30-minute idle timeout
  • Payments recorded by clients are client-reported and never treated as received until the owner explicitly verifies them
  • noindex, nofollow on private pages and robots.txt disallowing private paths
  • Content-Security-Policy delivered via meta tags (best-effort on GitHub Pages — see our trust boundaries page for the honest limits of a static host)

7. Your Rights

Under the Kenya Data Protection Act 2019 (and, where applicable to you, the GDPR), you have the right to be informed, to access your personal data, to rectification, to erasure, and to object to processing.

Because this Site stores your personal data only in your own browser (never on a server we control), these rights are directly exercisable by you: clearing your browser's site data erases everything, and the client workspace additionally offers in-app account deletion (Settings → Delete account). For anything held by a third party (for example an email you sent us via Web3Forms), contact mututandunda@gmail.com and we will forward or delete it.

8. Children's Privacy

This Site is not directed to children under 18. We do not knowingly collect information from children.

9. Changes to This Policy

We may update this Privacy Policy from time to time. Changes will be posted on this page with an updated date.

10. Contact

For privacy questions or requests, contact: mututandunda@gmail.com

← Back to Home

© 2026 Victor Ndunda · Built in Nairobi, Kenya 🇰🇪

Terms of Service · Privacy Policy