Use greedy when:
The problem has optimal substructure and greedy choice property
You can prove that a local optimum leads to a global optimum
Making a choice doesn't require knowing future inputs
You can swap a non-greedy choice with a greedy one without worsening the solution
If you can't sketch a proof, consider DP instead. Greedy that works by accident fails on edge cases.