Which is why I keep saying the Changeset part of Ecto should become it’s own library, it is more generically useful than just in Ecto. ^.^
You can always depend on Ecto without using it though.
But otherwise, just implement the protocol to handle your own data structure.