A good start-point for identifying patentable software-based
inventions is to understand the effect of the output of your
software.
Is the output used for the automation of a process or for
improving the automation of a process?
Does the output have improved accuracy compared with what was
done before?
Does the way the output is generated provide for faster or more
efficient processing? Do you get fewer failures using the
output?
We can also look at the sub-processes performed by the software.
Is the data handled or transferred with improved security or
efficiency? Is the overall process improved by different entities
performing different parts of the software code?
If the answer is yes, then your software may well provide a
technical contribution and therefore be patentable.