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.