Side Quest Strategies · Field Guide

Private Pitch Deck Hosting — on your own domain

Put your HTML deck and data room behind personal access codes and know exactly who opened it, what they looked at, and for how long. No investor accounts, no third-party data-room fees, no backend to maintain — the whole stack runs on free tiers.

Personal access codesEvery recipient gets their own code. Revoking one investor takes under a minute and never disturbs anyone else.
Zero investor frictionOne code, typed once, remembered for 30 days. No sign-ups, no email verification loops.
Named analytics“Blue Harbor spent 11 minutes on the deck and downloaded the model” — not “someone visited.”

How it works

Investor opens linkyourco.com/deck
Edge gateBranded unlock page checks the code — codes live only in one env var, never in source
Two cookiesA hashed access token, plus a readable name + 4-char ref (never the code itself)
Your HTML deckServed as-is — slides, data room, downloads
AnalyticsPageviews, time on page, documents opened, slides viewed — all attributed by name
The 4-char ref — e.g. XK9P — joins every analytics event back to your access registry, so you always know who is who.

The build — six steps, about an hour

1
Structure the repo.

Deck, data room, and downloadable files under clearly gated paths; assets referenced absolutely.

2
Drop in the gate.

One middleware.js file at the project root. Brand the unlock page to match your deck.

3
Issue codes & registry.

Codes like ACME-7Q2F-XK9P, one per recipient, logged in a simple Notion database.

4
Wire analytics.

A self-gating PostHog script — public pages are never tracked, unlocked viewers fully are.

5
Deploy on Vercel.

Push to GitHub, import, set one env var, point your subdomain. Private pages stay noindexed.

6
Verify before sending.

A nine-point checklist: gate, wrong code, revocation, gated PDFs, attribution — all proven first.

Why it's trustworthy

  • Codes never appear in source. The repo stays clean; secrets live in one environment variable.
  • Hashed, HttpOnly cookies. Page scripts can't read the access token, and it can't be reversed into a code.
  • Fails closed. A misconfigured deploy shows a 503 — never an open door.
  • Instant, surgical revocation. Remove one code, redeploy: that viewer's code and existing cookie both die.
  • The gate page carries zero tracking. An access code can never leak into an analytics event.
What it is — and isn't. This is investor-grade access control, not DRM. A determined recipient can still screenshot or share what they can see. For a fundraise, that's the right trade: friction stays near zero and you keep full visibility of who's engaging.
Stack: Plain HTMLVercelPostHogNotion — all free tiers