Opening the book…
Complexity is easy to add and hard to remove. Starting with the smallest thing that could plausibly work keeps you close to the actual requirement and forces the real constraints to show themselves before you have invested in a grand design. It is far easier to grow a small working system than to trim a large speculative one back to what was needed.
Build the narrowest version that a real user could exercise end to end, then extend it under pressure from real cases. Resist adding configuration, abstraction, or generality until a second concrete need demands it. Ship the small thing, learn from it, and let the next requirement justify the next increment.
Some designs have a known shape from the start, and pretending otherwise just means an expensive rewrite; here, build for what you can clearly see coming. Foundational choices that are costly to reverse, like data models, deserve more thought up front.