Architectual question: Engine with all common models

One issue with splitting the application into 3 will be consistency of deployment. If the models in the engine change you need to at a minimum run all the tests in all 3 systems, and possibly make updates, then find the time to deploy all 3. I know these situations are solvable, but I don't think it's worth introducing them if you strive to keep all your interfaces (web, import, export) well separated. You could add something like app/importers and app/exporters and treat them like "controllers" for the alternate interfaces. Also, the use of modules and namespaces can be useful for situations likes this.