I can't really help you in terms of resources or time involved, I've never built such a system. Linode provides a pretty flexible generalized system which can be controlled by an API. You can explore the
API reference to see what kinds of things it can accomplish. You can create new instances, delete instances, clone instances, configure instances, etc. That's the core functionality, actually building a platform around that is up to you (or the existing platform if you find one). Linode gives you the means to automate their side, and your software would need to handle creating new instances, configuring them, populating them with data, etc.
The process might go something like, the customer provisions a small-sized deployment, your software creates (say) five new linodes, specifies stack scripts that put the right software and configuration on the new linodes, and then your software uploads the customer data to the newly created linodes (or the stack script could pull the data from somewhere as part of the config process). If the customer needs more capacity, your software can create additional linodes and configure them as required.
You don't have to use stack scripts or such things to do the configuration, there are other tools for automating configuration in a cloud, like Puppet or Chef. HoopyCat can probably talk more about those.
I guess what I'm trying to say is that Linode provides the basic raw resources to drive your platform, but you've got to put it all together and make it work.