It's hard to expand off a shitty base, tho. Shitty little clients tend to be disposable code because something larger requires architecture and engineering. Even if you are working alone and don't write anything down, you're still going to need to fall back to patterns and etc.
A small, shitty client usually just stays that way.