zsty.us

Before / After · Case Study

Homeward Bound Veterans — a rented brochure became a platform that never forgets a veteran's appointment

  • Local Pro Services

A veteran-led nonprofit fighting veteran homelessness was running on a rented template — a 19-link menu, leftover demo-store pages, donate buttons that left the site, and no way for a veteran to do anything but call. Now every veteran has a private sign-in for documents and appointments, staff see one calendar across every client, and the system reminds each vet the day before an appointment on its own.

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

At a glance

What this rebuild covers.

  • Security

    Veterans sign in with a link sent to their email — no password to lose or have stolen — and their DD-214s, medical records, and IDs live in a private vault only they and their case manager can see.

  • Design

    The whole public site was rebuilt help-seeker-first: the Veterans Crisis Line (988, press 1) rides a persistent strip on every page, and 'Get Help Now' deliberately outranks 'Donate' everywhere.

  • Agents

    One search box understands crisis phrasing — a veteran can type 'sleeping in my car' or 'lost my dd214' and land on the right page with the right phone number instantly, instead of guessing through a 19-item menu.

  • Email

    Seven branded emails carry the whole relationship — sign-in link, welcome, appointment confirmed, updated, cancelled, day-before reminder, and urgent intake alerts — each with the crisis line in the footer.

  • Customer notifications

    An hourly sweep reminds every veteran 24 hours before an appointment, urgent get-help submissions alert the intake team the moment they land, and every message sent is written into that veteran's case file.

  • Search visibility

    Structured question-and-answer pages now answer searches like 'where can a homeless veteran sleep tonight', with dedicated local pages for all three markets the org's houses serve.

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
  • Brochure → veteran portal + staff HQ in one build day
  • Crisis line: 0 → all 16 pages
  • Appointment reminders: none → automatic, 24h ahead
  • Leftover demo-store pages: 2 → 0

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
For the technically curiousHow it was done
  1. 01

    Where it started

    A Squarespace 7.1 template carrying a life-saving mission: a 19-link template nav, a leftover demo store still selling a '$25 Harvest Moon Cup', donate buttons that bounced visitors to third-party pages, a mailto: link for contact, and a homepage that became whatever flyer was uploaded last. No sign-in, no database — a veteran who needed help could do nothing but call.

  2. 02

    The real problem

    Two audiences with opposite needs shared 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. Homeless veterans lose documents; that's part of the problem being solved.

  3. 03

    The rebuild

    Research first — 990 filings, the org's Candid profile, every page of the old site, board bios, five resident testimonials, 50 org photos, and four print fliers folded in as first-class content. Then sixteen public pages rebuilt help-first with the crisis line on every one, a passwordless magic-link veteran portal with a typed document vault (DD-214, medical, ID, benefits) on managed file storage and a Pacific-time appointment calendar, and an admin HQ mirroring it all: one calendar across every client, per-vet files, and an intake inbox that red-flags urgent get-help submissions.

  4. 04

    Rails that never forget

    Seven transactional email templates carry the lifecycle — sign-in link, welcome, appointment confirmed/updated/cancelled, the 24-hour reminder, and urgent intake alerts. An hourly scheduled job on our hosting platform sweeps upcoming appointments on a 24–26 hour window (the overlap covers missed runs) and reminds the day before, every send lands in a per-veteran audit log, and text-message rails are wired behind an opt-in gate, ready the moment the veteran says yes.

  5. 05

    What runs now

    Deployed, DNS'd, and TLS'd the same session, then verified end-to-end in production: a real sign-in email into a real inbox, into a session, an appointment created, a branded confirmation email out, and the admin calendar showing it Pacific-time correct. Plus what the template never had — question-and-answer and nonprofit structured data for search, long-tail local pages for all three housing markets, and a crisis-aware search box that understands 'I need a place to sleep tonight.'

Architecture

Old stack
  • Squarespace 7.1
  • Template nav (19 links)
  • Demo store leftovers
  • mailto: contact
  • Zeffy link-outs only
  • No auth · no data
New stack
  • modern web framework
  • design system
  • managed app hosting
  • HMAC magic-link auth
  • transactional email rails
  • edge hosting we operate
  • Hourly reminder cron
  • FAQ + NGO JSON-LD

What changed, with evidence

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 — a rented brochure became a platform that never forgets a veteran's appointment — zsty.us