Marketing tech at Root Insurance Co.
Site builder | inc.joinroot.com
Primary tools: Contentful, Gatsby/React, AWS CloudFront
One project at Root that I'm most proud of is my work developing a page creation system which powers inc.joinroot.com. The system allows designers and copywriters to build, publish, and deploy web pages without engineering support. This project greatly improved Root's ability to push out new content and iterate, taking a process that used to take ~2 weeks of engineering's time, down to now ~45 minutes of marketing's time! I built the majority of this system from the ground up over roughly a 4 month period.

Work involved in this project:
- Designed a Contentful content model of fairly generic pieces that can be combined in a variety of ways. This brings a ton of flexibility to the way designers are able to mix and match our component building blocks.
- Developed the entire system of React components that are the building blocks for the site. This includes a series of highly configurable page section components, a typographic system, colors, buttons, global elements, a spacing control system, etc.
- Worked in close communication with designers sharing progress along the way.
- Obsessed over code quality, file organization, naming conventions, and clean abstractions, ensuring that both the future developer experience and the page authoring experience are intuitive and enjoyable.
Oh, and did I mention the site is fast?!

HubSpot Form Builder
Primary tools: HubSpot API, Node, GraphQL, Gatsby/React, Contentful
Creating React forms that talk to HubSpot (a marketing lead gen tool) was a common request our team would receive from marketing, each form taking roughly a week to complete. To solve this I built a tool that allows marketing to do it on their own. They create their form using the HubSpot UI, then paste the form id into Contentful (our CMS) wherever they want the form to render, click deploy, and 3 minutes later the new form is live on the site!
Interesting things to note:
- The GET request used to build the forms happens at build time, not on the client. When the user requests the page the form is already part of it (no layout shift like you'd see with an embedded form). The resulting form is made up of components from Root's own React component library.
- I built this as a plugin that can be easily reused across our Gatsby sites.
Below you can see how easy it is to build your form within HubSpot's drag-and-drop editor and then you see those changes reflected on the Root marketing site. 👇
Below is one of the videos I created to help communicate the feature internally at Root (unmute to hear the description).