The 3D printing program used to rely solely on pen and paper for taking in and processing 3D print requests. Once a print request was completed, staff would have to manually contact the patron by phone or email (whichever one was more legible). This was an arduous process that ate up too many staff hours that could/should have been devoted to tasks actually in the job description of a librarian. Paper slips that were used to take in requests would commonly get lost leading to awkward interactions when a patron came to check on their print request, but staff could not find any evidence of it. A typical problem of using pen and paper was that staff had no way to control the types of prints patrons would request. This led to many patron requests that surpassed the specifications of our 3D printers, exceeded the maximum print time, or simply was unable to be found on any open-source repository. In addition, staff had no way to compile useful information on how well the program was performing. Whether that was knowing the most popular print requests or colors or the turnaround time from receiving a 3D print request to contacting the patron that it was finished.
To fix those issues, I worked to devise a new 3D printing workflow that would leverage an online form and automation to streamline the 3D printing process for both staff and patrons. For the first step, I created an online form that asked for basic contact information and the patrons library card number (gathered to better enforce our 1 3D print per month per patron policy). The form let patrons choose a variety of colored filament to use for 20 handpicked 3D print requests tested by staff that ensured it worked well with our printers and could be scaled by printing multiple at a time. If a patron wanted something not included in our curated list a link was provided to an online 3D printing repository. Responses from the form were then automatically fed into a shared master excel spreadsheet. From there I built 3 python programs specific to 3 common tasks in the 3D printing process: generating an organized list of 3D prints to be completed, sending automated emails to patrons informing them that their 3D print is completed and ready for pickup, and finally creating a list of expired 3D prints that patrons never came to pick up.
No knowledge of coding or the command prompt is required to fully utilize each of these programs! Once downloaded as an executable to your PC, each program walks staff through the process with simple yes/no prompts. The programs show staff previews of excel sheets and email lists to verify and proceed if desired. These programs are also designed to ask staff if they wish to delete old versions of excel sheets made by these programs to ensure no valuable data is lost.
The "email sheet" program filters print requests from the master excel sheet that have not yet been printed out on paper to be completed. To make the process for printing 3D print requests more efficient, I sorted the list of 3D prints to be completed primarily by color and then by date. Sorting requests by color makes it easier to print multiple same-colored requests at once (on the printer). This significantly improves efficiency and ensures that staff does not have to spend extra time changing out filament colors. The "email sheet" program then gives the option of emailing that excel sheet titled “3D print jobs for week of {today}.xlsx” (where today is today’s date) out to 3D print staff with instructions to appropriately format the excel sheet to be printed off. Otherwise, that excel sheet will just be saved locally for the person who ran the program to print off. The "email sheet" program also creates another excel sheet called “Updated sheet_print {today}.xlsx” to update the "sheet_print” column on the master excel sheet so we know those print requests do not need to be printed out again if we rerun the "email sheet" program.
Once print requests are marked off as completed using the "print_completed" column in the master excel sheet we can use the "email patrons" program to send personal automated emails to patrons informing them that their specific 3D print request is ready to be picked up. If a patron has already been marked contacted in the “patron_contacted” column on the master excel sheet then they will not receive another email. The “email patrons” program uses regular expression to analyze all the provided email addresses to ensure they follow a proper email format marking all invalid emails in the "invalid_email" column. This reduces the risk of getting bounced emails and allows staff to contact these patrons by phone. Once all the emails have been sent out to patrons the program creates and saves a new excel sheet to the desktop titled "Patron_Contacted_Updated {today}.xlsx". This new excel sheet appropriately marks the “patron_contacted” for each as of the patron’s we just sent emails to. The program also fills in the “contacted_date” for each patron with the date they were contacted. Staff then copies all the “patron_contacted”, “contacted_date”, "invalid_email" columns from the "Patron_Contacted_Updated {today}.xlsx" into the master excel doc. That why when we run the “email patrons” program again those some patrons won’t be recontacted.
Unfortunately, some patrons will never come to pick up their 3D print request. To make clearing out old 3D print requests as seamless as possible, staff can run the "expired prints" program to generate an excel sheet called "Expired 3D prints week of {today}.xlsx". This excel sheet lists all the 3D print requests from patrons who were contacted at least 3 weeks ago but never retrieved their items. Using that newly created sheet, staff can easily pick through the expired requests and put them in a donation pile for other patrons to have. Like with the "email sheet" program, staff have the option to email the newly created excel sheet to the 3D print team for someone else to go through the expired prints. Another option is to have the "expired prints" program run automatically at a set time interval so every week staff can get emailed with a list of expired prints to be donated. Finally, we need to go through and mark each of the expired 3D print requests in "print_expired" column of the master excel sheet so that these expired requests do not appear in next weeks report.
Ad hoc analysis into the performance of the 3D printing programing is done in a separate repository called "3D-prints-analysis-PUB".