Today I completed a small Company write vertical slice in TypeScript, from business validation to PostgreSQL persistence.

One detail clarified why application services are more than repository wrappers.

The repository update returns Company | undefined. That makes sense at the data layer: the query can succeed while the requested row does not exist.

But the application service translates undefined into an explicit not-found result.

After that translation, keeping Company | undefined in the successful return type would force every caller to handle a state the service has made impossible.