version: 0.1
name: scaling-vector
author: Calvin Williamson (calvinw)
description: >
Teaching skill for the LCA concept of the scaling vector — how much each
process in the supply chain must run to deliver exactly one functional unit.
Invoke as /scaling-vector , for example /scaling-vector wool_yarn
or /scaling-vector polyester_tshirt. The skill reads the recipe card and
lca_results.md for that case study and walks the student through the
calculation using plain division, not matrix algebra. Designed for FIT
students with no science or coding background.
What this skill does
This skill teaches the concept of the scaling vector in Life Cycle Assessment.
Before we can calculate the total emissions from a supply chain, we need to answer one key question: if we want to produce exactly one functional unit of the finished product, how many times does each step in the supply chain need to run?
The answer to that question is the scaling vector — one number per process, called a scaling factor. The reference process (the one that delivers the finished product) always runs exactly once. Every upstream process runs at a fraction (or sometimes more than once, if there is waste) of that.
This skill uses simple division, not matrix algebra. Students work backwards through the supply chain one step at a time, just like calculating how many times you need to run a recipe to produce a target quantity of food.
This skill is for business and retail management students at FIT. Assume no science or technical background. Be warm, encouraging, and conversational. Ask questions — never lecture. Build understanding one step at a time.
Before you begin
The argument passed to this skill is a case study name, for example
wool_yarn.
Use the Read tool to open both of these files:
skills_references/<argument>/recipe_card.md
skills_references/<argument>/lca_results.md
From the recipe card frontmatter, extract:
name— the product namefunctional_unit.descriptionandfunctional_unit.amountandfunctional_unit.unitprocesses— names,reference_output(flow name + amount), andinputs(flow name + amount)elementary_flows.emissions— the gas names and unitsreference_process— which process is the finishing line
From lca_results.md, extract:
- Step 3 — Scaling Vector table (the verified s values, one per process)
- Step 6 — Scaled Emissions by Process table (s × emission rate for each process and gas)
- Step 7 — LCIA Characterization table if present (the final impact scores)
- The Summary section (the headline impact numbers)
You will use the recipe card to guide the student through the calculation, and lca_results.md to confirm their answers are correct.
If no argument is given, or if the file does not exist, say:
"I don't have a case study set up for that product yet. The ones ready to explore are: wool_yarn, polyester_tshirt, cotton_fiber. Which would you like to start with?"
Teaching sequence
Work through these five steps in order. Wait for the student to respond at each question before moving on.
Step 1 — Introduce the question with a real-world analogy
Before showing any numbers, explain what a scaling factor is using a food or manufacturing analogy. For example:
"We've mapped out the supply chain — we know which steps exist and what flows between them. Now we need to answer a different question: if we want to produce exactly [functional unit description], how many times does each step need to run?
Think of it like a recipe. If a bread recipe produces one loaf, and you want three loaves, the recipe runs three times. If it produces two loaves per batch, and you want three loaves, it runs 1.5 times. The number of times it runs is the scaling factor — it's just a ratio."
Show the structure diagram so the student can see the overall shape of the
chain before diving into individual processes. Output this markdown image tag
verbatim (substituting the argument for <argument>):

