zsty.us

Before / After · Case Study

Homeward Bound Veterans — Squarespace brochure to a veteran-services platform

  • Local Pro Services

A veteran-led 501(c)(3) fighting veteran homelessness was running on a Squarespace template — 19-link nav, leftover demo store pages, donate buttons that left the site, and no way for a veteran to do anything but call. Rebuilt as a Next.js platform: help-seeker-first public site grounded in the org's real records, a magic-link veteran portal for medical documents and appointments, an admin HQ with an all-client calendar, and SES transactional rails that remind every vet 24 hours before an appointment.

Veteran suicide is preventable. The website fighting it shouldn't be a static brochure.
🔒https://hbvets.oglife.app
jackiej.events — modern site

Receipts — measured

Numbers that moved.

0 pages
Crisis-line placements
was 0 pages
0
Transactional templates
was 0
0h
Reminder lead time
was 0h
2
Demo-store pages live
was 2
  • Squarespace brochure → veteran portal + admin HQ, live in one build day
  • Magic-link → confirmation email: SES E2E verified in production
  • Template leftovers ('Harvest Moon Cup — $25' demo store) → 0 dead pages
  • Appointment reminders: none → hourly cron, 24h ahead, email + SMS-ready

The pixel diff

Overview, then the walkthrough.

Left: everything the legacy site shipped — frozen in place. Right: an auto-scrolling tour of the rebuild, from hero to booking. No slider to fight with.

Before — the overview
🔒https://www.hbvets.org
Before — the overview

This is everything the legacy site had to offer above the fold. No pricing, no calendar, no booking — the funnel ended at a mailto.

After — scroll through what shipped
🔒https://hbvets.oglife.app
After — scroll through what shipped

Auto-scrolls through the modern site so you can see the booking surface, the package grid, the pricing table, and the calendar inline — without leaving this page.

Tap a pin. The story is in the pixels.

Before — what was broken
🔒https://www.hbvets.org
Before
After — what shipped
🔒https://hbvets.oglife.app
After

The four beats

Problem · Insight · Build · Outcome.

Scroll past the legacy frame. The four beats land in order. At the end, the modern site fades into the same window.

🔒https://www.hbvets.org
Legacy
01 · Problem

A life-saving mission on a rented template.

Homeward Bound Veterans houses homeless veterans in three states — but its site was a Squarespace template with a 19-link nav, a leftover demo store still selling a '$25 Harvest Moon Cup', donate buttons that bounced visitors to third-party pages, and a homepage that became whatever flyer was uploaded last.

02 · Insight

Two audiences, opposite needs, one front door.

A veteran sleeping in his car and a donor at a gala need different things in the first five seconds. And the veterans themselves needed something no brochure can give: a private place for the DD-214s, medical records, and appointment chaos that stand between the street and stable housing.

03 · Build

A platform, not a page — grounded in the org's real records.

Research first: 990 filings, Candid profile, every page of the old site, the print fliers. Then the build — Next.js 16 public site with help-first architecture, magic-link veteran portal with a Blob document vault and PT calendar, admin HQ with an all-client view, SES rails with an hourly reminder cron. Deployed, DNS'd, and TLS'd the same session.

04 · Outcome

Live and E2E-verified in production the same day.

Real magic-link email into a real inbox → session → appointment created → branded confirmation email → admin calendar showing it, Pacific-time correct. Plus what the template never had: FAQ schema answering 'where can a homeless veteran sleep tonight', long-tail geo pages for all three Pathfinder House markets, and a crisis line that is never more than one tap away.

🔒https://hbvets.oglife.app
Modern

Architecture

One chain replaced by another. Receipts above.

Old stack
  • Squarespace 7.1
  • Template nav (19 links)
  • Demo store leftovers
  • mailto: contact
  • Zeffy link-outs only
  • No auth · no data
