Full audit of vasari-concierge + ops.vasari.club ahead of the August go-live: website signup, concierge, application, verification, payment, and year-round broadcasting — plus a draft GTM support plan.
June 9, 2026 · 53 days to leasing office open (Aug 1) · 74 days to brand launch (Aug 22)
≈80%
Funnel code built
0
Payment/KYC env vars set
44
Units · avg $2,556/mo
5
Live landing pages
0
E2E funnel tests run
The headline finding
Nearly the entire pre-leasing funnel exists in code — application forms, Stripe Identity KYC, Plaid income verification, Checkr criminal screening, Stripe deposit checkout, lease PDF e-signing — but the Stripe, Checkr, and Plaid credentials are not configured, so every one of those flows currently runs in mock mode. The single most important workstream before August is activating these integrations and running the funnel end-to-end with real money and a real ID.
A date conflict to resolve first
Your framing is "go live in August for pre-leasing" with application, verification, and payment. The ops dashboard says something different: Aug 1, 2026 = leasing office opens + waitlist, and the "Pre-Leasing Launch" milestone is Feb 1, 2027 (ads, applications, signing). The marketing site plan splits the difference — Phase 1 (Aug 2026) includes an /apply page. The concierge knowledge base says "formal lease signing begins Summer 2026." Decision needed: is August (a) waitlist + tours + LOIs with applications opening Feb 2027, or (b) full apply→verify→pay→sign live in August? The answer changes the P0 list below. This report assumes (b) — full funnel by August — since that's what you described.
1 · The Funnel As Built
LIVE shipped & workingPARTIAL built, unwired or untestedGAP missing
Lead pipeline stages with audit history (new_lead → toured → applied → approved → reserved → lost)
Delivery tracking on every message; Sentry, audit logs, /insights analytics
ops.vasari.club holds canonical facts (44 units, pricing, capital stack), 180-item roadmap, leasing-office runbook, marketing site plan (18 pages / 3 phases)
LIVE Broadcast foundations
Announcements (audience by floor/unit, priority, per-recipient delivery + read tracking)
Campaigns (segments by userType/stage/tags, template variables, iMessage→SMS fallback)
Outreach rules engine on a 5-min scheduler, send windows 8am–9pm, max 2/user/day
Consent records, opt-out categories (all vs marketing), 10DLC registered
2 · Gap Analysis
P0 — Blocks an August full-funnel launch
Gap
Detail
Effort
Payments/KYC/screening credentials unset
STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_IDENTITY_WEBHOOK_SECRET, CHECKR_TRUST_*, PLAID_* — none on Railway, none in .env.example. Everything downstream of "Apply" is mock.
Days (incl. vendor account setup + webhook config)
No end-to-end funnel verification
Nobody has gone landing page → application → ID verify → screening → deposit payment → lease signature in one pass against real services. Reservation pipeline stage transitions are partially built; deposit hold expiry isn't automated.
~1 wk incl. fixes
Deposit refund workflow missing
Stripe captures money but there's no refund path when an application is denied. Legal/financial exposure from day one of taking deposits.
2–3 days
Broadcast won't scale
Announcement/campaign sends are synchronous loops — fine for ~100–200, blocks the server beyond that. scheduledFor exists in schema but no scheduler. No bounce/invalid-number handling.
~1 wk (job queue + scheduler + bounce webhook)
Email-only leads are stranded
Apex waitlist accepts email-only signups but the concierge is SMS-only and there are no email campaigns. These leads sit in the DB unreachable (and phoneNumber stores "" because the column is NOT NULL). Klaviyo isn't planned until Oct.
2–4 days (Resend broadcast or early Klaviyo)
Launch phase is set to "operating"
Production default is full capability — the concierge will quote anything to anyone. Should be flipped to preleasing (or prelaunch until apps open), with phase overrides for staff testers.
Minutes + test pass
P1 — Should land before or shortly after launch
Gap
Detail
Effort
Applicant status portal
Applicants only get direct URLs; no way to check status, re-upload docs, or respond to requests. Drives "where's my application?" texts to the concierge.
~1 wk
Credit screening
Checkr Trust is criminal-only. No credit bureau pull, no eviction history, no income-to-rent auto-validation (fields captured, no rules engine).
Vendor-dependent
Application fee
No app-fee payment type — only deposit + first month. Decide: charge one, or differentiate by waiving it?
1–2 days if needed
Co-signer/guarantor verification
Fields exist, no verification flow. Matters for the student/athlete demographic where parents guarantee.
~1 wk
Tour ↔ application linkage + self-serve tour management
No tourId on applications; prospects can't reschedule/cancel except by texting.
2–3 days
Source attribution
Landing-page source tracked, but no UTM/paid-vs-organic capture — you'll be blind on channel ROI when ads start.
1–2 days
Campaign admin polish
Segmentation is JSON-only, audience preview shows 10 samples, no approval gate or dry-run before a blast goes out.
3–5 days
P2 — Post-launch / pre-move-in (July 2027)
Recurring rent collection (Stripe is one-time only today) · lease renewals · move-in checklist · ACH rails · PMS integration decision (none exists — Yardi/AppFolio/etc.) · A/B testing on campaigns · multi-property generalization (landlord "SG Property Management" + Iowa are hardcoded).
3 · Documentation & Ops-Site Assessment
Repo docs — strong
README / ARCHITECTURE / DEPLOYMENT / CLAUDE.md current
15 module contracts incl. property-leasing and pipeline-marketing
Stripe/Checkr/Plaid env vars absent from .env.example
4 · Draft GTM Support Game Plan
Organized as six workstreams, then a week-by-week runway to Aug 1 (office) and Aug 22 (brand launch). Built for scenario (b) — full funnel in August. If we align to the ops-site plan (apps in Feb 2027), workstreams A and B shift right and August becomes waitlist + tours + LOIs only.
A · Activate the money path
Stripe live keys + webhooks (checkout, identity)
Checkr Trust account + webhook secret
Plaid production (or launch with manual doc upload)
Refund workflow + deposit terms
Application fee decision
B · Prove the funnel
Scripted E2E: lead → tour → apply → verify → pay → sign, real card + real ID, on prod with test unit
Fix reservation pipeline hold expiry
Screening criteria policy written + encoded
Load-check: 50 simultaneous applicants
C · Broadcast at scale
Job queue for campaign sends (Bull/BullMQ)
Wire scheduledFor scheduler
Bounce/invalid handling via Twilio webhooks
Email channel for email-only leads (Resend broadcast now, Klaviyo later)
Monthly construction-update cadence template
D · Concierge launch posture
Flip launch_phase → preleasing (staff overrides for testing)
Knowledge base refresh from ops Project Facts (pricing, dates, amenities vocabulary: Train/Recovery/Heated Studio)