Technical skill gets you a pilot only if the client trusts your numbers. This module turns discovery into a repeatable product: a two-week readiness audit, a scored list of use cases, an ROI model that survives a sceptical CFO, and a proposal the client can sign.
A small company does not buy "AI transformation". It buys a clear answer to "what should we do first, what will it return, and what could go wrong?". The readiness audit sells that answer for a fixed scope and a short time. It is also the cheapest way for you to learn whether the client is a good fit before you commit to a build.
The audit is the design stage of Vastama's design, build, test, monitor pipeline, packaged so a client can buy it alone. Done well, it sells the build stage for you, because the pilot is already specified and costed.
| When | Activity | Output |
|---|---|---|
| Before day 1 | Kick-off call, signed SOW, named sponsor, interview slots booked, data request sent | Interview schedule, access list |
| Week 1 | 6 to 10 stakeholder interviews; swimlane mapping of 2 or 3 processes; data and systems inventory; start measuring baselines | Interview notes, current-state swimlanes, inventory |
| Week 2 | Maturity scoring; long list of use cases scored; ROI for the top 2 or 3; risk and governance notes; report; readout meeting | Audit report, scoring sheet, ROI workbook, pilot proposal |
What makes it a product and not a favour: a fixed scope, a fixed number of interviews, named outputs, and a readout where the sponsor makes a decision. What stays out: building anything, connecting to production systems, or touching personal data beyond samples the client chooses to share.
Interviews are where you find the real work. Ask about the last time something happened, not about how things usually go. Ask to see the artefacts: the spreadsheet, the inbox, the form. Forty-five minutes per person; two people from the same function if the team is large. Interview in the language the person works in (Hebrew, Russian or English) and take notes in English.
| Function | Question bank (pick 6 to 8) |
|---|---|
| Owner / CEO | What decision do you make with the least information? What would you want to see every Monday? What have you already tried with AI? What data must never leave the company? What would make this project a failure for you? |
| Finance | How many invoices, payments and reminders per month? Walk me through the last invoice from receipt to payment. Which tasks are done at month end under pressure? Where do errors come from and what do they cost? |
| Sales | How does a quote request arrive and how long until it is answered? What gets forgotten? What do reps write in the CRM, and what do they skip? Which customers get the slowest replies? |
| Operations | How do you find out a shipment is late? Who chases suppliers and how? Which spreadsheets run the business? What breaks when one person is away? |
| Customer service | What are the five most common questions? Where do the answers live? How often do you escalate and why? Which languages do customers write in? |
| Marketing | Which content is missing or out of date? Who translates, and how long does it take? How do you reuse supplier material? |
| HR | How many roles and CVs per year? Which documents do you write again and again? What personal data do you hold and where? |
| IT / systems | Which systems hold customers, stock and finance? Can they export data, and in what format? Who has admin rights? Is there a data policy, a backup, a Microsoft 365 or Google Workspace admin? |
For each of the two or three processes that came up most in interviews, draw a current-state swimlane: one lane per actor (person, team or system), steps left to right, and a note on each step for volume, time and pain. Do it on a whiteboard or in a shared document with the process owner in the room. Do not draw the future state yet; the point is to see where time and errors accumulate.
| Capture on every step | Why it matters later |
|---|---|
| Actor and system used | Shows where Claude would need a connector or an export |
| Volume per month | Feeds the ROI baseline and the model-choice decision |
| Minutes per item (measured or sampled) | The core of hours saved |
| Inputs and outputs (email, PDF, spreadsheet, form) | Tells you if the work is text-heavy and checkable |
| Failure or rework points | Feeds error-reduction value and acceptance criteria |
| Language of the content | Hebrew, Russian and English each need test samples |
One row per system or data source. Keep it a table, not a diagram.
| Field | Example |
|---|---|
| System and owner | Local Israeli ERP, finance manager |
| What it holds | Customers, items, invoices, stock |
| Access method | CSV export, database read, API, none |
| Data class | Public, internal, personal data, financial, confidential |
| Quality | Duplicates, missing fields, mixed languages |
| Who may grant access | Named person, plus any outsourced IT contact |
| Connector path | Existing MCP server, build one, or manual export for the pilot |
Connected data is the step that most often blocks SMBs. A system with an export is enough for a pilot; a system with no export means the first project is the export.
The ladder gives the owner a picture of where they are and what "better" means, without jargon. Score the company as a whole and each department that matters, with evidence from interviews.
| Step | What it looks like | Evidence you look for | Typical next move |
|---|---|---|---|
| 1. Ad hoc chat | Individuals use chat tools on their own, no rules | Personal accounts, no policy, no shared prompts | Usage policy, team workspace |
| 2. Team workspace | Shared team plan, shared Projects and prompts, a usage policy | Admin console in use, a few champions, saved templates | Connect the first data source |
| 3. Connected data | Claude reads company data through approved connectors | Connectors or MCP in place, data classes agreed | Automate one reviewed workflow |
| 4. Automated flows | Specific workflows run on triggers, a person reviews exceptions | Logs, evals, an owner per workflow, cost tracking | Add monitoring and a change process |
| 5. AI-native ops | New processes are designed around AI from the start, with continuous measurement | Governance in routine use, metrics reviewed monthly | Expand by function; keep evaluating models |
Score four dimensions from 1 to 5 each: people and skills, data and systems, process clarity, governance. The overall step is the lowest of the four, rounded down, because the weakest dimension limits what you can safely build. A company with a good team but no usable data is at step 1 or 2, whatever the enthusiasm.
Collect 10 to 15 candidate use cases from interviews. Score each 1 to 5 on three questions, with the client in the room for value and risk.
| Criterion | Question | 1 means | 5 means |
|---|---|---|---|
| Value | How much time, error cost or revenue is at stake? | A few hours a month | Large share of a team's week, or a clear revenue effect |
| Feasibility | Is the data reachable, the task text-based and checkable, the owner willing? | No data access, vague task | Data exportable now, clear right answer, eager owner |
| Risk | What happens if the output is wrong or leaks? | Internal draft, easily corrected | Money moves, legal exposure, personal data, no review step |
Combine them in a weighted sheet. Risk is inverted so a higher total is always better: score = w_v × value + w_f × feasibility + w_r × (6 − risk). A starting set of weights is 0.45, 0.35 and 0.20, but agree the weights with the client before you score, so the ranking is theirs. Then apply a gate: risk 4 or 5, or feasibility below 3, is never the first pilot, whatever the total.
A credible ROI model is boring and conservative. It has five parts.
Then compute net benefit per month = time value + error value + revenue lift − run costs, and payback period = one-off cost ÷ net monthly benefit. Show it as low, base and high so the client sees the range, not a single hopeful number.
| Offer | Scope | Client gets | Ends when |
|---|---|---|---|
| Audit (2 weeks) | Interviews, mapping, inventory, scoring, ROI, report | Ranked use cases, ROI range, pilot proposal | Readout held, decision made |
| Pilot (4 to 6 weeks) | One use case, small user group, baseline and end measurement, training | Working workflow, evals, measured result, handover notes | Acceptance criteria met or not, decision on scaling |
| Retainer (monthly) | Monitoring, prompt and model updates, new-model checks, cost tracking, one improvement per month, support | Stable workflow, monthly report, change requests handled | Notice period given by either side |
The retainer is Vastama's monitor stage sold as a service. It is the part clients underestimate, because models, prices, data and staff change. Sell it as keeping the result alive, with a monthly report showing the same metrics you measured in the pilot.
This course does not give prices; market rates change and depend on your positioning. Choose the approach by how well the work is defined.
| Approach | How it works | Fits when | Main risk |
|---|---|---|---|
| Fixed scope | One price for named deliverables and acceptance criteria | Audit, pilot, any well-defined build | Scope creep eats your margin; control with out-of-scope list and change control |
| Time and materials | Hourly or daily rate, with an estimate and a cap or review point | Unclear integrations, exploratory work | Client fears an open bill; you carry no overrun risk but lose trust if unmanaged |
| Value-based | Fee tied to measured benefit (share of savings, or price anchored to a business outcome) | Baseline is solid and the client trusts the measurement | Disputes over measurement; benefits may come late. Agree the metric and method in the SOW first |
A common sequence: fixed scope for audit and pilot, then a monthly retainer, with value-based elements only after a measured pilot. Whatever you choose, state what is included, what is billed separately (for example licences and API usage, which belong to the client's account), and when prices are reviewed.
A statement of work is a short contract-backed description of what you will do. Its job is to prevent the argument you can already see coming. Seven parts do most of the work.
| Part | What to write | Common mistake |
|---|---|---|
| Scope | Deliverables as nouns, with quantities (number of interviews, workflows, users, languages) | Verbs like "support" or "optimise" with no object |
| Out of scope | Things a reasonable client might expect that you will not do | Leaving it empty |
| Assumptions | Conditions the plan depends on: data available by date X, a named reviewer, a plan with required features | Hiding them in the body text |
| Acceptance criteria | Measurable tests on real samples: accuracy on a sample set, time per item, review process | "To the client's satisfaction" |
| Client responsibilities | People, decisions and access the client must provide, with response times | Not saying what happens if they are late |
| Data access | Which data, which systems, read-only or not, who approves, where it is processed, retention and deletion | Asking for full access "to be safe" |
| Change control | How new requests are estimated and approved in writing | Verbal agreements |
The full skeleton is in the Deliverable section below. Have an Israeli lawyer review your template once; after that you adapt it per client.
Most pilots that fail technically work; most that fail in practice were never adopted. Plan the human side with the same discipline as the build.
| Element | What you do | Adoption signal |
|---|---|---|
| Champions | One respected person per team, given time and a direct line to you. They test early, collect complaints and teach peers. | Champion keeps using it after week 2 |
| Training | Short role-based sessions on the team's own tasks, in their language, followed by a one-page guide and office hours | Tasks per user per week rising |
| Communications | Owner announces why, what changes, what does not, and how people can raise concerns. Keep a short FAQ in Hebrew and Russian. | Fewer rumours; questions arrive through the agreed channel |
| Adoption metrics | Weekly active users, tasks completed, share of outputs accepted without edit, time per task vs baseline | Reviewed at weeks 2, 4 and 6 of the pilot |
| Feedback loop | Log errors and requests; fix the top item each week and say so | Complaints shift from "it is wrong" to "can it also do X" |
Objections are information. Treat each as a request for evidence, not a challenge to answer cleverly.
| Objection | What is behind it | Response | Evidence to bring |
|---|---|---|---|
| "It costs too much" | Fear of paying for nothing, unclear value | Start with the fixed-scope audit; show the low case; set a stop gate in the pilot | Your ROI sheet with baseline and assumptions |
| "What about our data and privacy?" | Customer lists, prices, employee data leaving the company | Classify data first; use the least data needed; choose the plan by its current terms; no personal data in the pilot unless approved | Data inventory, current terms and Trust Center pages with the date you checked, your governance work from Module 10 |
| "AI makes mistakes" | Past bad experience, or fear of blame | Agreed: so a person reviews, and we measure accuracy on your own samples against the human error rate you have today | Acceptance criteria, a sample test run on their documents |
| "It will take our jobs" | Staff and owner worries; resistance from the people you need | We change tasks, not roles; say where freed time goes; involve staff in choosing what to automate. Never promise either "no change" or "fewer people" | Champion programme, task-level maps showing the dull work being removed |
Goal: run the full analysis chain of an audit on a fictional 45-person Israeli import and distribution company: interview notes, 12 scored use cases with a chart, an ROI calculator with low, base and high scenarios, and an audit report outline. All data is inline and fictional. Loaded cost, error cost and project cost are made-up inputs; the seat cost is a placeholder you must replace with the current plan page.
Setup
mkdir audit-lab && cd audit-lab
python -m venv .venv && source .venv/bin/activate
pip install pandas matplotlib
Create the four files below in the same folder. No API key is needed; this lab is analysis only.
audit_data.py (interview notes and the 12 candidate use cases)
"""Sample data for the mock audit: Negev Import & Distribution Ltd (fictional, 45 people)."""
INTERVIEWS = [
{"function": "Owner / CEO", "who": "Avi, owner",
"notes": "Wants margin visibility every Monday. Today it takes the CFO two days to assemble. "
"Worried about customer price lists leaving the company. Has used ChatGPT personally."},
{"function": "Finance", "who": "Irina, finance manager",
"notes": "About 600 supplier invoices a month, PDF and scanned, English, Chinese and Turkish. "
"Two clerks key them into the ERP. Customs documents arrive by email. "
"Chasing late payers is done by hand, in Hebrew and Russian."},
{"function": "Sales", "who": "Moshe, sales manager",
"notes": "Eight reps. Quote requests arrive by email and WhatsApp, many in Hebrew with part numbers. "
"A quote takes 25 minutes on average. Reps forget follow-ups. CRM notes are thin."},
{"function": "Operations", "who": "Dana, operations manager",
"notes": "Shipment delays and supplier confirmations are tracked in a shared spreadsheet. "
"Exceptions are found late. Demand planning is done in Excel by one person."},
{"function": "Customer service", "who": "Yulia, service lead",
"notes": "Four agents. 70 percent of questions repeat: delivery dates, stock, invoices. "
"Answers live in people's heads and old emails."},
{"function": "Marketing", "who": "Tal, marketing",
"notes": "5,000 SKUs. Descriptions exist only in English from suppliers. "
"Hebrew and Russian versions for the web shop are mostly missing."},
{"function": "HR", "who": "Shira, HR",
"notes": "Hires about 10 people a year. Reads every CV. Wants help with job posts and onboarding packs."},
{"function": "IT (outsourced)", "who": "Boris, IT contractor",
"notes": "ERP is a local Israeli system with CSV and database export, no modern API. "
"Shared drive is a mess. Microsoft 365 for email. No data policy on paper."},
]
# value, feasibility, risk: 1-5 (risk: 5 = most risky). hours = baseline hours per month today.
USE_CASES = [
# id, name, function, value, feasibility, risk, hours
("UC01", "Supplier invoice extraction and ERP pre-coding", "Finance", 5, 4, 2, 150),
("UC02", "Quote request triage and draft replies", "Sales", 5, 4, 2, 170),
("UC03", "Late-payment reminders in Hebrew and Russian", "Finance", 3, 5, 2, 25),
("UC04", "Catalogue descriptions and translation (HE/RU/EN)", "Marketing", 3, 4, 1, 60),
("UC05", "Shipment exception alerts and supplier chasers", "Operations", 4, 3, 3, 70),
("UC06", "Weekly management summary from ERP exports", "Management", 4, 3, 2, 16),
("UC07", "Service knowledge base answers for agents", "Customer service", 4, 3, 3, 90),
("UC08", "Demand forecasting", "Operations", 4, 2, 3, 40),
("UC09", "CV screening summaries", "HR", 2, 4, 4, 20),
("UC10", "Warehouse pick-path optimisation", "Operations", 3, 1, 2, 10),
("UC11", "Supplier contract review", "Legal", 3, 3, 5, 12),
("UC12", "Autonomous price changes in the ERP", "Sales", 4, 2, 5, 15),
]
score_usecases.py (weighted scoring, risk gate, chart)
import matplotlib
matplotlib.use("Agg") # no display needed
import matplotlib.pyplot as plt
import pandas as pd
from audit_data import USE_CASES
WEIGHTS = {"value": 0.45, "feasibility": 0.35, "risk": 0.20} # agree these with the client first
assert abs(sum(WEIGHTS.values()) - 1.0) < 1e-9
def build_sheet() -> pd.DataFrame:
cols = ["id", "name", "function", "value", "feasibility", "risk", "hours"]
df = pd.DataFrame(USE_CASES, columns=cols)
# risk is inverted so that a higher number is always better
df["risk_inv"] = 6 - df["risk"]
df["score"] = (
WEIGHTS["value"] * df["value"]
+ WEIGHTS["feasibility"] * df["feasibility"]
+ WEIGHTS["risk"] * df["risk_inv"]
).round(2)
# gate: risk 4-5 or feasibility below 3 is never a first pilot, whatever its score
df["pilot_ok"] = (df["risk"] <= 3) & (df["feasibility"] >= 3)
df = df.sort_values("score", ascending=False).reset_index(drop=True)
df["rank"] = df.index + 1
return df
def plot_matrix(df: pd.DataFrame, path: str = "usecase_matrix.png") -> None:
fig, ax = plt.subplots(figsize=(8, 6))
colors = df["risk"].map(lambda r: "#c8642c" if r >= 4 else "#0f7a72")
ax.scatter(df["feasibility"], df["value"], s=df["hours"] * 4 + 40, c=colors, alpha=0.75)
for _, r in df.iterrows():
ax.annotate(r["id"], (r["feasibility"], r["value"]), xytext=(6, 6), textcoords="offset points")
ax.axhline(3.5, color="grey", lw=0.8)
ax.axvline(3.5, color="grey", lw=0.8)
ax.set_xlim(0.5, 5.5)
ax.set_ylim(0.5, 5.5)
ax.set_xlabel("Feasibility (1-5)")
ax.set_ylabel("Value (1-5)")
ax.set_title("Use cases: value vs feasibility (size = baseline hours, orange = high risk)")
fig.tight_layout()
fig.savefig(path, dpi=130)
plt.close(fig)
if __name__ == "__main__":
sheet = build_sheet()
pd.set_option("display.width", 140)
pd.set_option("display.max_colwidth", 52)
print(sheet[["rank", "id", "name", "value", "feasibility", "risk", "score", "pilot_ok"]].to_string(index=False))
sheet.to_csv("usecase_scores.csv", index=False)
plot_matrix(sheet)
print("\nSaved usecase_scores.csv and usecase_matrix.png")
roi_calc.py (ROI calculator with scenarios and payback)
from dataclasses import dataclass
@dataclass
class Case:
name: str
baseline_hours: float # MEASURED hours per month on this task today
loaded_cost_hour: float # salary + employer costs + overhead, per hour (ILS)
time_saved_share: float # share of baseline hours removed at full adoption
adoption: float # share of the team actually using it
errors_per_month: float # MEASURED errors or rework items today
cost_per_error: float # average cost to fix one (ILS)
error_reduction: float # share of errors removed
revenue_lift_month: float # extra gross margin per month, 0 if you cannot defend it
seats: int # paid licences for this use case
seat_cost_month: float # PLACEHOLDER: copy from the current plan page on the day you quote
api_cost_month: float # estimate from tokens per item x items x current API pricing
maintenance_hours_month: float # your retainer time or client time
maintenance_cost_hour: float
one_off_cost: float # audit share + pilot build + training (ILS)
# Multipliers applied to the "base" case. Low = cautious, high = good adoption.
SCENARIOS = {
"low": {"time_saved_share": 0.60, "adoption": 0.70, "error_reduction": 0.50,
"revenue_lift_month": 0.0, "api_cost_month": 1.5},
"base": {"time_saved_share": 1.00, "adoption": 1.00, "error_reduction": 1.00,
"revenue_lift_month": 1.0, "api_cost_month": 1.0},
"high": {"time_saved_share": 1.25, "adoption": 1.10, "error_reduction": 1.20,
"revenue_lift_month": 1.5, "api_cost_month": 0.9},
}
def run(case: Case, scenario: str) -> dict:
m = SCENARIOS[scenario]
share = min(case.time_saved_share * m["time_saved_share"], 0.9)
adoption = min(case.adoption * m["adoption"], 1.0)
hours_saved = case.baseline_hours * share * adoption
time_value = hours_saved * case.loaded_cost_hour
err_red = min(case.error_reduction * m["error_reduction"], 0.95)
error_value = case.errors_per_month * err_red * case.cost_per_error
revenue = case.revenue_lift_month * m["revenue_lift_month"]
gross = time_value + error_value + revenue
run_cost = (case.seats * case.seat_cost_month
+ case.api_cost_month * m["api_cost_month"]
+ case.maintenance_hours_month * case.maintenance_cost_hour)
net = gross - run_cost
payback = case.one_off_cost / net if net > 0 else float("inf")
return {
"scenario": scenario,
"hours_saved": round(hours_saved, 1),
"time_value": round(time_value),
"error_value": round(error_value),
"revenue": round(revenue),
"gross_month": round(gross),
"run_cost_month": round(run_cost),
"net_month": round(net),
"payback_months": round(payback, 1) if payback != float("inf") else None,
"net_year_1": round(net * 12 - case.one_off_cost),
}
def table(case: Case):
import pandas as pd
return pd.DataFrame([run(case, s) for s in SCENARIOS]).set_index("scenario")
# Example: UC01 invoice extraction. All numbers are fictional inputs for the exercise.
UC01 = Case(
name="UC01 Supplier invoice extraction",
baseline_hours=150, loaded_cost_hour=95, time_saved_share=0.55, adoption=0.85,
errors_per_month=30, cost_per_error=180, error_reduction=0.40,
revenue_lift_month=0,
seats=3, seat_cost_month=100, api_cost_month=900,
maintenance_hours_month=6, maintenance_cost_hour=250,
one_off_cost=45000,
)
UC02 = Case(
name="UC02 Quote triage and drafts",
baseline_hours=170, loaded_cost_hour=110, time_saved_share=0.35, adoption=0.75,
errors_per_month=12, cost_per_error=400, error_reduction=0.30,
revenue_lift_month=3000,
seats=8, seat_cost_month=100, api_cost_month=600,
maintenance_hours_month=4, maintenance_cost_hour=250,
one_off_cost=40000,
)
if __name__ == "__main__":
import pandas as pd
pd.set_option("display.width", 140)
for c in (UC01, UC02):
print(f"\n{c.name} (one-off cost {c.one_off_cost} ILS)")
print(table(c).T.to_string())
report_outline.py (assembles the audit report outline)
import pandas as pd
from audit_data import INTERVIEWS
from score_usecases import build_sheet, WEIGHTS
from roi_calc import UC01, UC02, run
def outline() -> str:
sheet = build_sheet()
shortlist = sheet[sheet["pilot_ok"]].head(3)
lines = ["# AI readiness audit: Negev Import & Distribution Ltd", ""]
lines += ["## 1. Executive summary (one page)",
"- Maturity today: step 1 of 5, ad hoc chat. Target in 12 months: step 3, connected data.",
f"- Recommended pilot: {shortlist.iloc[0]['name']}",
"- Decision requested: approve a 4-6 week pilot", ""]
lines += ["## 2. What we did",
f"- {len(INTERVIEWS)} stakeholder interviews ({', '.join(i['function'] for i in INTERVIEWS)})",
"- Current-state swimlane for invoice-to-ERP and quote-to-order",
"- Data and systems inventory, maturity scoring", ""]
lines += ["## 3. Maturity scoring (table: 5-step ladder, current step, evidence)", ""]
lines += ["## 4. Use-case ranking",
f"- Weights: {WEIGHTS}", "- Table of 12 use cases, 2x2 chart, gate: risk 4-5 or feasibility under 3 is never a first pilot"]
for _, r in shortlist.iterrows():
lines.append(f"- Shortlist: {r['id']} {r['name']} (score {r['score']})")
lines.append("")
lines += ["## 5. ROI for the shortlist (low / base / high, baseline measured, assumptions listed)"]
for c in (UC01, UC02):
b, lo = run(c, "base"), run(c, "low")
lines.append(f"- {c.name}: base net {b['net_month']} ILS/month, payback {b['payback_months']} months "
f"(low case {lo['payback_months']} months)")
lines.append("")
lines += ["## 6. Risks, privacy and governance (data classes, who sees what, human review points)", "",
"## 7. Roadmap: pilot (4-6 weeks), then retainer (monitor and improve)", "",
"## 8. Change plan: champions, training, communications, adoption metrics", "",
"## 9. Next steps and SOW reference", "",
"## Appendix: interview notes, scoring sheet, ROI workbook, data inventory"]
return "\n".join(lines)
if __name__ == "__main__":
text = outline()
print(text)
with open("audit_report_outline.md", "w", encoding="utf-8") as f:
f.write(text)
Run
python score_usecases.py # prints ranking, writes usecase_scores.csv and usecase_matrix.png
python roi_calc.py # prints low/base/high tables for UC01 and UC02
python report_outline.py # prints and writes audit_report_outline.md
Steps
audit_data.py. For each one, write three lines in your own words: the pain, the data involved, the constraint. Add a ninth interview of your own (the warehouse manager) and add two use cases that come from it.usecase_matrix.png. Decide which use cases are "pilot now", "prepare first" and "park", and write one sentence for each of the top five.Case for UC03 (late-payment reminders) using baseline 25 hours a month. Does it pay back? Explain in two lines why a high feasibility score does not make it the first pilot.roi_calc.py.Check yourself: every number in your outline must trace to a file or a sample you can show. If it cannot, mark it "estimate".
Four reusable documents. Build them from the lab, then clean them so you could send them to a real client tomorrow.
A two-page document with: an opening script (purpose, confidentiality, how notes are used), eight function sections from 11.2 with 6 to 8 questions each, the four closing questions, and a one-page pre-interview data request (org chart, process documents, system list, a sample of each key document). Keep Hebrew and Russian versions of the opening script.
A spreadsheet or the CSV from the lab with columns: id, use case, function, owner, value, feasibility, risk, weights, score, gate result, baseline hours, baseline source, notes. Include a "scale anchors" tab with the table from 11.5 so scorers rate consistently.
roi_calc.py from the lab, with these upgrades: read cases from a CSV, write the results to a spreadsheet, add a column for the source and date of every input, and add a line that prints "BASELINE NOT MEASURED" when an input is flagged as an estimate.
The full skeleton. Replace square brackets; delete what does not apply; have a lawyer review the legal clauses.
STATEMENT OF WORK
Vastama Ltd (company no. 515052702) and [Client legal name, company no.]
SOW number: [ ] Date: [ ] Version: [ ]
1. PURPOSE AND BACKGROUND
[Two or three sentences: the client's goal, the problem, and how this
engagement fits in the sequence audit -> pilot -> retainer.]
2. SCOPE
2.1 Deliverables (nouns, with quantities)
D1 [e.g. 8 stakeholder interviews, notes in English]
D2 [e.g. 2 current-state process maps]
D3 [e.g. Data and systems inventory]
D4 [e.g. Scored list of up to 15 use cases]
D5 [e.g. ROI model for the top 3, low/base/high]
D6 [e.g. Audit report and one readout meeting]
2.2 Working method and timeline
Start date [ ]. Milestones: [M1 date], [M2 date], [readout date].
2.3 Languages of deliverables: [English / Hebrew / Russian]
3. OUT OF SCOPE
- [Building or deploying any workflow (covered by a separate pilot SOW)]
- [Connection to production systems or write access]
- [Training of all staff]
- [Legal advice or regulatory certification]
- [Work in languages or departments not listed above]
4. ASSUMPTIONS
- [Sponsor available for a 45-minute weekly check-in]
- [Interviewees available in the agreed week]
- [Data samples supplied by date X, in the formats listed in Annex A]
- [Client holds, or will obtain, the Claude plan needed for the pilot]
- [Third-party prices and terms are as published on the date of this SOW]
If an assumption proves false, timeline and fees are adjusted through
change control (section 11).
5. ACCEPTANCE CRITERIA
- Each deliverable is accepted when it matches the description in 2.1
and the client has had [5] working days to review it.
- [For a pilot: accuracy of at least X percent on the agreed sample set of N items,
measured against the human reviewer, and median time per item below Y minutes.]
- Comments are consolidated by the sponsor; one revision round is included.
- Silence after the review period counts as acceptance.
6. CLIENT RESPONSIBILITIES
- Name a sponsor with authority to decide, and a day-to-day contact.
- Provide people, documents and system access listed in Annex A within [2] working days of request.
- Review deliverables within the review period.
- Ensure it has the right to share the data it provides.
- Delays by the client move the timeline day for day.
7. DATA ACCESS AND SECURITY
7.1 Data the Supplier may access: [list systems, read-only or not].
7.2 Data classes excluded unless approved in writing: [personal data of customers,
employee records, payment card data, ...].
7.3 Access method and accounts: [client-issued accounts, least privilege, revoked at end].
7.4 Where data is processed and which AI services are used: [list], under the
client's own account and its current commercial terms.
7.5 Retention and deletion: working copies deleted within [ ] days of acceptance.
7.6 Incidents: the Supplier informs the client without delay and within [ ] hours of discovery.
8. TIMELINE AND MILESTONES
[Table: milestone, date, dependency, owner.]
9. FEES AND PAYMENT
9.1 Pricing approach: [fixed scope / time and materials with cap / value-based].
9.2 Fee: [amount and currency, VAT treatment].
9.3 Payment schedule: [on signature / on milestone / on acceptance], payment terms [ ] days.
9.4 Pass-through costs (licences, API usage) are paid by the client directly to the provider.
9.5 Expenses: [included / billed at cost with prior approval].
10. RETAINER OPTION (only in a pilot SOW)
Monitoring, improvements and support after acceptance: scope [ ], monthly report,
notice period [ ], price review date [ ].
11. CHANGE CONTROL
Any change to scope, timeline or fees is requested in writing, estimated by the
Supplier within [3] working days, and takes effect only when both parties sign.
12. INTELLECTUAL PROPERTY
[Client owns its data and the deliverables made for it; Supplier keeps its tools,
templates and know-how; licence terms for reuse.]
13. CONFIDENTIALITY AND PRIVACY
[Mutual confidentiality for [ ] years; compliance with applicable Israeli privacy law;
data processing terms if personal data is processed.]
14. WARRANTIES AND LIMITS OF LIABILITY
[AI outputs may contain errors; the human review step in section 5 is part of the
design. Liability cap and exclusions per master agreement, reviewed by counsel.]
15. TERM AND TERMINATION
[Start, end, termination for convenience with notice, what is delivered and paid on early end.]
16. CONTACTS AND GOVERNANCE
Supplier: [name, role, email, phone] Client: [name, role, email, phone]
Check-ins: [weekly, 30 minutes] Escalation: [role at each side]
17. SIGNATURES
For Vastama Ltd: ____________ Name/Title: ________ Date: ______
For [Client]: ____________ Name/Title: ________ Date: ______
ANNEX A Data, systems and people requested
ANNEX B Interview schedule or pilot plan
ANNEX C ROI assumptions and baseline measurements (pilot SOW)