@askonomm I appreciate your experience and work, but schemas (checking data with some patterns in the runtime) and types (static memory cells that checked in compile time*) are 2 very different approaches.
And the 2nd on is much less flexible cos it allows not only to check if the data is "string" but also any regexp pattern or it's length etc.
In fact the project I work on my current job uses Joi schemas (joi.dev). That is almost same thing as clojure's malli/spec.
*crude description
@askonomm So, the unpleasant part is: having type system and types for many data entities across the project (that is by definition very stupid entities) and then ALSO having schemas for all that types. So yours data definitions are duplicated in most placed. Meanwhile you could only use schemas.
I don't see any problems with describing data with schemas anywhere. That allow to add arbitrary strictness&checking exactly to desired part of your program/system and let other parts more free.