[{"data":1,"prerenderedAt":221},["ShallowReactive",2],{"work-\u002Fwork\u002F03-greencars":3,"work-nav":61},{"id":4,"title":5,"blurb":6,"body":7,"chips":18,"client":27,"cover":28,"description":13,"extension":29,"goal":30,"intro":31,"meta":32,"navigation":33,"order":34,"path":35,"problem":36,"role":37,"sections":38,"seo":57,"stem":58,"year":59,"__hash__":60},"work\u002Fwork\u002F03-greencars.md","Standing up GreenCars from nothing","A brand new property with no audience and no pipeline. I built the newsletter, the preference center and the feed that keeps them fed.",{"type":8,"value":9,"toc":14},"minimark",[10],[11,12,13],"p",{},"Launching a property with no list is mostly an exercise in building the machine before you have anything to put through it.",{"title":15,"searchDepth":16,"depth":16,"links":17},"",2,[],[19,22,25,26],{"label":20,"tone":21},"Martech","accent",{"label":23,"tone":24},"SFMC","warm","XML","SQL","GreenCars","\u002Fimages\u002Fcover-greencars.webp","md","Build the acquisition and retention machinery: newsletter, preference center and an automated content feed.","GreenCars.com was launched to get the company ahead of the sustainable vehicle market.",{},true,3,"\u002Fwork\u002F03-greencars","A new property with no audience, no data pipeline and no sustainable way to keep content fresh.","Creative & technical lead",[39,44,49,54],{"eyebrow":40,"body":41,"media":42,"caption":43},"Newsletter","Built with the Newsletter Builder inside Odyssey, the internal Vue tool I built and host on Cloudflare. The send comes together from the latest articles without anyone touching HTML, and it's scheduled and deployed from the same screen.","\u002Fimages\u002Fgreencars-newsletter.webp","Fig. 01 — automated weekly send",{"eyebrow":45,"body":46,"media":47,"caption":48},"Preference center","Letting people choose what they hear about beats guessing, and it keeps the list healthy.","\u002Fimages\u002Fgreencars-preference-center.webp","Fig. 02 — preference center",{"eyebrow":50,"body":51,"media":52,"caption":53},"Content feed","An XML feed makes the CMS the single source of truth for every send.","\u002Fimages\u002Fgreencars-xml.webp","Fig. 03 — the feed",{"eyebrow":55,"body":56},"Results","The Newsletter Builder alone saves the team more than 40 hours a month that used to go into manual assembly.",{"title":5,"description":13},"work\u002F03-greencars","2022","4gaSk374CsL4DkVKkEYsYwaG3CXIpoWg8k5UphknUMw",[62,119,171,188],{"id":63,"title":64,"blurb":65,"body":66,"chips":73,"client":79,"cover":80,"description":70,"extension":29,"goal":81,"intro":82,"meta":83,"navigation":33,"order":84,"path":85,"problem":86,"role":87,"sections":88,"seo":115,"stem":116,"year":117,"__hash__":118},"work\u002Fwork\u002F02-odyssey.md","Lifecycle journeys that know who you are","Email, direct mail, SMS and display reading from one customer record — so the same person stops getting a different story on every channel.",{"type":8,"value":67,"toc":71},[68],[11,69,70],{},"Bringing this in-house meant owning the data model, not just the creative. That turned out to be the whole point.",{"title":15,"searchDepth":16,"depth":16,"links":72},[],[74,76,77,78,26],{"label":75,"tone":21},"Product dev",{"label":23,"tone":24},"AMPScript","SSJS","Odyssey","\u002Fimages\u002Fcover-odyssey.webp","Engage customers through coordinated lifecycle journeys, built and governed in-house across 300+ locations.","Odyssey is a multi-channel customer lifecycle program: email, direct mail, SMS and online display, all driven off the same customer data record.",{},1,"\u002Fwork\u002F02-odyssey","Marketing spend was going out to external vendors and customer records were disjointed, so coordination was impossible.","Creative technologist",[89,94,99,105,110,113],{"eyebrow":90,"body":91,"media":92,"caption":93},"The journey","Every touch is triggered off vehicle ownership data rather than a calendar.","\u002Fimages\u002Fodyssey-email-flow.webp","Fig. 01 — the journey, end to end",{"eyebrow":95,"body":96,"media":97,"caption":98},"Email","Brand-aware templates assembled at send time with AMPScript.","\u002Fimages\u002Fodyssey-email-honda.png","Fig. 02 — dynamic template output",{"eyebrow":100,"body":101,"media":102,"ratio":103,"caption":104},"Direct mail","The same record drives the print run, so the mailer matches the inbox.","\u002Fimages\u002Fodyssey-directmail-toyota.jpg","16\u002F10","Fig. 03 — print, from the same data",{"eyebrow":106,"body":107,"media":108,"ratio":103,"caption":109},"Online display","Retargeting built from the same audience definitions, closing the loop.","\u002Fimages\u002Fodyssey-display-subaru.jpg","Fig. 04 — display",{"eyebrow":111,"body":112},"On-demand tools","Odyssey is also the name of the internal platform behind these journeys — a Vue app I built and host on Cloudflare. It gives the team no-code tools for the day-to-day work: the Newsletter Builder lets anyone assemble a send, preview it on desktop and mobile, test it, and schedule or deploy it, without touching a template.",{"eyebrow":55,"body":114},"Bringing Odyssey in-house cut roughly $7M a year in external spend. It now runs 20+ journeys per location and 30+ for Driveway, sending 160M+ communications a year across email, direct mail and SMS — at 99%+ delivery and a 3.2% average click rate.",{"title":64,"description":70},"work\u002F02-odyssey","2021—2026","owwIpgK-06otKUqHOr4DZ1Q3Hnpz71mwS0IWsSKdmXY",{"id":120,"title":121,"blurb":122,"body":123,"chips":130,"client":139,"cover":140,"description":127,"extension":29,"goal":141,"intro":142,"meta":143,"navigation":33,"order":16,"path":144,"problem":145,"role":37,"sections":146,"seo":167,"stem":168,"year":169,"__hash__":170},"work\u002Fwork\u002F01-lithia-driveway.md","Modernizing a 300-store web presence","Dozens of dealer sites, no shared system, and a growth plan that was not slowing down. We drew the map before touching a pixel.",{"type":8,"value":124,"toc":128},[125],[11,126,127],{},"The thing nobody wants to hear on an acquisition-driven roadmap is that the first deliverable is a document. We wrote it anyway, and it is the reason the templates held.",{"title":15,"searchDepth":16,"depth":16,"links":129},[],[131,133,135,137,138],{"label":132,"tone":21},"Creative lead",{"label":134,"tone":21},"UX",{"label":136,"tone":24},"Figma","HTML","CSS","Lithia & Driveway","\u002Fimages\u002Fcover-lad.webp","Improve the experience across the whole web ecosystem with a documented, reusable system any team could build against.","Lithia & Driveway is one of the largest providers of personal transportation solutions in the United States. Growth through acquisition left the company with a sprawl of inconsistent websites and nothing written down.",{},"\u002Fwork\u002F01-lithia-driveway","Sites were built with little planning, so usability suffered. Every brand looked and behaved differently, and no team could tell you why.",[147,152,157,162],{"eyebrow":148,"body":149,"media":150,"caption":151},"Information architecture","Before a single pixel moved, we mapped the ecosystem so every team could see what existed and where it belonged.","\u002Fimages\u002Flad-sitemap.webp","Fig. 01 — the ecosystem, mapped",{"eyebrow":153,"body":154,"media":155,"ratio":103,"caption":156},"Desktop","One grid, one type system, and templates that survive contact with dozens of dealer brands.","\u002Fimages\u002Flad-desktop-1.webp","Fig. 02 — the core template",{"eyebrow":158,"body":159,"media":160,"ratio":103,"caption":161},"Templates in use","The same components, restyled per brand without forking the layout.","\u002Fimages\u002Flad-desktop-2.webp","Fig. 03 — one kit, many brands",{"eyebrow":163,"body":164,"media":165,"caption":166},"Mobile","Most of the traffic is on a phone, so the phone layout was the one that had to be right first.","\u002Fimages\u002Flad-mobile-1.webp","Fig. 04 — mobile first, genuinely",{"title":121,"description":127},"work\u002F01-lithia-driveway","2022—2024","WAM_dr6Q-vM1P-UjPNusxVBEObYuQDk_C_asc1CAJy4",{"id":4,"title":5,"blurb":6,"body":172,"chips":178,"client":27,"cover":28,"description":13,"extension":29,"goal":30,"intro":31,"meta":181,"navigation":33,"order":34,"path":35,"problem":36,"role":37,"sections":182,"seo":187,"stem":58,"year":59,"__hash__":60},{"type":8,"value":173,"toc":176},[174],[11,175,13],{},{"title":15,"searchDepth":16,"depth":16,"links":177},[],[179,180,25,26],{"label":20,"tone":21},{"label":23,"tone":24},{},[183,184,185,186],{"eyebrow":40,"body":41,"media":42,"caption":43},{"eyebrow":45,"body":46,"media":47,"caption":48},{"eyebrow":50,"body":51,"media":52,"caption":53},{"eyebrow":55,"body":56},{"title":5,"description":13},{"id":189,"title":190,"blurb":191,"body":192,"chips":202,"client":206,"cover":207,"description":196,"extension":29,"goal":208,"intro":209,"meta":210,"navigation":33,"order":211,"path":212,"problem":213,"role":214,"sections":215,"seo":218,"stem":219,"year":117,"__hash__":220},"work\u002Fwork\u002F04-chatterr.md","Bringing review generation in-house","An NPS and review product running across every rooftop and Driveway, replacing a vendor that cost real money every month.",{"type":8,"value":193,"toc":200},[194,197],[11,195,196],{},"The product that shipped isn't the one I first drew. Reviews were the part the stores actually needed, so that's the part that got built.",[11,198,199],{},"An in-person, QR-code version is scoped and built, waiting on its production release.",{"title":15,"searchDepth":16,"depth":16,"links":201},[],[203,205,137,138],{"label":204,"tone":21},"Product design",{"label":136,"tone":24},"Chatterr","\u002Fimages\u002Fcover-chatterr.webp","Bring review generation in-house across every rooftop and Driveway, with a product a store team could actually run.","Chatterr is an NPS and review-generation product, live across Lithia & Driveway's retail rooftops and Driveway.",{},4,"\u002Fwork\u002F04-chatterr","Review generation was outsourced and generic, disconnected from the people walking through the door — and it cost real money every month.","Product & UX design",[216],{"eyebrow":55,"body":217},"Bringing review generation in-house is projected to save $450K a year in vendor fees across every rooftop and Driveway.",{"title":190,"description":196},"work\u002F04-chatterr","ks9EpbN2JoeghN3WFMell36kDcnPQFGEoAAvpnMkXMM",1791349983548]