Vision Summit CRM — Build Spec (Phase 1 demo)
Status: DRAFT for Ryan's review. Nothing dispatched to build until Ryan signs off.
Source: Fathom call "Vision Summit CRM" (rec 178363614, 2026-08-31), full transcript + screen-share review.
Owner surface: Ryan/Luke's company (the for-profit CRM builder), for InterVarsity Presidential Events (Candace Shreve Miller + Lori Whaley). Nathan Krupke (IV CFO) funding.
0. What this build is (and is not)
Per the call's explicit decision: build a fake-data, fully IV/Vision-Summit-branded prototype that Candace + Lori can click through and react to. Nothing wired to anything real — no live Salesforce, no real Outlook send, no real SMS, no SSO. Every integration surface is present but mocked and clearly marked "preview / not wired" (the IVP Phase-B pattern we already ship: the affordance is there, it never fires an external call).
This is the artifact Ryan shows the client and iterates on over Teams. It is NOT production and carries zero real donor PII — all data synthetic (the iv-midlevel-demo isolation pattern).
Near-term real target (post-demo, separate phase): a functional tool with manual Salesforce import/export "before December," ahead of the January invitation mailing. Full API sync waits on Nathan/Gloo and is out of our timeline control. This spec scopes the DEMO; it is structured so the same data model carries forward to the real build.
1. Stack & isolation (matches our IV tooling)
- CF Pages project
vision-summit-demo + own D1 vision-summit-demo (new, isolated — no binding to GAPS_DB or any live donor store, structurally can't leak; same rule as iv-midlevel-demo). - Gate: passphrase gate for the demo shell (port the andy-midlevel-crm / iv-midlevel-demo passphrase pattern), PLUS an in-demo tiered-login switcher so Ryan can show the Admin / DOP / Host views without real accounts (a "View as: Admin | DOP | Host" demo control, clearly labeled a demo device).
- noindex header + meta; robots disallow.
- Synthetic data only; 0 real @intervarsity.org emails in any bundle (gate check before handoff, same as the Midlevel demo).
2. Data model (D1) — carries to the real build
Entities (fake-seeded for the demo, but modeled for real):
- event (a Summit instance): id, name, tagline/theme, location, start_date, end_date (multi-day capable — the old tool couldn't do >1 day, a stated pain), registration_open (bool), capacity, attendance_goal, landing_url, brand_color, countdown target. Multiple events supported from one platform (event picker).
- person (attendee/invitee): id, vin (donor/Salesforce ID = the join key Candace called the "VIN/BIN number"), first_name, last_name, spouse_name, email, phone, alma_mater, dietary_accessibility_notes (private-ish text), share_info_ok (bool), affiliations bundle → dop_id, pgo_id, host_id, executive_assignment.
- registration: person_id, event_id, status enum (invited / opened / clicked / registered / declined / cancelled), source (form / manual / import), timestamps. Manual "mark declined" path required (phone-call cancellations).
- host (host committee / table host): id, name, email, committee_member (bool), their invite sub-list, table assignment. ~12–15 per summit.
- activity_log (per person): channel enum (email / paper_invite / save_the_date / phone / text / host_outreach), direction, subject/note, timestamp, actor.
- giving (analytics): person_id, event_id, gift_amount, first_time_gift (bool), pledge, survey_result — modeled for the multi-year movement/ROI view Candace wants (may seed synthetic across 2–3 past summits so the analytics screen isn't empty).
- staff/role: admin / dop / pgo / host tiers (demo logins).
3. Roles & access (tiered, walled — Ryan's "you tell us what they see, we wall the rest")
- Admin (Candace, Lori, Helen): full visibility, all events, all people, analytics, settings.
- DOP / PGO: restricted — sees only their own portfolio's invitees + status. A "Vision Summit tab" framing so it reads like part of their normal workday view.
- Host / table host: sees only the people they host + those people's status; can "log a connection"; can send a templated email in their own name (copy-paste in the demo). Replaces the old confusing "one-time emailed dashboard link."
For the demo: the View-as switcher demonstrates each tier against the same synthetic data.
4. Screens / features (Phase 1 demo build)
A. Admin dashboard (the FundEasy "Event Dashboard" Lori demoed and mostly liked — replicate the good parts, IV-branded. Exact layout confirmed from the video frame):
- Three summary cards: Attending / Cancelled / Declined counts.
- Public Registration status card with an Open ▾ toggle + a "limit capacity? Enable Auto-Close" control (capacity-aware).
- Days Remaining countdown card.
- Registration Progress chart: attending-registrations over time, with an Attendance Goal reference line, days-to-event x-axis, and an Event-Date marker.
- Promote Your Event: a "Copy Event Link" box (read-only URL field + Copy button) that hands out the public registration link — Lori said she needs this link "more often than not," so keep it prominent.
- Recent registrations feed; flag registrants with no matched host (Candace's #1 pain — auto-assign to host committee member from an uploaded list, flag the misses for manual assignment).
B. Registration form (replaces the Wix + Constant Contact form; the "harder to find than you'd think" core need). Exact field list confirmed from the current Constant Contact form on screen — match it, minus the noise:
- First name, Last name (required)
- "My spouse will attend with me:" (text — spouse name)
- Email (required), Phone number + a Type dropdown (required)
- Address, City, Country (dropdown), State/Province (dropdown), ZIP/Postal (required)
- "I request to sit with" (free text — relationship/seating mapping)
- "Special Requests or Allergies" (free text — the semi-private dietary/accessibility field)
- "Alma Mater (for name badge and guest list)" (text)
- "Yes, please share my contact info with our group." (yes/no — the share-info opt-in)
- texting opt-in checkbox (new — they want SMS opt-in captured here)
- a short consent line, then Submit.
- On submit: confirmation "bounce-back" page ("we've received your request…"), creates a registration record + a new-lead item in the CRM.
C. Invitations (the FundEasy "Email Invitation List" screen — send-from-platform, demo-mocked. Structure confirmed from the frame):
- Sub-nav: Email Invitation List / Sent Invitations / Declined Invitations / Customize Invitation Template.
- Stat cards: Imported / Invited / Registered / Declined.
- Guest-list table: #, Full Name, Status, Has Registered?, Email, Phone, Address, City, State, Zip, Country, Invited By — with search + pagination + row select/delete. (Demo rows synthetic; the real one imports from Salesforce.)
- Top actions: Export CSV, + Add to List, Send New Invitation Email.
- Compose + send invitation with confirm/decline buttons that record the response.
- Drip schedule affordance (e.g. 8/6/4 weeks out) — marked scheduled/preview.
- Open/click tracking shown as pipeline stages (marked "preview — tracking not wired").
D. Person detail: affiliations (DOP/PGO/host/exec/alma mater), full activity log (emails, paper invites, save-the-dates, calls, texts, host outreach), registration status, giving history.
E. Host view: host's own guest list + statuses, "log a connection," templated copy-paste email in host's name.
F. Analytics / results (the "next five years of movement" ask):
- Per-summit roll-ups; per-donor giving-over-time; attendance-vs-giving correlation.
- Post-event "results" tab: notes, survey results, pledge/gift logging.
- Seed synthetic multi-summit data so this isn't empty.
G. AI chat agent (placeholder): an admin chat box ("move these eight people to this host") — demo returns scripted/simulated responses, clearly marked "preview."
H. Event picker / multi-summit: create/switch between Summits; same platform, differentiated events.
5. Mocked / "coming soon" surfaces (present, marked, never fire)
- Salesforce sync (import/export + eventual two-way) — show an Import-from-Salesforce and Export button; demo uses synthetic VIN join. Marked "manual import/export in v1, API pending."
- Outlook send — the branded per-user send with the explicit opt-in "wire this email" confirmation step (the safety flow they demanded after Tom's inbox got flooded). Demo shows the consent gate; never sends.
- SMS / day-of texting — opt-in shown; not wired.
- SSO (InterVarsity login via Gloo) — noted "not in the demo."
- Email open/click tracking — shown as stages, marked not-wired.
Every mock uses the disclaimer pattern we already ship (not wired up / simulated / not connected).
6. Branding
Brand book secured (from Ivy, pulled from IV's real logo SVG — assets + full note in brand/). Use these, not approximations:
- Teal (primary — the color Candace named):
#008DAD primary, #009BBF brighter accent, #006C84 for depth. - Orange (secondary/accent, the open-book + wordmark):
#F26529 primary. - Ground = white. IV mark = teal arch/ring over an orange open book; wordmark = orange slab serif. Do not let app-chrome navy/gold stand in.
- Logo: use the core
brand/iv-logo.svg (full mark + wordmark) for Presidential Events. brand/iv-mark-ringbook.png (mark alone) for favicon / compact header / white-on-teal. Do NOT use IVCF_Alumni_Team_Logo.png — that's an Alumni-Team sub-brand, wrong for this. - Type: IV brand font is Gaspo Slab (licensed via 2100) — do not embed it. For the demo use a close free slab serif (Zilla Slab) or outline the wordmark from the SVG. Not Fraunces (that's the Midlevel tool).
- Vision-Summit-branded event shell reading "part of the family," high-end. Ryan floated an AI-assisted brand flow — for the demo just hard-apply the palette above; the AI-branding flow can be a marked-preview affordance.
7. Synthetic seed
- ~150–250 fake attendees across affiliations, spread over 2–3 synthetic summits (one "next" = Boca Raton, one or two past for analytics).
- ~12–15 fake host committee members with guest sub-lists (some registrants intentionally unmatched → to demo the flag).
- Registration statuses spread across the pipeline; activity logs populated; giving history across summits.
- 0 real people/emails — all @example.com, fake VINs.
8. Open questions for Ryan (before build)
1. Login model for the demo — passphrase shell + View-as switcher (my default), or seed a few named fake logins per tier?
2. How many tiers to actually show — Admin + DOP + Host, or also PGO as its own view? (Lori was unsure DOPs even need logins.)
3. Analytics depth for v1 demo — full multi-summit ROI view, or a lighter "results" tab first? (It's the flashiest but least-defined piece.)
4. AI chat agent — include the placeholder in this first demo, or hold it for a later iteration?
5. Name — Lori explicitly wants a real name, not "FundEasy." Do you have one, or should the demo use a working title ("Vision Summit" / "Summit CRM")?
6. Brand assets — ✅ CLOSED. Ivy sent IV's brand book (teal #008DAD + orange #F26529 + logo SVG); folded into §6 above. No action needed.
7. The two links Lori offered (the FundEasy platform + the Wix landing page) — if she sends them, I can match the form fields exactly; otherwise I build from the transcript + video.
9. Current-tool reference (from the screen-shares — for fidelity)
Lori screen-shared two things. Jump-list (timestamps into the recording) so you can eyeball anything I should match:
FundEasy platform (dashboard + setup), ~00:17:00–00:24:00:
- 00:17:04 "Let me pull it up" — dashboard appears
- 00:18:14 dashboard she likes (counts, cancellations, open/close reg, days-until counter, form link)
- 00:18:38 "link directly to the registration form from this dashboard"
- 00:18:50 "send invitations through the platform" + confirm/decline buttons
- 00:19:23–19:30 setup/customize screens (title, theme, location)
- 00:19:53 multi-day date editing limitation
- 00:20:45 partner-visibility + toggles (silent-change toggle at 00:21:04)
- 00:22:16 host self-signup → one-time emailed dashboard link (the confusing bit to replace)
- 00:24:04 "look at these, they're awful" — the limited color palette picker
Wix landing / registration form, ~00:25:50–00:29:25:
- 00:25:53 "this is our landing page right now"
- 00:26:19 "here's the information we'd like to show up"
- 00:26:41 required fields (name, spouse, email, phone)
- 00:27:06 large free-text for allergies / hotel accessibility needs
- 00:27:40 yes/no toggle: share info with other attendees
- 00:29:25 confirmation "bounce-back" copy
*Frames reviewed.* The current tool is FundEasy (app.fundeasy.com) for the dashboard/invitations and a Constant Contact landing page (lp.constantcontactpages.com, "IVCF Vision Summit 2027") for the registration form. The exact dashboard cards, invitation-list table columns, and registration form fields above are transcribed from those frames. Note: the FundEasy invitation list displayed real attendee names/emails/addresses on screen — those are not reproduced here or anywhere; the demo is seeded 100% synthetic.
10. Build sequencing (once Ryan approves)
1. Stand up isolated vision-summit-demo project + D1, passphrase gate, noindex, IV brand shell.
2. Data model + synthetic seed.
3. Screens A–F (dashboard, form, invitations, person detail, host view, analytics) with mocked integrations marked.
4. Event picker + View-as tier switcher.
5. AI chat placeholder (if in scope per Q4).
6. Isolation gate (0 real emails, no live bindings) + my rendered-artifact QA, then hand Ryan the link + passphrase to demo.