Denver Contact Improv
Website, technical SEO and client-run editing
Michael Bernal teaches Contact Improvisation in Denver. I designed and built his site and its sister site, Art of Living CI: ten pages, a page for each class series, a beginner’s guide, and an FAQ in his own words. Both are static Next.js exports, so they load from a CDN with no server to maintain.
The search work is on every page rather than bolted on: titles and descriptions written from the phrases people type, canonical URLs, structured data for the business, the FAQ and the guide, a sitemap, and sharing cards. The sister site points its canonicals at the main domain so the two never compete. The full list is under SEO methods.
Michael updates the site himself through a private chat I built for him. He previews every change on a staging host, and nothing reaches production until he asks for it.
- Client
- Michael Bernal, Denver Contact Improv
- My part
- Design, build, search, hosting and handoff
- Built with



What a search engine reads on every page
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Denver Contact Improv",
"url": "https://denvercontactimprov.com",
"address": {
"@type": "PostalAddress",
"addressLocality": "Denver",
"addressRegion": "CO",
"addressCountry": "US"
},
"areaServed": {
"@type": "City",
"name": "Denver"
}
}


The client edits by chat
Sovereign Builder is a private, password-protected chat I built for this client.
- He asks for a change in plain words and attaches photos.
- An assistant edits the site's repository and builds a preview on a staging host.
- Nothing goes live until he says “deploy it”.
- A separate, signed deploy step publishes. The assistant cannot reach secrets, DNS or the shell.






















