провалидировать input, перобразовать в формат для сохранения. если в фениксе это ложится (как общая практика) на плечи экто, то я видимо не разобрался как это проделать для юзкейса выше
Так, у тебя должно быть две валидации. Первая, на входе в контроллер. Вторая, при создании твоей структуры.
В мире OTP принято доверять данным, которые уже внутри, поэтому нужно валидировать с особым пристрастием на входе