I can see I'm going to be swimming upstream, but I'm pretty strongly biased toward software being the answer to your question.
While your software can adapt to a weak schema, there's not much your database can help you with if your software is disfunctional. I've had a couple cases where I've been able to take a popular front-end application and totally rebuild the database without serious disruption, because the users don't see the database directly. (Which won't be true if the software is crap.)
So I'd say pay attention to what's closest to the user first.