Interactive SOW

The statement of work1 came back covered in highlights. We made the changes and sent it out again. It came back with more.

That loop is why this project exists. The fix turned out to be small. What it changed wasn't.


Round after round

Satat had just changed direction, from Flutter to Frappe,2 and I had moved with it. As the work changed, we realised our own process needed a proper home too: one digital system, not files passed from person to person.

I saw why during pre-sales3 for one of our customers. The SOW went to them as a PDF. Their comments came back as highlights inside that PDF. Every change meant a new file and another round.

Every round made a new file, and the comments stayed inside it. File names are made up.

A PDF is fine for a final copy. It's a poor place to have a conversation:

  • Nobody could track changes. Each round was simply a new file.
  • Nobody could review live. Comments sat inside a file until someone sent it.
  • It was hard to read. An SOW is mostly wide tables, and on a PDF page they looked heavy.
  • Nothing held the process together. Who had approved this version? The file couldn't tell you.

A page instead of a file

The owner of the company and I came up with the idea together: stop sending a file, and give the SOW a page of its own.

Frappe already held our SOWs as records. What they didn't have was a portal, a page made for the person reading it. So the first job was simply to make it readable, with clear headings, the key facts at the top, and tables you can actually scan.

SOW_final_final.pdf
Statement of Work: Order Portal, Phase 1
This Statement of Work is entered into for the delivery of the modules listed in the schedule below, subject to the dependencies, acceptance criteria and exclusions set out in this document, and forms part of the agreement between the parties for the period 1 Dec to 31 Dec.
#FunctionalityProcessModulePurposeAcceptance criteriaDependency
1Order approvalSales enters the order. The system checks it against the limit and routes it.SellingLarge orders are checked before they are confirmed.A manager's approval is needed for any order above the limit.Customer: the approval limit and the list of managers.
2Stock alertsThe store team sets a reorder level for each item.StockThe team hears about low stock before an item runs out.An alert reaches the store team when stock falls below the reorder level.Customer: reorder levels for every item.
3Customer importThe customer shares a sheet. We clean it and load it.CRMExisting customers are brought into the new system.Every customer in the sheet appears with their contact details.Customer: one complete sheet of customers.
Any work not expressly listed in the schedule above shall be treated as out of scope and handled as a change request, with effort and timelines agreed in writing before such work begins.
Customer responsibilities
1Order approvalCustomer: the approval limit and the list of managers.Sales enters the order. The system checks it against the limit and routes it.
2Stock alertsCustomer: reorder levels for every item.The store team sets a reorder level for each item.
3Customer importCustomer: one complete sheet of customers.The customer shares a sheet. We clean it and load it.
Assumptions and exclusions
The dates above assume that this document is accepted on or before the start date and that all dependencies arrive as listed. A delay in either moves the end date by the same time. Effort is estimated on the information available at the time of writing and may be revised where the scope changes. Training beyond the sessions listed, data cleaning beyond the sheets provided, and any integration not named in the schedule are excluded unless agreed in writing by both parties.
Acceptance of each module is subject to the criteria in the schedule. Where a criterion depends on a third party, the fallback written in the row is what is delivered until that party's service is available. Issues raised after acceptance are handled under the support terms of the agreement.
sow / review
SOW-0042In reviewCCustomer↓ PDF
Order Portal, Phase 1
Statement of Work
CustomerSample Traders
Start1 Dec
End31 Dec
Effort120 h
Modules Included
1Order approvalA manager's approval is needed for any order above the limit.
2Stock alertsAn alert reaches the store team when stock falls below the reorder level.
3Customer importEvery customer in the sheet appears with their contact details.
The same SOW, two ways to read it. Tap to switch. Sample data.

The PDF didn't disappear. It became a small button in the top corner, for anyone who wants a copy.

still there, just in case

Comments on the exact words

The customer had already shown us what they wanted. They were marking exact words and writing next to them. So we kept that habit and took away the file around it.

Now you select the words you care about and leave a comment. They stay highlighted, with the author's initials on top, and the comment opens a thread in the side panel. We reply there, and once the point is settled, whoever wrote the SOW marks it as resolved.

Select, comment, reply, resolve. The conversation stays attached to the line it's about. Sample data.

There's no latest version to hunt for, because there's only one page. Resolved comments turn green and stay in the list, so months later you can still see how a line came to say what it says.

goodbye, final_final.pdf

The process, built in

Comments are what people notice. The bigger change was the process.

Every SOW now takes the same path. A developer writes it. Sales approves it. Then the customer approves it. If either of them isn't happy, it goes back, and the status at the top of the page says so for everyone.

sow / review
SOW-0042DraftDDeveloper↓ PDF
DDeveloperWriting
SSalesWaiting
CCustomerWaiting
DSigned in as Developer
Play each role yourself. Send it back and see where it goes.

When the customer approves, a green banner appears and asks them for feedback.


Small, and still running

As projects go, this one was small: a page, comments and a few approvals. But it took a process that lived in files and made it digital.

Once I had given it shape, I handed the project to another member of the team. We still use it today.

Before, our process was something we agreed on. Now it's something the page won't let you skip.

Footnotes

  1. A statement of work, or SOW, sets out what a project includes, what it leaves out and what it will cost. Both sides agree on it before the work starts. ↩

  2. Flutter is a framework for building mobile apps. Frappe is the open source framework behind ERPNext, used for building business software. ↩

  3. Pre-sales is the work before a deal is signed: understanding what a customer needs and scoping it. ↩