We are a 3-person company that provides custom web application development. One of our clients in particular floods us with random change requests every single day. There is no batching of these requests into coherent projects - he just hammers us all day long with separate emails asking for new features and logic changes. We do pretty extensive functional and unit testing, but some bugs do occasionally still make it onto his live site.
The rudimentary contract that we have in place with this client specifies time and materials billing. We do offer a 90-day warranty against defects when we're doing actual projects, but that does not apply to ad hoc changes such as the ones requested by this client. We have just been billing him on a T&M basis for all of this ad hoc work, even bug fixes. Now, he is howling mad about that policy.
I am now trying to draw up a more formal Master Services Agreement and set of policies to address how defects will be handled - not just for this client but for all of them. Here are the two options that I'm considering:
Which of these two approaches makes the most sense? Or, is there another way that I haven't considered?
If you ever build a custom home, your contractor will make you sign a change order for every change request no matter how trivial. The change order spells out the scope of work and how much it will cost. Since your business is custom web application development, you should do the same.
Warranty all your work, just make it clear that a change in functionality/design are not a bugs and therefore not covered by warranty, but you would be happy to do them under a new statement of work.