In: Computer Science
The goal of this problem is to design a system to manage a moving company.
Customers who are planning to move (e.g., moving from a house to another one) call the moving assistant at the company to schedule their moving. The customer provides potential moving dates as well as the moving-from address and moving-to address. The assistant replies with a list of available dates. The customer picks a moving date and time. The assistant then schedules a virtual tour (with a date and time) with the customer (typically within the following 3 days) to provide a more accurate estimate about the moving price.
At the virtual tour date and time, the assistant calls the customer (e.g., via Zoom). The customer shows the major items to be moved. At the end of the virtual tour, the assistant gives the hourly rate, estimated total price, and estimated moving duration (number of hours). The assistant also emails a contract to the customer. If interested, the customer signs the contract and emails it back to the assistant. To validate the contract, the assistant calls the customer back. The customer provides credit card information to pay a deposit. Payment information is sent to the credit card company for authorization. If authorized, a deposit receipt is given to the customer.
At moving date, a crew of the company’s movers starts the actual moving. The head of the moving crew records the start time and share it with the customer. At the end of the moving, the head of the moving crew records the end time and calculates the actual total price. The customer provides credit card information. Payment information is sent to the credit card company for authorization. If authorized, a final receipt is given to the customer.
One week after the moving, the customer receives a survey form by email to evaluate the moving experience. The customer emails back the filled out form.