A disturbing number of startups have code like this too. They start out on a new project all bright-eyed and bushy-tailed thinking they'll change the world. They write lots of code, it may even work, but nobody wants it. That's the most likely outcome for a startup...
Then, being determined sons-of-bitches, they cast around for a new idea that'll build on what they've already built and prevent their old code base from going to waste. They find a potential market that's somewhat related, repurpose the code, add some new third-party libraries to deal with the specifics of the new market, and launch again.
Rinse, lather, repeat.
The solution's really to throw out all your code and start over when you go into a new market, keeping the knowledge you've gained. But since code is visible and knowledge isn't, I've never worked at a startup that encouraged this...
I recall reading something (sorry no link at the moment) which exhorted people to remember that anything which affected the software's ability to meet requirements is code and is to be treated as such.
Which means... some kind of revision control and the full scrutiny of your QA process before deployment.
So if a customer says, "and I want to be able to change the workflow rules without programming," you can say "Sure we can do that!" But you have to educate them to the fact that just because you give them a way to do that with a GUI or a DSL or whatever, the heavy part of the process--specification, testing, whatever--does not magically go away.
I'm rambling a bit, but I guess I am saying that had this project succeeded exactly as they envisioned it, an incredible WTF would have hit them when the customer started changing the rules and breaking everything.
Then, being determined sons-of-bitches, they cast around for a new idea that'll build on what they've already built and prevent their old code base from going to waste. They find a potential market that's somewhat related, repurpose the code, add some new third-party libraries to deal with the specifics of the new market, and launch again.
Rinse, lather, repeat.
The solution's really to throw out all your code and start over when you go into a new market, keeping the knowledge you've gained. But since code is visible and knowledge isn't, I've never worked at a startup that encouraged this...