Right or wrong in these things is relative. Everything works and overall it is not falling apart. It's often priceless to try to do so right, as long as you know what you're doing . Not knowing the right thing is not good.
I think your project is too layered, but it's just my general opinion.
In general it is confusing to have generic helpers so, but has cases that is the best solution. We can not answer this.
It can be in helpers if you organize well, do not become a heap of things. These helpers can be extension methods. Or they can be in some kind that is not just a helper , maybe even an existing type. You can not separate too much, or put too much together.
Otherwise you should put the helper , if it is appropriate to have one, where it makes the most sense, can be totally separate from the rest (so it seems to be the case for almost everything) or it can be in one of these layers, it depends on whether it is for single use in it. Do not put anything in a specific place and use solution everywhere. Separate the general library of the application. Not necessarily as helper .