Here in our organization we are trying to use CF to expose content from AEM.
As we roughly knows the scope of consuming parties and specific CF entities they need, instead of modeling one CF model for each every type of entity, we are considering to do one common model which contains the super set of all fields needed from these entities.
Will this approach work? What are main caveats with it if any?
It would be the first to understand best the JSON contract that you are expecting. From there, we can provide you with some advice on how to create content fragment models, in a strategic way, where you are not creating a new content fragment model for each content fragment.
However, you are on the right path. Planning and designing reusable content fragment models is the best way to keep a sustainable content architecture in AEM.
As we wait for your JSON example, here's what I would do to tackle your problem:
Look at the JSON payload and what you are expecting to expose.
Identify reusable JSON data objects; these will be the common content fragments.
Design content fragment models with properties (kinda like UML diagram)
Execution (create the CFM, CF, core.components.page)
Caveats of having a common content fragment model for everything would be useless properties being exposed.