Skip to main content

Blog

The 96-Hour SLA: Designing Client-Approval Deadlines Into an AI R&D Contract

In most software contracts the response-time SLA is a vendor promise: reply within N hours or pay a penalty. On an applied-research engagement with a major operator in Oman, we wrote it the other way round. The client owed the data, the approvals, and the platform access, so a 96-hour client-approval deadline went into the contract and was paired with milestone-tranche invoicing. This is a short read on why the response-time clock belongs on the party who controls the inputs, and how the two mechanisms together kept a three-year research programme from stalling on sign-off.

Narendra Patwardhanby Narendra Patwardhan7 min read
EarthScan insight

Most people who have signed a software contract know the response-time SLA as a vendor obligation. The support desk answers a Sev-1 ticket within four hours or credits your account. The clock runs against the supplier because the supplier controls the thing being measured. On the applied-research engagement we ran with a major operator in Oman, we put the same clock on the other side of the table. A 96-hour client-approval deadline went into the contract as a client obligation, and it sat next to a milestone-tranche invoicing schedule. Together they answered a question that quietly sinks a lot of R&D work: what happens to the vendor when progress depends on a decision the vendor cannot make?

Who actually holds up the work

On a support contract the vendor holds the inputs. It has the runbooks, the servers, the on-call rota, so it makes sense to measure the vendor's response time. Research on a client's proprietary data inverts that ownership. We could not label a single borehole image without the client's raw picks. We could not validate a fracture model without the client's expert interpreter agreeing the depth-matching tolerances. We could not deploy anything without access to the client's platform and VPN. In one Phase-3 integration plan a client task simply reads "Pending" against the line that let us start building at all.

When the party who owns the inputs is also the party whose sign-off gates the next phase, the vendor is the one exposed to delay. We do the work, hand over a phase deliverable, and then wait. If that wait is unbounded, an engagement that looks like a 20-month schedule on paper can run far longer, and the vendor carries the cost of the idle team with no contractual recourse. The fix is not to hope the client is fast. It is to write the client's response time into the agreement the same way a support contract writes the vendor's.

The 96-hour clause

So the proposal set a 96-hour client-approval SLA. Once we delivered a milestone artifact, the client had 96 hours to review and either sign off or come back with specific objections. The obligation was symmetrical in spirit to a vendor SLA and opposite in direction: the response-time clock ran against the party who owed the response.

This is not a penalty for its own sake. It exists because approval is on the critical path and approval is not ours to give. A vendor can commit to shipping a deliverable on a date because the vendor controls the work. It cannot commit to a downstream schedule if an unbounded review sits between every phase and the next. The 96-hour cap put a ceiling on the one variable we did not control, which is the only way to make the rest of the schedule mean anything.

Money moves in tranches, and tranches need gates

The second mechanism was milestone-tranche invoicing. The founding scope-and-cost memo split the fee into phase-gated tranches rather than a single lump or a flat monthly retainer. The first tranche was $130,000 payable upfront, framed as 28 percent mobilisation to stand up infrastructure and clean data before any modelling. The next was $104,000 at Month 5, and the one after that $104,000 at Month 10, each tied to a phase deliverable rather than a calendar date alone.

Tranche invoicing and the approval SLA are two halves of the same design. Each tranche invoices when a phase clears its gate, and a gate clears when the client signs off. That coupling is what gives the 96-hour clock teeth. Without the SLA, a tranche could sit unreleased indefinitely behind a review nobody was obliged to finish, so the mobilisation-heavy front load would be the last money we reliably saw. With the SLA, every gate has a maximum dwell time, so the cadence of deliverable, sign-off, and tranche stays bounded. The upfront 28 percent covered the sunk mobilisation cost precisely because the downstream tranches were the part exposed to sign-off risk, and the SLA is what kept that risk finite.

Why unbounded review compounds

The reason a review cap matters more than it first appears is that the delay does not happen once. It happens at every gate, and it accumulates. If the client takes hours past the cap at each of the sign-off gates that feed the tranches, the total overrun is the per-gate excess multiplied by the number of gates:

Schedule slip from per-gate review overrun
slip=(treviewtSLA)+×ngatestslip-month\text{slip} = \frac{(t_{\text{review}} - t_{\text{SLA}})^{+} \times n_{\text{gates}}}{t_{\text{slip-month}}}

