Myoldfriend,
interpolation on unstructured grids most likely leads to unsatisfactory results. My idea is first to rescale the whole diagram according to the maximum contour (+10), thus a complete rectangle can be filled with data:
data1 = Association@Map[Round@#[[1, 2]] -> #[[All, 1]] &, GatherBy[data, Last]];
assocIp = Interpolation /@ data1;
indx = Range[-10, 10];
Plot[Evaluate[assocIp[#][x]/assocIp[10][x] & /@ indx], {x, 0, 40}, PlotLabels -> indx, ImageSize -> 700]

This could be the basis for calculating a structured grid for final 2D-interpolation. And when you then undo the scaling you are done!
But basically you can see with this graphic that your data are not clean and why DeleteDuplicates
does not really help. You probably should consider solving that problem first.