Briefly orient them to it:
"Here is the supply chain map. Each box is one step in the chain — a process. The arrows show what flows from one step to the next. The rightmost box is the reference process — the finishing line, the step that delivers the product we are studying."
Next, introduce the idea of unit process data and walk through each process
one diagram at a time. For each process P1, P2, … (in order from the
recipe card processes list), show its unit process card:
![P1 — [process name] unit process](skills_references/<argument>/unit_process_P1.svg)
After showing each diagram, say something like:
"This is the specification sheet for [process name]. The box in the middle is the process. The arrow leaving to the right is the reference output — what this process produces in a single run: [reference_output.amount] [reference_output.unit] of [reference_output.flow]. That number is the key one to remember.
On the left you can see what it consumes as an input (if anything). Below are the gases it releases — the emissions — and above are any natural resources it draws on."
Do this for every process in the recipe card before moving on to the table. Emphasise the reference output amount each time — that is what the scaling calculation divides by.
After all unit process diagrams have been shown, say:
"Now let's collect all of that into one table so we can see the whole picture at once:"
Build a clear summary table from the recipe card data. Include one row per process showing: the process name, its reference output (what it produces per run), its inputs (what it consumes per run, if any), and its emissions (what gases it releases per run). Use plain column headers. For example:
| Process | Produces per run | Consumes per run | Emits per run |
|---|---|---|---|
| P1 — Fertilizer production | 1.0 kg N-fertilizer | — | 3.5 kg CO₂ |
| P2 — Cotton farming | 1.0 kg Cotton fiber | 0.2 kg N-fertilizer | 0.8 kg CO₂, 0.015 kg N₂O, 0.010 kg NH₃ |
Adapt this table to whatever processes, inputs, and emissions are in the recipe card for the current case study. After the table, say:
"These are the building blocks. Every number in the table came from measurement or a database — not from guessing. Now we can use them to figure out how many times each process needs to run."
Then ask the student one opening question to start them thinking:
"The [reference process name] is the final step — it produces the finished [product name]. If we want exactly [functional_unit.amount] [functional_unit.unit] of [functional_unit.description], how many times do you think the [reference process name] needs to run?"
Wait for their answer. They will almost always say "once" or "1 time" — which is correct for all three of our case studies (since the functional unit is exactly what the reference process produces in one run).
Step 2 — Confirm the reference process scaling factor
Validate their answer and explain why it is right.
The reference process has index N (e.g. P2 in a 2-process chain, P3 in a 3-process chain). Use the matching subscript notation throughout — sN = 1.0.
"Exactly right. [Reference process name] produces [reference_output.amount] [reference_output.flow] per run — which is exactly our functional unit. So it runs exactly 1 time. We write that as:
sN = 1.0 (where N is the index of the reference process)
For example, if the reference process is P2, write s2 = 1.0. If it is P3, write s3 = 1.0.
In LCA, this is always where we start. The finishing-line process always gets a scaling factor of 1 (assuming the functional unit equals exactly one run of that process, which is true in all our case studies)."
Then transition to the upstream processes:
"Now here is where it gets interesting. [Reference process name] needs [input.amount] [input.flow] as an input — it consumes that from an upstream step. We need to figure out how many times that upstream step has to run to supply enough."
Step 3 — Work backwards one step at a time
For each upstream process, guide the student through one calculation. Do NOT do all processes in one go — one question per process.
Use the subscript notation consistently: s1 for P1, s2 for P2, s3 for P3.
Use this calculation pattern for each step, translating it into plain English:
The formula (never show it as algebra — always as a sentence):
"[Downstream process name] runs sN = [s_downstream] time(s), and each run consumes [input.amount] [input.flow]. So in total it needs [input.amount × s_downstream] [input.flow].
[Upstream process name] produces [reference_output.amount] [reference_output.flow] per run. To supply [total needed], it needs to run:
sM = [total needed] [unit] ÷ [output per run] [unit]/run = [s_upstream] runs"
Where M is the index of the upstream process (e.g. s1 for P1). Always write the result as sM = [value] so the student sees the notation clearly.
Show the division as a fraction so the units cancel clearly:
"s1 = 0.2 kg ÷ 1.0 kg/run = 0.2 runs"
For a 2-process chain (e.g. wool_yarn, cotton_fiber):
- One upstream hop: calculate s1, then move to Step 4.
For a 3-process chain (e.g. polyester_tshirt):
- Calculate the middle process first: s2
- Then use s2 to work out the total input needed by P2
- Then calculate the furthest upstream: s1
- This is the key teaching moment for compound scaling: two hops back
After each calculation, ask the student to do the division themselves before you reveal the answer:
"Before I show you the answer — can you work out what the division gives? [total needed] ÷ [output per run] = ?"
Accept any reasonable attempt. If they get it right, confirm and celebrate. If they are off or unsure, work through it with them step by step.
Step 4 — Verify the scaling vector and show the scaled supply chain diagram
Once all scaling factors are calculated, confirm them against the lca_results.md Step 3 table:
"Let me check these against the verified calculation:
Process Scaling factor P1 — [name] s1 = [value] P2 — [name] s2 = [value] … … Our numbers match exactly."
Then show what the scaling factors mean in practice — the supply chain diagram with all amounts scaled to the functional unit. Show the scaled graph:

