Case study · Security · San Antonio, TX
A local alarm company that out-explains the national brands.
San Antonio Protection Services has been licensed and locally owned since 2010. Its competition sells five-year contracts on the doorstep. We built the full stack, wrote every page, and ran the local SEO and local marketing, so the company that knows San Antonio best is also the one that explains it best online.


The home page: the promise, the license number and the booking, all on the first screen
The nationals sell fear. This site sells a walk-through.
Alarm companies are bought on trust, and most of the industry spends it badly: a contract signed on the porch with someone who won’t be in town next month. A local company with a state license and a San Antonio phone number has a better story. It just needed a site that told it, in every place people look.
So the site makes one ask, a free on-site assessment, and makes it everywhere. It puts the proof where buyers check for it: the license number, UL-listed monitoring, and how long the company has been here. Then it earns the search traffic the hard way. Every neighborhood and town gets a page that knows the place: its census figures, its latest crime numbers with sources, a little history, and what a homeowner there should actually do.
What we did
Full stack, from the lead API to the last FAQ.
Full-stack build
Next.js, React and TypeScript, prerendered and served from Vercel's edge, with a lead API behind the booking form. No page builder, no plugins.
Lead engine
A four-step assessment booking on every page: what you're protecting, what's on your mind, where and when, then contact. On a town or service page it asks in that town's or service's name.
Local marketing
62 location pages for San Antonio neighborhoods and the towns around it, across eight counties, plus the Austin, Houston and Dallas metros. Each has its own facts, not a swapped city name.
Technical SEO
LocalBusiness, Service, FAQ, Article, Breadcrumb and Collection schema, the state license as a credential, an XML sitemap with images, and clean robots rules.
AI search
llms.txt and an llms-full.txt of the whole site, with AI crawlers welcomed by name in robots.txt, so ChatGPT, Claude and Perplexity can read and cite it.
Copywriting and research
Every page written for one search and one reader. Location figures come from the Census Bureau and FBI data, with numbered citations linking to the publisher.
Security hardening
A strict Content Security Policy, HSTS with preload, frame blocking and a locked-down permissions policy. Fitting, for a security company.
Speed and accessibility
Pages built ahead of time, WebP images and self-hosted fonts. A skip link, visible focus states, and animation that stops for visitors who ask for reduced motion.
Local marketing
62 location pages, and none of them is a template with the name swapped.
Thin city pages are how local SEO goes wrong: the same paragraph, a different town name, and a search engine that notices. Here each page is researched for its place, and every figure links to the publisher it came from. When the data doesn’t go further, the page says so instead of guessing.
- A headline written for that town's real story (Boerne grew 70 percent in a decade)
- At-a-glance figures: population, median home value, owner-occupied rate, founding dates
- The latest FBI crime figures we could verify, with what the source doesn't break down stated plainly
- A short local history, because a page about a place should know the place
- Advice tied to the housing and the risks there: garages, rural connectivity, empty weekday houses
- Landmarks, what tends to matter there, and FAQs a resident would actually ask
- Links to nearby areas and the guides worth reading, plus a sources and methodology section
- The booking form asking about a property in that town, not a generic one
Around the site








Services rendered
Everything we delivered, layer by layer.
- 97 pages
- 62 location pages
- 16 service pages
- 8 guides
- 8 counties
- 130k+ words
Design and build
- Custom design system: navy and royal blue, amber accents, dusk photography, editorial serif for long reads
- Full-stack Next.js, React and TypeScript build, hosted on Vercel
- An animated floor plan on the home page that shows what a plan covers and simulates a break-in
- A service-area map plotting every neighborhood, city and metro the company serves
Lead generation
- Four-step assessment booking on every page, worded for the page's town or service
- A lead API endpoint behind the form, kept out of the index by robots rules
- Click-to-call in the header, the hero and a phone button on mobile
- Trust shown where buyers check: the TX DPS license number, UL-listed monitoring and local ownership
Content and copywriting
- 16 service pages across residential, commercial and monitoring
- Residential, commercial, services, about, contact and assessment pages
- 8 researched guides on Texas camera law, alarm permits, rental security law, package theft and freeze protection
- More than 130,000 words across 97 pages, with no author bylines and no filler
Local SEO and local marketing
- 49 city and town pages across Bexar, Comal, Guadalupe, Kendall, Medina, Wilson, Atascosa and Bandera counties
- 13 San Antonio neighborhood pages, from King William to Stone Oak
- Consistent name, address and phone across the site and its schema, with ZIP codes and counties on every location page
- Service schema with the city served on every service and location page
Search and AI visibility
- Schema on every page: LocalBusiness, Service, FAQPage, Article, BreadcrumbList, CollectionPage and the license as a credential
- XML sitemap with image entries, and robots rules that keep the lead API out of the index
- llms.txt and llms-full.txt, with GPTBot, ClaudeBot, PerplexityBot and Google-Extended allowed
- Titles and descriptions written for each page's search
Security, speed and analytics
- Content Security Policy, HSTS preload, X-Frame-Options, nosniff and a strict permissions policy
- Prerendered pages from Vercel's edge, WebP imagery and self-hosted fonts
- Google Analytics 4, the only outside script the security policy allows
- Reduced-motion support and keyboard focus styles throughout
Competing with national brands in your town?
Local knowledge is the one thing they can’t buy. We build sites that prove you have it, page by page and town by town. Get a free mockup of your home page, or see how your site shows up in local and AI search.