Solved this first independently but it was an absolute chaotic and lengthy workflow. I then looked at some of the solutions here and used that input to do it again, much nicer and optimized. Great learning experience overall even if I really hated this challenge at times.