Every way we put a deck, proposal, demo or one-pager in front of someone outside Propflow, who reads them, and a plan to run all of it from one site.
2026-10-14 · read-only audit · Proposed — pending Fede's review · raw command output in findings.md
On this page: Summary · The surfaces · What is live · Who reads them · Hosts and addresses · Code in the app · The plan · Not verified
Five ways to send a document outside, on three hosts, with three different gates. Only one of them, the client knowledge-review board, had a real outside reader in the last 30 days. The investor deck has had no visit at all since July 29.
| Surface | Address | Gate | Tracking | Live docs |
|---|---|---|---|---|
| Client demos and proposals | propflowai.co/demo/<slug> and /proposals/<slug> (same files) | Email box; secret link. One slug also asks a password (gate probe) | Yes: unlocks, page opens, slide dwell | 8 servable of 10 folders (6 real) (S3 list) |
| Client onboarding docs | propflowai.co/onboarding/<slug> | Email box | Yes, plus saved checkboxes in our database | 0 new: the Yale 25 file above, through a third address |
| Knowledge-review board | propflowai.co/onboarding/review/<slug> | Per-client password | Yes | 2 seen in log |
| Investor deck and memo | deck.propflowai.co, propflowai.co/funding-research | One shared password | Yes | 2 |
| Share pages | share.propflowai.co/<id> | None; secret link | None | 5 |
| Shared checkboxes for share pages | share-state.propflowai.co | None | n/a | 1 page uses it |
| Internal docs (not external) | docs.propflowai.co | Cloudflare Access (company login) | Shared answers only | 1,874 pages |
| Surface | Address | Host | Gate | Tracking | Source of truth | How it ships · who | Live docs | Last change |
|---|---|---|---|---|---|---|---|---|
| Client demos and proposals | propflowai.co/demo/<slug> and /proposals/<slug> (same files) | Product app on Vercel | Email box; secret link. One slug also asks a password (gate probe) | Yes: unlocks, page opens, slide dwell | S3 propflow-photos/proposals/<slug>/ | Upload script, live in seconds · anyone with AWS command-line access | 8 servable of 10 folders (6 real) (S3 list) | 2026-10-14 (v6 demo upload) |
| Client onboarding docs | propflowai.co/onboarding/<slug> | Product app | Email box | Yes, plus saved checkboxes in our database | Same S3 folder | Same upload script | 0 new: the Yale 25 file above, through a third address | 2026-08-28 |
| Knowledge-review board | propflowai.co/onboarding/review/<slug> | Product app | Per-client password | Yes | Our database (review records), not a file | Created by the onboarding flow | 2 seen in log | 2026-10-02 (code) |
| Investor deck and memo | deck.propflowai.co, propflowai.co/funding-research | Product app | One shared password | Yes | PDF and memo inside the app repo | Pull request through CI · any engineer | 2 | PDF 2026-05-06, memo 2026-09-23 |
| Share pages | share.propflowai.co/<id> | Vercel, separate project | None; secret link | None | 4 of 5 pages in the docs repo share/; live folder not saved | Hand deploy that replaces the whole site · Fede, Gera | 5 | 2026-10-14 (deploy) |
| Shared checkboxes for share pages | share-state.propflowai.co | Cloudflare Pages + D1 | None | n/a | docs repo workers/share-state/ | Hand deploy | 1 page uses it | 2026-10-13 |
| Internal docs (not external) | docs.propflowai.co | Cloudflare Pages | Cloudflare Access (company login) | Shared answers only | docs repo | Push to main | 1,874 pages | 2026-10-15 (deploy) |
Sources: S3 list, Vercel API, Cloudflare API, headless curl of every gate, git log. All in findings.md. The new test site propflow-decks.pages.dev exists (answered 401 at probe time) and was left alone.
| Document | Slug | Uploaded (Mac time) | State |
|---|---|---|---|
| Clara — live demo (v6 preview) | leasing-renewals-demo-v6-… | 2026-10-14 | servable |
| Western Slope onboarding timeline | western-slope-se9… | 2026-09-08 | servable |
| Situs Group proposal | situs-f6… | 2026-09-04 | servable |
| Clara — live demo (password) | leasing-renewals-demo-29… | 2026-08-28 | servable |
| Halcyon pilot agreement | halcyon-demo-0a… | 2026-08-28 | servable |
| Yale 25 Station onboarding | conam-yale25-07… | 2026-08-28 | servable |
| Fast-path demo (no name file) | …-fastpath-7k… | 2026-08-26 | orphan |
| Sample proposal (fictional) | sample | 2026-08-28 | test |
| Yale 25 (two older folders) | yale25, conam-yale25-onboarding-… | 2026-08-28 | empty shell name file only |
| Western Slope inbox one-pager | western-slope-inbox-… | gone | removed opened 2026-09-23, likely now on the share site (matched by title and date) |
Share site, live deployment file list: inbox-after-Clara (with podcast), renewals blueprint (with PDF), Situs rollout plan, Google Workspace approval guide, and "The Center of the Bow Tie" (with podcast), which is in no repo. Its audio exists only inside the live deployment.
Successful unlocks from the access log, 1,416 rows total. "Outside" means an email not on propflowai.co; Gmail counts as outside, so some of it may be us.
| Document | Unlocks 30d | Unlocks 90d | Outside 30d | Outside 90d | Last access (UTC) |
|---|---|---|---|---|---|
| Knowledge review, Western Slope | 11 | 48 | 7 | 7 | 2026-10-11 |
| Situs proposal | 3 | 21 | 0 | 1 | 2026-10-13 |
| Live demo v6 | 3 | 3 | 0 | 0 | 2026-10-15 |
| Knowledge review, Western Slope test | 0 | 20 | 0 | 0 | 2026-10-05 |
| Western Slope inbox (removed) | 2 | 2 | 0 | 0 | 2026-09-23 |
| Live demo (password) | 1 | 105 | 0 | 32 | 2026-09-17 |
| Western Slope timeline | 0 | 37 | 0 | 0 | 2026-09-09 |
| Yale 25 onboarding | 0 | 5 | 0 | 3 | 2026-09-08 |
| Halcyon agreement | 0 | 6 | 0 | 1 | 2026-08-29 |
| Investor deck and memo | 0 | 1 | 0 | 0 | 2026-07-29 |
Source: read-only query of the production table, partition DECK_ACCESS (findings.md, "Access log aggregate"). Sample, fast-path and empty Yale folder: no successful unlock ever.
Share site: no usage data exists. Vercel's visitor analytics is not switched on for that project, and none of the five pages loads any tracking script.
| Where | What runs there |
|---|---|
| Vercel (20 projects) | Product app (propflowai.co, deck., 7 preview addresses), share site, Camellia website, inside-edge.co, mock property-system sandbox, and 14 old or one-off projects, 8 of them never deployed |
| Cloudflare Pages (5) | docs, share-state, factory, matrix (all behind company login except share-state), propflow-decks (new) |
| Cloudflare Workers | sales.propflowai.co (internal sales tool, company login); a tunnel serves agents. and three webhook addresses |
| Points at | Addresses |
|---|---|
| Vercel | propflowai.co, www, deck, 7 previews, knock-sandbox, yardi-sandbox, share (through the catch-all record) |
| Cloudflare Pages | docs, factory, matrix, share-state |
| Cloudflare Worker / tunnel | sales / agents, decision-hook, gh-webhook, zoom-hook |
| Elsewhere | o1.o1 (dead), mail-signing records for SendGrid and Amazon email |
Addresses to clean up: preview-jg-agentflow-in-app points at Vercel but no project claims it (404). o1.o1 is an old fixed address that times out. knock-sandbox and yardi-sandbox answer 404 at the front door but belong to a live sandbox project, so check before removing. A catch-all record sends every unknown subdomain to Vercel, so a typo still resolves.
| Part | Lines | Stays? |
|---|---|---|
| Shared gate, sign-in cookie and tracking library | 3,612 | Partly: review needs ~575 |
| Admin traffic page (and old redirect) | 3,517 | Goes |
| Investor deck viewer and PDF route | 2,255 | Goes |
| Gated document viewer components | 1,244 | Partly: review uses the frame |
| Onboarding pages (doc + review board) | 1,023 | Review board (991) stays |
| Document stream and checkbox save routes | 742 | Goes |
| Cross-cutting tests | 840 | Mostly goes |
| Upload script, storage reader, memo, small pages | 588 | Goes |
| Total | 13,821 | About 11,800 can go (estimate) |
Source: wc -l per directory (findings.md, "Code size"). The split between "goes" and "stays" is an estimate; an import trace would make it exact. Rules to unwind: next.config.js:185-190, 291-295, 405-413; middleware.ts:255-263 and 805-816.
| Today | Moves | Redirects | Deleted | Lost, and the smallest keep |
|---|---|---|---|---|
| Demos and proposals | The 6 real files, same slugs; sample and fast-path dropped | Old addresses send readers to the new site, same slug. The slug is the key, so it must not change | Upload script, stream route, storage reader, empty folders | Slide dwell and the admin page. Keep: a small function on the new site that records email and slide events in Cloudflare storage. Not our current table, because that would mean putting AWS keys into Cloudflare (Fede's call). Export the 1,416 old rows to a docs page once, so history survives either way |
| Onboarding doc | Yale 25 file | Yes | Database checkbox save | Saved checkboxes: use share-state, already built |
| Investor deck | PDF and memo, behind a password | deck. address | Deck viewer, PDF route | Nothing used since July |
| Share pages | All 5, including the one not in any repo, with audio | share. address | Vercel project | Nothing; gains tracking |
| Review board | Nothing | No | No | Nothing |
Alternative gate: Cloudflare Access with a one-time emailed code proves the reader owns the email, which the email box does not. Different reader experience and possible seat limits; not verified.