Thing is... a lot of projects
seem this way when you're in the thick of it, but towards the end the mess can untangle itself and provide a useful tool/product for someone.
> Application is unstable and very difficult to use.
Could be that there are a couple of "killer bugs", fix them and it might not seem so bad. Difficult to use is also subjective, people get use to stuff.
> System is very convoluted, code very hard to understand, very difficult to change.
This could be "I don't understand the code, or know how to change it".
> Datamodel is too driven by a complex relational database (100+ tables).
OK, this one I can't defend :-P
> Unclear leadership, the manager responds to every new information with significant change in plans.
Well, if the plans are adding new features, these should go to the "nice to have" list. If it's "we need to rewrite this" then that's not good.
> Almost no automated tests or unit test.
No autowhatnow? :-D I don't think a project is necessarily "headed for failure" just because there are no automated/unit tests.
> Heavily depends on other systems, but no integration tests yet.
Yet! That's good, there's still time to test this before shipping.
> In fact, we actually just inherited this project (along with the mess) around 1-2 month ago from another dev team under the same manager, who have worked on it for a few month.
Aha! The root of the problem "I don't feel comfortable with other people's code"?