Prototyping an Import & Match function (Part 1)

During a recent call with our clients, they mentioned about having to update the jobs' timings manually in the system at a regular basis when their agents send them schedule changes.

For some of the jobs, the client needs to export an excel sheet from a 3rd-party system, search for all relevant job matches and update our system accordingly. These jobs usually take place at a different location type from the others.

Sometimes, there are changes in the timing and location; other times, there are none.

They asked if there's anyway to streamline this manual process and reduce the data entry or updating time.

I requested for a sample of the excel sheet to find out what are the details and data types involved so we can better plan the import process.

A portion of the entire excel sheet.

While running through the long sheet, we discovered 2 challenges:

  1. There is only the vessel names but no vessel number;
  2. There are instances where there are multiple rows for the same vessel but with different arrival datetimes and locations. Sometimes it will be having the same date but at different times.

Multiple arrival datetimes

We dig deeper into the 2nd challenge in order to understand how would they know which row is the most relevant to that particular job that they are handling.

Example of a vessel with multiple rows for different jobs.

This meant that out of all the different entries, there is only one row that is relevant to our client, whereas the others are meant for other clients who are handling that same vessel for another job.

What they would do is to use the estimated time of arrival (ETA) to find the row with the nearest arrival datetimes, and use that data to update the system.

Initially, we were thinking to use their thought process to select the most relevant row to update a job's details, but we rejected this option as there are risks where the wrong row was selected and updated. This would waste more time for the user to having to search for that job and update with the correct information.

Instead, we passed some control to the user by displaying the 5 most relevant options according to the ETA and pre-selecting the top most relevant option. The user can personally check and ensure that the option with the correct info is selected.

This approach works in 2 ways:

  1. The user has some control over the choice and is being forced to review the options;
  2. The user cannot fault the system if the wrong option is selected and updated since they were given the chance change another option.

Vessel name match

For the 1st challenge, our team decides to filter out the list of jobs with the related location types, and use this list to find exact matches of vessel names in the excel sheet. This already reduces search time without having to find a match for every job in the schedule.

We also display an accompanying note at the upload stage, informing the user that if there isn't a match but they know that job exists in the excel sheet, then they have to update the system's vessel name to match the one in the excel sheet.

Prep Work

Instead of diving into development, I designed the screens and workflow first while my developer studied and prepped the code for the import function.

That's all I have today for this task. In the next post, I will talk more on the screens and the user feedback.

Cheers!