Fairytale Dreamers: a Deaf-led travel agency
and the website built like cabinetry.
A Deaf-led family travel agency in Maryland needed a website that earned trust before the first call. We built it under one roof — public site, agent CRM, lead pipeline, branded email, and a Disney trivia quiz you can answer by fingerspelling A/B/C/D into your webcam. Commodity hosting. No monthly SaaS bill. No React build farm. Three of the tools live on this page below. Sign your kid's height in. Pick a park. See what they can ride. Then sign your way through ten questions about Walt's favorite ride.
Who they are
Fairytale Dreamers Travel is a small, Deaf-led travel agency that books Walt Disney World, Disneyland, Disney Cruise Line, and runDisney weekends — primarily for Deaf and hearing families who want a planner who actually signs, runs the races, and has been on the boat. Free to the client; the agency is paid by Disney through the standard agent commission model.
The lead agent, Fallon, was born Deaf into a Deaf family and chaired an ASL interpreting program for ten years before going full-time on travel. The bench around her includes a Disney University alumna, a runDisney lifer who has stopped counting half marathons, and a coach in Colorado who is 16 medals into a "50 by 50" goal. The team's pitch is the kind of small-business pitch that has to be earned in a single page on the internet, and earned again every time someone fills out the contact form.
What we built
One stack, top to bottom, deployed to the static hosting provider's hosting control panel with a single bash command. The whole thing is static HTML, vanilla JS, hand-rolled CSS, and a lightweight backend — chosen on purpose. No monthly bill that creeps. No upstream vendor who can break a release window the day before a peak booking weekend.
- Public site 11 marketing pages, 9 blog posts, a 2027-cruise landing, a runDisney microsite, and 12 free interactive planning tools — three of which we lifted into this case study below. Hand-coded HTML/CSS/JS, no framework tax.
- Sign & Play trivia A 61-question Disney trivia quiz you answer by fingerspelling A, B, C, or D into your webcam. On-device hand tracking finds 21 landmarks; a small on-device recognizer classifies them into 36 ASL tokens (A–Z, 0–9, OK, ILY). Runs locally in the browser. Nothing uploaded. Tap-only fallback works the same way.
-
Agent CRM
A full back-office dashboard at
/agent/: leads board, bookings tracker, campaign queue, saved lists, KPI strip, email template editor. 8,500 lines of vanilla JS. The data store as database via the lightweight backend. Same login the agency uses today. -
Email pipeline
Form submission → the backend → the automation layer → a real branded mailbox at
contact@fairytaledreamerstravel.com. Customer-facing emails go out with proper SPF, DKIM, and DMARC. No "sent via" footers. - Deploy + DNS One bash script with snapshot rollback. The static hosting provider's hosting control panel, AutoSSL, the right TXT records. The agency owner can read the runbook and not need us. That's the deliverable, not a vendor lock-in.
v2 → v21 in the repo
made for the site
by the on-device model
after the domain renewal
Try three of the tools.
All three of these run on the FDT site today. They are the same code, restyled to live on this page. Self-contained — no API calls, no logins, your inputs save to your own browser's localStorage so they're there next visit. We make a lot of small tools like this. They cost almost nothing to build and they're how a small business demonstrates competence on the internet without saying the word "competence." The trivia widget below is the tap-only version of FDT's Sign & Play game — the live page asks for your webcam and reads the shape of your hand. Either way works.
Why this fits 1891's pitch
The page you are on right now — 1891's main demonstration — argues for systems built end-to-end, in Frederick, under one roof, that work for the body that walks in the room. Cameras instead of microphones. Hardware, firmware, gameplay, and set design from the same workshop.
FDT is the same argument in software. Hand-coded site, hand-coded back office, hand-coded email pipeline, deployed to commodity hosting with a single script. No SaaS rent. No framework that needs a rebuild every six months. No vendor who can change the deal mid-flight. When a customer fills out the contact form on a Friday night, the email goes through the agency's own mail tenant and lands in Fallon's inbox at 9:42 PM with proper authentication. When the agency wants to send a quarterly campaign, the queue is in their own sheet.
One small choice that matters: wiring the data store straight into the automation layer would mean a paid per-seat connector the agency carries forever. So we route around it. The backend writes a small JSON-bearing email to a hidden mailbox, an inbox rule moves it to a folder no human ever reads, and a free trigger on the mailbox picks it up, parses it, and dispatches two clean branded emails — one to the agent, one to the customer. The user sees a thank-you screen. Three seconds later, two emails land. No per-seat license in the loop.
1) Customer fills out the form on fairytaledreamerstravel.com
2) The backend saves the lead to the master data store (CRM source of truth)
3) The backend emits one [FTD-LEAD] trigger email with embedded JSON
4) An inbox rule routes [FTD-LEAD] to a folder no human reads
5) A free trigger on the mailbox parses the JSON
6) The agency's own mailbox sends two outbound emails, both signed with SPF/DKIM/DMARC
→ advisor notification to the on-duty agent
→ client confirmation from contact@fairytaledreamerstravel.com
7) Three seconds elapsed. Zero recurring license fees added.
That kind of routing decision is what we mean by "software built like cabinetry." You measure the wall before you cut the boards. You don't pay for a feature you don't need, and you don't build a stack that costs the client more to keep open than the agency makes in a slow month.
Wiring the data store straight in would have meant a per-seat license the agency carries forever. So we trigger off a plain email instead — and they own the whole thing. — Anthony Mowl, on the day FDT's email pipeline went live
Sign & Play, plainly
The trivia game on the FDT site does one thing that sounds harder than it is. You point your webcam at your hand. You sign A, B, C, or D. The page locks in your answer. Nothing is uploaded. Nothing is recorded. The video stream never leaves the browser tab.
Under the hood it's on-device hand tracking finding 21 landmark points on your hand, fed into a small on-device recognizer we trained to map those landmarks into 36 ASL tokens — A through Z, 0 through 9, plus OK and ILY. The model is the same one we made in 1891 Signal, ported over and trimmed. Loading the model is a one-time 1.4 MB hit; after that, classification is a few milliseconds per frame on a five-year-old laptop.
Two things matter about that choice. Universal design first. Every question that asks you to sign also has a tap button. Camera permission is opt-in and reversible. The game works with the webcam covered, with the laptop lid mostly closed, with one hand busy holding a kid. The fingerspelling is the fun part; it's not the gate. Disney trivia should be fun for Deaf families too — and fingerspelling A–D doubles as practice, which is the kind of small reason a Deaf-led agency makes a quiz game in the first place.
And the privacy line stays plain. The page does not say "AI-powered transcription." It says "we read the shape of your hand." Same brand-voice rule as the rest of the FDT site.
The Deaf-led angle — quietly
The lineage matters, but it does not lead. FDT's homepage says "Disney vacations made for every family." Then, lower: "a Deaf-led, signing travel team." The order is on purpose. The promise is universal. The fact that the people behind it are part of the community they serve is the why, not the headline.
That's exactly the line 1891 walks too. The work has to stand on its own merits in front of every kind of guest. The fact that the team has been in this conversation for generations is what makes the work feel right when you finally hear about it — not the reason to click in.
What changed for the client
Pre-1891, FDT was running their lead pipeline through a hand-managed spreadsheet, a personal email account, and a free no-code form builder that quietly added its own footer to every confirmation email. Booking customers were emailing the personal addresses of whichever agent happened to be on duty that week. There was no shared system.
After: every contact form on the site lands in one canonical data store, with a routed advisor copy, a properly branded customer confirmation, and a CRM dashboard where five agents can see leads, take ownership, leave notes, mark won/lost, and pull list segments for campaigns. Multi-user sign-in is teed up for whenever they want it. The whole thing is theirs — including the source code — and they own the domain, the email tenant, and the deploy keys.
Maybe the most important deliverable, though, was the runbook. GO-LIVE-GUIDE.md is plain-language. It says what was made, what was deferred, and what would take an hour to upgrade if they ever want to. It's the kind of document you write when you actually expect the client to read it — and you don't want them to need you forever.
Tenant zero
A year of live use later, the FDT stack became the design partner for something bigger. The same substrate — public site, lead intake, advisor roster, bookings ledger, the data store of record — is now a productized platform that any independent travel advisor, small agency, or multi-advisor tribe can stand up on their own slug. It's called 1891 Travel. FDT is tenant zero: still running the original cabinetry, now alongside other advisors on the same engine. Same contract, same workshop in Frederick, more rosters.
Running a small business that deserves a website built like cabinetry?
We take on about six software commissions a year alongside the immersive installations. First conversation is free.