Skip to content

Instantly share code, notes, and snippets.

@MichaelrMentele
Last active February 21, 2022 19:56
Show Gist options
  • Select an option

  • Save MichaelrMentele/96ba72e6cbc8b7b971cd5aadbb36cdd9 to your computer and use it in GitHub Desktop.

Select an option

Save MichaelrMentele/96ba72e6cbc8b7b971cd5aadbb36cdd9 to your computer and use it in GitHub Desktop.

We are interested in building a system to manage a customer relationship lifecycle from lead (saw vehicle and inquired) to return customer.

Background

Independent dealerships publish inventory to an arbitrary number of third party websites as well as their own. This is a key way for them to advertise and source buyers.

When a someone indicates interest in a vehicle that is a lead the dealership needs to be notified about and take action with the goal of bringing them onsite to sell a car.

In addition, beyond the short sales cycle there is also the long term sales cycle of maintaining relationships with long term customers. Some dealers might not be interested in this and others may want to create simple rules about when to reach out to customers. This can take the form of an alert.

Requirements

Let's assume that consumption of leads is a given, i.e. that leads are POSTed to /leads and saved however you'd like. The lead information contains:

  • contact info such as a combination of name, email, phone, etc.
  • the vehicle they were looking at
  • (optional) pre-approval / credit information
  • (optional) a question or text field

Let's also assume that inventory is already published to the web by a separate InventoryAdvertisingService and that there is an InventoryService that manages the state and details of vehicles.

What is missing is a system to manage customer lifecycle. Here's a condensed version:

  • when a customer indicates interest through a web contact form
    • the dealership is able to automatically define and send a followup email or text on behalf of a sales rep
    • the sales person is able to
      • create and attach tasks to users
      • see what communication has occurred and when
      • set reminders to followup
      • easily find customers most in need of followup
      • automatically send text reminders to leads for appointments
      • send quotes/estimates and other arbitrary information
      • add notes/commentary on the customer
      • schedule an appointment
  • post deal
    • the dealership would also like to stay in touch with past customers and reach out at X, Y, Z years to check in and/or suggest a new car

How would you design a system to manage the lead stage and post sale followup?

The goal of the exercise is to see how you think through requirements clarification, zero in on the interesting bits, and talk through an initial design (could be a various levels depending on what you think is interesting i.e. entity modelling, system level, or other).

Bonus

Sales Managers:

  • the ability to (re)assign an employee to a customer with action items i.e. create 1 week followup "task", assign to Bill
  • view information such as all overdue tasks grouped by salesperson
  • create global rules for reminders for employees/customers around appointments or followups
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment