September 2019
Software Design

I joined the team as they were mid way through a complete rewrite of the tech stack that powered their entire business, including their consumer website, an internal admin dashboard, a dealer dashboard, externally facing APIs, and their mobile apps for both Apple and Android devices. The project launched six month prior me joining and by then a solid foundation had been laid, with the team and pace of development beginning to ramp up significantly. This project was part of a strategic initiative within the organization to fully transform and modernize the technology used to power their business. This included a complete rearchitecting and replatforming of the web application, migrating to an entirely Elixir-based system, rebuilding the data model from scratch, and redesigning all of the user interfaces.

Harrison is adaptable to almost any situation. Technically, he can go from Java, to Ruby, to C without any problems. I can have him dive deep into a complex engineering problem. Then, the next day, I can put him in front of executives at Fortune 500 companies to present a really important pitch.
- Fred Lee, CTO at (source)

I had not previously worked with the Phoenix framework or Elixir language but did enough self-study in advance to be able to contribute in meaningful ways from day one. The team used Basecamp and the Shape Up software development process to manage this project. For the first cycle, I participated as an individual contributor, to get fully ramped up on the technology and the project. After that, I served as a "point person" for the remaining cycles, responsible for facilitating the team's execution, reporting on our progress, and coordinating our efforts with other teams across the organization.

The following are the cycle teams I contributed to:

  • Email Marketing Integration: The marketing team used Iterable to manage their email marketing templates and campaigns. As a result we were tasked to integrate the new platform with Iterable, recording contacts for any users that sign up for an account or submit the newsletter sign up form. To accomplish this we defined a facade that simplified the interface used by the rest of the platform to communicate with Iterable. Behind this facade we integrated directly into Iterable's HTTP interface, performing actions such as creating and updating contacts within Iterable. We also set up a page to allow users to manage their email preference settings (e.g. opting into or out of various categories of marketing emails), applying any changes to a user's preferences back into Iterable. This included support for both users with a completed profile, as well as users who simply registered to receive the marketing newsletter.

  • Site Activity Tracking: The data and analytics teams used the Adobe suite to track and report on users' activity across the site. During the next cycle we were tasked to set up consumer tracking across the new site, leveraging the existing tools used by these teams. To accomplish this, we integrated the Adobe Launch tag management solution into the site and established a set of patterns to allow developers to annotate pages and user events with the appropriate tracking information. We then configured a standard set of rules in Adobe Launch to process these events and dispatch them into Adobe Analytics for further analysis and reporting. This significantly improved the setup of this functionality in comparison to the legacy system, which was riddled with custom, hard-coded logic in tags that were constantly being broken as a result of the standard development and maintenance performed across the site.

  • Leads Partnership Integrations: The delivery of leads to dealers (i.e. customer's interested in purchasing a vehicle) is one of the primary sources of revenue for These leads can be delivered in a handful of formats and through a few different channels (e.g. email, APIs, etc). In order to bring parity to the lead management functionality within the new platform, we integrated the platform with the lead delivery APIs for four different dealerships groups. To facilitate the fact that each of these APIs was unique, with it's own request payload requirements and response structure, we used a strategy pattern to isolate each integration, while still allowing the overall workflow for how a lead was processed to remain consistent.

  • Leads Wrap-Up: In the final cycle before the initially planned launch of the new platform, we were given responsibility for smoothing out all rough edges related to the leads functionality in the new platform. This included integrating with the Salesforce account, to ensure that changes made to a dealer's account were properly reflected immediately in the new platform. We also completed the integration with Experian's FraudNet service to validate the data provided by end-users when submitting a lead and added support for triggering a confirmation email to be sent to the consumer upon submitting a lead. In order to monitor and debug the leads functionality with confidence after the initial launch, we also added instrumentation throughout the feature and configured a dashboard within Splunk to report on these metrics.

Unfortunately due to the COVID-19 pandemic and the impact this had on the auto industry, this project was put on hold. As the pandemic ran its course and auto industry recovered, was able to refocus on completing and launching this new platform. I helped to complete all remaining functionality for their user management and user engagement features (e.g. leads, saving a vehicle, saving a search, etc) and participated in the overall launch, validation, and stabilization of the new platform.

With the new platform the product and engineering teams gradually transitioned toward a more mature, stable, and consistent set of processes across all of their engineering teams. This included the adoption of Jira for tracking and managing their work and the standardization of how the roadmap, epics, and tickets for each team are structured and how they are managed through to completion.

At the same time I joined a team being tasked to integrating with a financing platform that had recently acquired, CreditIQ, and to expose it's functionality directly within the website. To unleash the value of this integration immediately, we leveraged an iframe-based integration that CreditIQ supported in an out of the box manner. This allowed us to walk customers through a financing process while on the page for a vehicle they are interested in. We also integrated with CreditIQ's API to enable a number of different application management use cases (e.g. saved applications, email notifications, etc).

We recently been working in a methodical manner, using a series of A/B tests managed within Adobe Target, to ramp up the number of customers that enter the financing process and those that complete the process and are approved for a loan to purchase their vehicle. This has proven to be a notably valuable feature for the organization and is an area of excitement and potential within the platform.