I see that PULL establishes the destination of a curve by using normals from the curved surface to the planar one. This has but one consequence on a convex surface, shrinkage.

In my task it shrank 94%.

To maintain the size of an item surely a rotation has to be used.

Are there any tricks to use to minimise its effect ?

If one needs to keep the source objects size, as most users would wish, what else is there ?

Perhaps cover the item in a grid, PULL each grid line to the surface, then use flow to accurately take each grid line down to the PULL grid and the shape down to the surface ?
Could there be a multiple flow along curve, by selecting grid base line then target grid line as paired selections ?
Else it means placing a point or identifier where grid joins the pre flow curve , doing a flow one at a time, and joining those resulting points with curves afterwards.

If that could be put into a command by someone good at coding ?

you can pull a curve to the surface, createUV to get a 2d representation of the curve, do some modification in 2d (for example scale) and applyCrv to get the curve back to the surface…

if you re post is more about a general mathematical question, there is

if you re post is about a special problem - you might want to post the file.