Ecto.Schema / Ecto.Changeset - optional, conditionally present fields

Suspected that the complexity makes this non-viable, shame.

Then I suggest having a number of custom Ecto.Types whose dump functions skip fields with nil values. That seems like an okay-ish compromising solution. Though whether you’ll find the scattering of validation logic to more files beneficial or annoying is up to you.