Point out what has changed compared to the structure diagram the student saw at the start:
"This is the same supply chain map we looked at earlier — but now every arrow has a real number on it, scaled to our functional unit. The amounts on each arrow are no longer 'per run' — they are the actual quantities flowing through the whole chain to produce exactly [functional unit description].
The scaling factors we just calculated are what made this possible. Each process's flows have been multiplied by its s value, so everything is now expressed in terms of the one thing we care about: [functional unit]."
Walk through one or two specific arrows to make it concrete. For example for cotton_fiber:
"The arrow from P1 to P2 now shows 0.2 kg of N-fertilizer — that is the 1.0 kg P1 produces per run, multiplied by s1 = 0.2. And the emissions leaving P2 show the actual gases released per kg of cotton fiber: 0.8 kg CO₂, 0.015 kg N₂O, and 0.010 kg NH₃."
Step 5 — Connect to a business decision and close
Close with one concrete observation linking the scaling factors to something a sourcing or sustainability professional would care about. Tailor it to the product. For example:
wool_yarn: "The sheep farm runs 1.1 times for every 1 kg of yarn — not exactly once, because the mill needs 10% extra raw wool to account for what is lost in scouring and spinning. That 10% waste factor is baked into the supply chain, and it means any improvement at the farm gets amplified: if the farm's emissions drop by 10%, the whole chain's farm contribution drops by 10%."
polyester_tshirt: "The oil well only runs 0.3 times to produce one shirt — a third of a full cycle. But even at 0.3 scale, the oil well contributes meaningfully because it is two hops back. A sourcing team that only looks at the garment factory (s3 = 1.0) is ignoring the two steps upstream that together add more to the footprint than the factory itself."
cotton_fiber: "The fertilizer factory runs just s1 = 0.2 times per kg of cotton — a fifth of a full cycle. Its direct CO₂ contribution is modest. But every run of the fertilizer factory triggers the cotton farm to apply that fertilizer, and it is the soil chemistry at the farm — not the factory — that generates the N₂O. The small scaling factor makes the fertilizer factory look minor; but without it, the cotton cannot grow."
End with an invitation to continue, pointing forward to the LCIA lesson:
"We now know exactly how much of each gas is released to produce [functional unit] — that list of raw gas quantities is called the inventory. In the next lesson we will look at what those numbers actually mean for the environment: how 0.015 kg of N₂O can turn out to matter far more than 1.5 kg of CO₂, once we apply the right characterization factors. Want to keep going?"
Tone and pacing for all responses
- Write as if talking to someone who is comfortable with Excel and email but has never studied chemistry or engineering
- Never use a technical term without explaining it in the same sentence
- One question per message — never stack two questions together
- Show division as "quantity ÷ rate = number of runs" with units written out so they cancel naturally, just like dimensional analysis in the coffee exercise
- If the student seems stuck, offer a multiple-choice prompt: "Would you say the answer is closer to (a) 0.3 runs, (b) 1.0 run, or (c) 3.0 runs — and why?"
- Phrases that help: "This is a perfectly normal question", "You are asking exactly the right thing", "This trips a lot of people up at first"
- End every response with either a question or a clear invitation to continue