Projects

Case study · Domino Data Lab

Two years of development on a Remix and Sanity marketing site

Domino Data Lab builds the enterprise AI platform used inside life sciences, financial services, and insurance. From 2023 to 2025 we ran development on domino.ai. Not WordPress: a Remix front end reading from Sanity, deployed to Vercel.

  • Remix
  • Sanity CMS
  • Vercel
  • Coveo search
  • HubSpot
  • TypeScript

The client

Domino Data Lab

Domino gives large organizations one place to build, deploy, monitor, and govern machine learning models across hybrid and multi-cloud infrastructure. Their customers are regulated: pharma, banks, insurers. The marketing site is where that story gets told, and where the leads come in.

We came in the way we usually do. A web director we had worked with for years at another client moved to Domino and brought us with him.

The stack

A JavaScript site, not a WordPress one

Worth saying plainly, because most of our work is WordPress. domino.ai is a Remix application that resolves every URL against Sanity through a single catch-all route, then picks a template by document type. Around 56 content types and 52 editable blocks sit behind that. The Sanity studio is embedded in the site itself rather than hosted separately.

The original build came from Tinloof. We joined in August 2023 as the development team on a codebase we did not write, working next to Domino's in-house web and marketing people. Over the engagement that added up to more than 200 tracked work items and about 180 commits in their repo.

front end
Remix (React)
content
Sanity v3, studio embedded in the site
hosting
Vercel
styles
Tailwind
search
Algolia, then Coveo
forms
HubSpot
consent
Cookiebot + GTM Consent Mode
webinars
Goldcast

How a page resolves

One route for the whole site

There is no file per page. A request for any path hits the same catch-all route, which asks Sanity what lives there, picks a template from the document type that comes back, and renders whatever blocks the editor put on it. Add a content type and it routes itself.

  1. Any URL One catch-all Remix route handles every path on the site.
  2. Sanity lookup A GROQ query resolves the path to a document and its blocks.
  3. Template by type The document type picks the React template that renders it.
  4. Blocks render Editors composed the page from the block library. It renders in order.

The work

Integrations, mostly

A marketing site at this size is a set of third-party systems that have to agree with each other. Search, forms, consent, analytics, webinars. Most of what we did was in the seams.

  • Moved site search off Algolia and onto Coveo, the engine already running their docs and support sites.
  • Consolidated HubSpot forms and replaced per-asset thank-you pages with one page that reveals the asset on submit.
  • Swapped the HubSpot cookie banner for Cookiebot, with a separate banner for the EU and the rest of the world.
  • Built out the editable block library so marketing could compose pages without a developer.
  • Ran the event machinery behind RevX, Customer Tech Hour, and the Goldcast webinars.
  • Carried the dominodatalab.com to domino.ai rebrand through the redirect map.

Search

Algolia out, Coveo in

Domino's docs and support sites already ran on Coveo, and Coveo was already indexing the marketing site. Site search was on Algolia, so a visitor got different results depending on which property they searched from. Josh moved marketing search onto Coveo, added the filtering that keeps events and docs in their own lanes, and put a datatype meta tag on the pages so the crawler had something reliable to key on.

Forms and consent

Fewer thank-you pages, better banners

Every gated asset used to mean a custom thank-you page and a kickback email. We consolidated the HubSpot forms and built one page that changes itself on submit to reveal the asset, whether that is a PDF, a video, or an event confirmation with add-to-calendar links. The submission URL goes back to HubSpot as a hidden field, so the team can see where a lead actually came from.

Consent moved from the HubSpot banner to Cookiebot. HubSpot could not run a different banner in the EU than in the rest of the world, and Cookiebot can. That meant an opt-out style banner outside the EU, which is worth real acceptance-rate points, plus GTM Consent Mode wired underneath it.

The Cookiebot consent banner on domino.ai, reading This website uses cookies, with Preferences and Okay buttons.
The Cookiebot banner in place on domino.ai, captured July 2025.

The redesign

Staging a design change on a live site

The site changed shape while we were on it, from a vertical left-hand nav to a horizontal one, with new fonts and a reworked card and hero system underneath. The interesting part was not the design. It was switching to it without a dark window: staging the new pages alongside the old ones, listing every database item that had to change during the content freeze, and running a QA clearinghouse before the cutover.

The domino.ai homepage in January 2024, with a dark vertical navigation column on the left and a pale blue hero reading Build and Operate AI at Scale.
January 2024, before the switch. Vertical nav, pale hero.
The domino.ai homepage in July 2025, with a horizontal top navigation bar and a dark hero reading Transform faster, Govern smarter.
July 2025, near the end of the engagement. Both captures via the Wayback Machine.

Events

RevX, tech hours, and webinars

Domino runs a city-by-city event series called RevX plus a weekly Customer Tech Hour and a steady webinar schedule on Goldcast. That is a lot of content with dates attached, and dates are where content models break. Speakers, agendas, city pages, registration forms that preselect the right city, events that need to stay pinned without saying "weekly," cards that should not show up in both upcoming and on-demand on the day of the event. We built the blocks and the rules behind all of it.

Reliability

What a nine-minute outage bought us

We took the site down for about nine minutes rushing deployments ahead of a RevX event. Two feature branches touched the same line of a config file, the merge conflict got resolved in the GitHub web editor, and a missing brace went to production. Vercel's instant rollback brought it back.

The fix was not "be more careful." We added a functional testing step to the deploy pipeline and stopped resolving conflicts in the browser. Anthony's build configs came out of the same instinct: pin Node and Yarn locally to what Vercel CI actually runs, so a build that passes on a laptop passes in CI.

The rebrand

dominodatalab.com to domino.ai

The company moved its primary domain to domino.ai and the old one still has to resolve. That lives as a redirect map of about 250 rules, including host-level rules that catch anything still arriving at dominodatalab.com or the older event subdomains and send it to the right path on domino.ai. Unglamorous, and the kind of thing that quietly costs you traffic when it is done badly.

Who did the work

The team on this account

Josh Visick
Moved site search from Algolia to Coveo, including the filtering that separates events and docs from everything else, and the meta tags the Coveo crawler indexes on. Also the deploy pipeline work and the dev-database refresh instructions the rest of us used.
Henry Tung
The largest share of the build. Most of the block library (cards, FAQ, tabs, two-column, stats, hero variants), the RevX speaker and agenda blocks, the Goldcast embeds, the Cookiebot rollout, the dynamic HubSpot thank-you renderer, and the structured-data and no-index rules across the content types.
Anthony Skelton
YouTube embeds with the JS API turned on, the AI Hub URL restructure, the carousel migration from slick to Swiper, and the build configs that pinned Node and Yarn versions so local builds matched Vercel CI.
Ed Reckers
Ran the account. Onboarding into someone else's codebase, the working agreement with Domino and Tinloof, and the process changes that came out of production incidents.

Services on this account

  • Remix & React development
  • Sanity CMS modeling
  • Search migration
  • Marketing integrations
  • Performance
  • Deploy pipeline & QA

Running a marketing site on a JavaScript stack?

We work on Remix, Astro, and WordPress sites for funded technology companies, usually alongside an in-house marketing and design team.

Start a project