Жаль, что в дслке нет возможности зафорсить наличие вызова конкретного метода, как обязательного data у вас, но в остальном это вполне логичное решение. В джаве, я думаю, я б такую задачу билдером и решал, аналогия вполне прямая в котлин получается.
я кстати вспомнил, что видел что-то на счёт этого толи в котлин репозитории, толи что в контрактах
то есть там можно было объявить контракт на то, что данная ф-ия будет вызвана в данном контексте например AT_LEAST_ONCE или типа того
так что может в какой-то версии котлина мы дождёмся такого :)