As a senior programmer, one of our jobs is to come up with solutions to existing gaps or pain points.
What I like doing is first designing a process or wireframe and trying to make it as simple as possible; not only just simpler.
In this example, for instance, I eliminate a file upload part because this requires additional codes. More codes means more codes to test and maintain.
"The best code to maintain is no code at all", I heard my colleague say.
Design is all about trade-offs.
Instead of reading a file, parsing the content, and mapping the data, the user can open it and copy and paste the required values.
I send the data on the same page via a POST request and do everything in the same controller instead of using the front end to do that, which multiplies complexity as I then need to validate the parameters in two places.
The best 'principle' I find for reducing complexity is to have fewer moving parts.