Accurate semi-core and core states for BSE / correcting self-interaction error

Hi everyone,
I’m a fairly new user of exciting and would like to calculate dielectric functions/ energy loss functions with BSE including lower lying semi-core and eventually core states. I’m wondering if there is a way to tune the core electron states and the semi-core states to the experimental values known from XPS experiments to compensate for the self-interaction error in DFT.
For semi-core states, I tried to tune the 3d states of Ga and As in simple GaAs using hybrid functionals or GW. However, for instance the Ga 3d states are already too high up in any case (~ -16.5eV instead of the experimental value ~ -18.8eV) and keep being corrected to even higher energies the more accurate the calculation becomes, e.g. in GW by including more and more empty bands (gw/nempty) for the calculation of the screened Coulomb potential and the self-energy.
For the core states in GaAs, I noticed that the energies in EVALCORE.OUT differ a lot from experiment. I haven’t tried anything yet in terms of changing the bases in the species files (if this would make sense? I’ve been using the defaults in Neon so far) but I looked at the tutorial for calculating x-ray absorption spectra X-Ray Absorption Spectra using BSE - exciting and found that also there the reported energy for the N 1s state is -13.38038902 Ha so about -364.0989 eV, hence differing a lot compared to the experimental value of ~ -410eV. How are people dealing with this discrepancy when comparing calculated spectra to experiment? Or am I maybe missing something obvious here? I’m curious to get your comments on this! Thank you!