Yeah, I'm definitely looking for a sane way to account for modules, especially productivity. It seems to have a lot of knobs though.
For things like machine speed, it's not too bad because you can postprocess it by multiplying the recipe combinator's time by a per-machine speed factor. It would be cleaner if that were built-in, but then again it would clutter the interface. It would be possible to output raw time instead, but I'm not sure that this would much simplify the circuit in practical deployments of machines, since they would have different sizes (affects beacon surround) and module counts.
For prod though, it's better to build into the recipe combinator, so that it can correctly calculate the number of recipes require. I'll have to see how it fits into the circuit at the current latency though ... currently the combinator is made out of many smaller hidden combinators, and ideally I'd like to keep that architecture so that there's no per-tick Lua code, and so that I can later make a button to export a vanilla blueprint of combinators that's equivalent to the recipe combinator. It might still be possible, or I might have to increase the latency by 1-2 ticks.
I think the calculation goes from ceil(required / recipe output) to ceil(ceil(required / recipe output) / (1 + prod bonus)), so it shouldn't be too hard to implement, but it might require some latency tricks. There are also a lot of corner cases involving recipes where some parts are marked as catalysts (eg Kovarex) — on a related note, it might be nice to have a "net input and/or output only" toggle.