The instrument below makes that arithmetic draggable. It plots the three tranche gates on a planned schedule and lets you set the review time the client takes at each one. Below the 96-hour cap the schedule holds and the tranches invoice on their planned months. Push the review time past the cap and the excess compounds across the gates into the orange slip band, sliding the finish to the right. Toggle the SLA off and the same review time runs unbounded, which is the state the contract clause exists to make impossible.

CLIENT-SIDE APPROVAL SLA · THE RESPONSE TIME IS THE CLIENT'S OBLIGATION0.0months of slip across 3 sign-off gatesA 96-hour deadline on the client's sign-off stops vendor progress stalling on approvaleach gate feeds one tranche; review beyond the cap compounds gate-to-gate into schedule slipTRANCHE RELEASED AT EACH GATE$130kP1-1 · upfront · 28% mobilisationgate 1$104kP1-2 · Month 5gate 2$104kP2-1 · Month 10gate 3No sign-off, no next tranche and no nextphase: the vendor waits on the client.SCHEDULE · PLANNED FINISH VS SLIP FROM OVERRUNM0M4M8M12M16PLANNEDM5M10ACTUALfinish M10finish M10.0review this gate72 hover the 96 h cap0 h/gateacross 3 gates0 h → 0.0 mo slip96 h CLIENT-SIDE SLA: ONclient review capped by contractclick to toggle the deadlineREVIEW LEVERdrag hours the clienttakes at each gate24h168h336h504h600h96 h cap72hper gate
A response-time SLA inverted onto the client. Milestone-tranche invoicing releases $130k upfront (28% mobilisation), $104k at Month 5, and $104k at Month 10, but each tranche waits behind a client sign-off the vendor does not control. Drag the review time the client takes at each gate: below the 96-hour cap the schedule holds (teal, planned finish at Month 10); above it, the excess compounds across the three gates into an orange slip band that pushes the actual finish right. With the SLA on the client side the lever cannot pass 96 hours without breaching the contract, which is exactly the stall the deadline exists to prevent. The 96-hour SLA, the three tranche amounts, the 28% mobilisation share, and the planned months are sourced from the engagement archive; the per-gate review-hours lever and the hours-to-months-of-slip arithmetic are illustrative, drawn to show the mechanism rather than a measured delay.

The orange band is the whole argument. It is not a measured delay from this engagement; the per-gate hours and the conversion to months are illustrative, drawn to show the mechanism. The sourced facts are the ones the band sits on: a 96-hour SLA, three tranches of $130,000, $104,000, and $104,000, and a 28 percent mobilisation front load. What the picture shows is why the number 96 was chosen at all. The cap is not about any single review being slow. It is about small overruns at every gate summing into a schedule the vendor never agreed to absorb.

The two clauses worth keeping

Two things generalise past this one contract. First, a response-time SLA belongs on whichever party controls the input being waited on, and in research on a client's data that is usually the client. Copying the vendor-side default into an R&D agreement leaves the vendor holding a risk the vendor cannot manage. Second, an approval deadline is inert unless something depends on it. Bolting the 96-hour clock onto milestone-tranche invoicing gave it a consequence, because a missed gate now stalled a payment and a phase, not just a status field. The clause and the cadence only worked as a pair.

None of this substitutes for a client who wants the work to succeed, and no contract term forces a genuinely blocked review to resolve. What the two mechanisms bought was a bounded worst case: a schedule whose slip was capped by a number both sides had signed, rather than open-ended exposure to a decision we did not own.

Limitations

The schedule-slip arithmetic in the instrument is illustrative. The per-gate review hours, the number of gates used for the compounding, and the conversion from overrun hours to months of slip are chosen to show the mechanism, not to report a measured delay from the engagement. The sourced figures are the 96-hour client-approval SLA, the three tranche amounts ($130,000 upfront, $104,000 at Month 5, $104,000 at Month 10), and the 28 percent mobilisation share; the planned-versus-actual finish is a construction on top of those, not an audited outcome. Contract terms here are described in anonymised aggregate and are specific to this engagement's structure and governing law.

References

[1] Engagement proposal, the client-approval service-level term (96-hour approval window). Internal engagement archive.

[2] Founding scope-and-cost memo, milestone-tranche invoicing schedule and mobilisation share. Internal engagement archive.

Go to Top

© 2026 Copyright. Earthscan