RL
Senior Web Platform Engineer
RLRodney L. Lewis
All case studies

Running the marketing site like a product

The marketing site at Carrot was not short of demand. It was short of a front door. Web work arrived as hallway conversations, thread replies, and half-scoped asks, which meant scope surfaced during the build instead of before it, and the same clarifying questions were asked on every request. That is an operations problem wearing a technical costume, and no amount of faster building fixes it.

Challenge

Web work arrived from every direction and in no consistent form. Requests came in as conversations, scope was discovered mid-build, and the CMS collection pages underneath had drifted far enough from the design system that each new page was a small negotiation. Content production was slow, and the slowness was operational as much as technical.

Solution

I treated the marketing site as a product with an intake, a backlog, and a template system. An Asana intake form standardized how web work was scoped across marketing, design, and engineering, so requests arrived with the information needed to size them. I then rebuilt the Webflow CMS collection pages as modular templates that enforced the design system by construction, and wired the careers section to the Greenhouse API so open roles published themselves.

Outcome

Architected modular Webflow templates that reduced marketing dev requests by 30% and returned roadmap capacity to engineering. Design system consistency became the default state of a new page rather than something reviewed into it, and the careers section stopped being a page anyone had to maintain.

A schema record becoming a page, shown as three overlapping panelsThree panels drawn left to right, each overlapping the one before it. The first, labelled Schema, shows a JSON record with title, hero image and body fields. It is overlapped by the second, labelled Tokens, shown with a terracotta tint and a faint vertical grid, listing design token variables for colour, spacing and type. The second is overlapped by the third, labelled Page, a simplified page wireframe whose header bar and image block align to two guide lines carried through from the tokens panel's grid.Schema{ "title": "string", "hero_image": "url", "body": "richtext"}Tokens$color-primary$spacing-unit$font-family-bodyPage
Schema, tokens, and the rendered page overlap rather than sit in a row: each one picks up where the last leaves off. The tokens in the middle are the constraint every page is assembled against, not a checklist reviewed afterward, which is why the page's layout lines up with the tokens panel's grid rather than being checked against it later.

The build

So the first thing I built was not code. An Asana intake form standardized how web work got scoped across marketing, design, and engineering: what the page is for, who it is aimed at, what has to be true for it to be finished. Requests arrived comparable to each other, which made prioritization possible, and made it visible when the same request kept recurring in different clothes — which is the signal that a template is missing.

Those recurring requests pointed straight at the CMS. I rebuilt the Webflow CMS collection pages as modular templates, with the design system expressed in the components themselves rather than maintained by review. When the template carries the type scale, spacing, and component behavior, a new page is consistent because it was built, not because someone caught the drift in QA. Content production stopped being a build for each page and became an entry against a template.

The careers section was the clearest case for removing a human from the loop entirely. I wired it to the Greenhouse API so that open roles rendered from the source of truth recruiting was already maintaining. Nobody mirrors a job posting onto the website anymore, and the site cannot be stale relative to the ATS, because there is no copy step where staleness could enter.

Taken together, the intake, the templates, and the API integration turned a queue of requests into a system with an operating model. The requests that still reached a developer were the ones that genuinely needed one, which is the correct residue.

I keep coming back to this framing because it is the one that separates a marketing site that compounds from one that decays. Product rigor on a marketing site is not process for its own sake: it is intake so you know what you are building, templates so you build it once, and integrations so the parts that should never be hand-maintained never are.

Archived screenshot of the Carrot Resource Center: a sage-green hero with a filter row reading All, Blog, Webinars, eBooks & Guides, Case studies and Podcast, then one section per content collection, each with a heading, a View all button and a three-card grid.
The Resource Center, September 2021. Every section below the filter row is a separate Webflow CMS collection rendered through the same template.
Archived screenshot of the Carrot eBooks & Guides collection page: the same hero and filter row as the Resource Center with eBooks & Guides active, above a three-column grid of eight cards, each showing a printed-report mock-up and a linked title.
The same template at collection scope, October 2021. Hub and collection are one component set, which is what made a new collection an entry rather than a build.

Built with

  • Webflow Enterprise CMS
  • Greenhouse API
  • Asana
  • JavaScript
Contact

If you're hiring a platform owner, let's talk.

Currently open to senior roles owning marketing web platforms, Bay Area or remote. I reply within one business day.

Reach out

Other ways to connect