How to plan bring down the space used by databases to as low as possible
I'll echo SqlWorldWide on the point about data types. The article they linked has a few good examples, but there are a lot more less-obvious areas to check too.
I've written a script sp_sizeoptimiser to help automatically identify a lot of them. Even if you don't use it, the areas it covers are worth looking into:
Data Types

Time based data types
Unspecified VARCHAR length
Mad VARCHAR Max
NVARCHAR data type
FLOAT and REAL data types
BIGINT as IDENTITY
NUMERIC or DECIMAL with 0 scale
Enum columns not implemented as foreign key

Architecture

Default fill factor
Number of indexes
Inefficient indexes
Sparse columns
Heap tables

Details for each of these is in the documentation linked above.
Preferably, I'd run this on a non-production copy of the database if possible, however it doesn't do any heavy lifting under the hood, so should be OK to run on production as well.