I'm talking with a client who wants me to help integrate three pieces of software that are already in development. They are new to custom software and they contracted out each piece without specifying that each of the three should talk to each other. I don't think it'll be that bad getting these to all work, but I am concerned about specifying the liability. Who will be to blame if I write method doSomethingWithBoxesAndScissors(box, scissors), and the other contractors produce code that sends ill-formed scissors in as an input? I can't rely on a pre-written spec because there is concurrent development happening with very little of it pre-specified by the client. And I am a bit concerned that one of these teams will go rogue at deliverable time, cut some corners, get their piece accepted, and leave me holding the bag.
The client says that I am allowed to direct each of the teams on what they must do to achieve the integration goal, and they must accept my direction. The client is also fine with me billing hourly, so I'm not worried about getting squeezed on a flat fee. But I am a bit lost on how to define liability. The client, understandably, wants me to accept some liability. But they are looking to me for guidance on this.
Had anyone else dealt with this? How did you define the liability?
Larger clients will often require you to have liability insurance. I was able to get some quotes for this as an independent consultant myself. However, given the extra expenses you'll have to charge more. I'd suggest using this higher cost as leverage toward the liability they want you to accept (for you, ideally as-is). I'd also explain since it's hourly if they dislike your work they can just replace you.
IANAL but my understanding is that for contractual work in the US you can only realistically be sued for at most the amount of the contract (supposing non-negligence). Asking you to accept liability beyond this sounds risky.
Reject all liability. Software is almost always sold as-is. You should stand by your work, fix defects, offer help, offer advice, be a decent human, etc. But that should be done as more hourly work. If they are unhappy with how it goes, they might never hire you again, but that does not put it on you to be liable for their operations.
So you are already in a good place - hourly rates, define and communicate the specs to the other devs, and reject liability. If the client says no to that, walk away.