New stack
  • Next.js 16 + React 19
  • Tailwind v4
  • Drizzle + Railway Postgres
  • HMAC magic-link auth
  • AWS SES v2 + SNS rails
  • Vercel Blob vault
  • Hourly reminder cron
  • FAQ + NGO JSON-LD

What changed

Grouped by what kind of system shipped.

Each claim ships with concrete evidence — env vars, table names, cadence chips. No marketing fluff.

Design

Help-seeker-first rebuild of the entire public site

Sixteen pages rebuilt from the org's real records — 990 filings, Candid profile, board bios, five resident testimonials with photos, and four print fliers folded into the pages. The Veterans Crisis Line (988, press 1) rides a persistent strip on every page, and 'Get Help Now' outranks 'Donate' everywhere — the dual-audience architecture the strongest veteran orgs use.

Before
A template homepage that changed to whatever flyer was uploaded last.
After
A stable help-first front door with the crisis line one tap away.
  • Crisis line on all 16 public pages (legacy: zero mentions)
  • 50 org photos + 4 print fliers reused as first-class content
  • FAQPage + NGO JSON-LD, sitemap, per-page long-tail SEO
Retention

A veteran portal that holds the paperwork chaos

Homeless veterans lose documents — that's part of the problem being solved. The portal gives every vet a magic-link sign-in (no password to lose), a private vault for DD-214s, medical records and IDs on Vercel Blob, and an appointment tracker with a Pacific-time month calendar. The admin HQ mirrors it across every client: one calendar, per-vet files, and an intake inbox that flags 🚨 GET-HELP submissions.

Before
Records lived in backpacks; appointments lived in memory.
After
One place for both — visible to the vet and their case manager.
  • Passwordless magic-link auth — HMAC-signed stateless sessions
  • Doc vault: PDF/photo uploads, typed (DD-214, medical, ID, benefits)
  • Admin HQ: all-client calendar + message audit log per veteran
Real-time push

Transactional rails that never forget an appointment

Seven SES email templates carry the whole lifecycle — sign-in link, welcome, appointment confirmed/updated/cancelled, 24-hour reminder, and urgent intake alerts. An hourly Vercel cron sweeps upcoming appointments and reminds the day before; every send lands in a per-veteran audit log. SMS via SNS is wired and opt-in gated, ready the moment credentials land.

Before
No reminders existed — a missed VA appointment could cost months.
After
Every scheduled appointment reminds itself the day before.
  • 7 transactional templates, branded, with crisis-line footer
  • Hourly cron, 24–26h window (overlap covers missed runs)
  • Verified E2E in production: Gmail inbox → session → confirmation
Agent backbone

Type-what-you-need search built for crisis brains

A vendored cut of the zsty vibe-search engine with a veteran-specific synonym map. A vet in crisis doesn't browse menus — they type 'sleeping in my car' or 'lost my dd214' and the search routes them to the right page with the right phone number, instantly, no server round-trip.

Before
A 19-item nav asked a person in crisis to guess the right page.
After
One input that understands 'I need a place to sleep tonight.'
  • Keyword + synonym scoring, zero runtime deps
  • Crisis phrasings mapped: homeless → shelter/evicted/car, crisis → 988
  • Rotating placeholder teaches the pattern ('I need a place to sleep…')

While the owner sleeps.

Autonomous surfaces

The agent backbone keeps the brand earning after hours. The owner approves; the system runs.

  • Reminds every veteran 24h before appointments

    hourly

    Hourly Vercel cron sweeps scheduled appointments, emails the reminder, marks it sent — SMS fires too once the vet opts in.

  • Flags 🚨 GET-HELP intakes the moment they land

    real-time

    Urgent-subject email to the intake team plus a red-flagged row in the admin inbox — no submission waits on someone checking a tab.

  • Logs every message into the case file

    on every send

    Each email/SMS attempt is written to a per-veteran audit log the admin HQ surfaces — delivery is part of the record.

← All rebuilds

Homeward Bound Veterans — Squarespace brochure to a veteran-services platform — zsty.us