Para serializar/deserializar a Json instancias en Scala, más si usamos Cats, una opción bastante mayoritaria es usar la librería Circe.
La librería más usada en el ecosistema de Typelevel es fs2-kafka. Aquí dejo algunos apuntes extraídos de la documentación y de algún que otro artículo revisado que dejo enlazado.
Usando conjuntamente tipos y pocos y refined para validar datos en Scala 3. Introducción En Scala 2 eran bastante común usar las librerías refined y newtype para validar datos y obtener representaciones ligeras (sin todas la contrapartidas de los value objects en cuanto a creación de objetos y sus consecuencias) de los tipos de datos usados en nuestro dominio. El libro de Grabriel Volpe es una fantástica referencia para ver este patrón en acción.