Step 1: Create the revenue bar chart
The numbers are verified. Now make them visible. Naledi is not going to read a SQL output table — she needs charts that answer her questions.
Open materials/analysis-spec.md Section 3. The first chart spec calls for a bar chart of net revenue by channel. Direct Claude:
Create a bar chart of net revenue by channel using matplotlib. Use the verified revenue figures (excluding refunds). Title the chart with the question it answers — not "Figure 1." Label the y-axis in ZAR. Label each bar with its value.
Claude will produce a chart. Before you move on, look at what it actually generated.
Step 2: Review and fix the defaults
Here is something worth knowing about AI and chart output: AI generates charts that run without errors but communicate poorly. Default matplotlib styling produces truncated y-axes, generic titles like "Figure 1" or "Bar Chart," tiny axis labels, overlapping text, and the same blue for every bar. The chart is technically correct. It is not useful.
Look at Claude's chart and check three things. Does the title state the business question the chart answers? Are the axes labeled with units — ZAR on the y-axis, channel names on the x-axis? Can someone who has never seen the data understand what the chart says?
If any of those fail, direct Claude to fix the specific issue:
The title should describe what the chart answers, not just label the data. Change "Bar Chart" to something like "Which channel brings in the most revenue?" Add ZAR to the y-axis label. Increase the font sizes so the labels are readable. Remove the top and right border lines.
This is the review habit for every chart from here forward: does the chart communicate, or does it just display data?
Step 3: Create the profit margin chart
The second chart spec calls for a grouped bar chart showing profit margin by channel and product type. This is the chart that reveals what the raw revenue numbers hide — retail brings in the most revenue but keeps the smallest margin after retailer commissions.
Direct Claude:
Create a grouped bar chart of profit margin by channel and product type. Group by product type on the x-axis, with bars for each channel side by side. Label the y-axis as percentage. Add a legend for the channels. Use a descriptive title.
Apply the same checks from Step 2: does the title state what the chart answers? Are the grouped bars distinguishable — different colors with a readable legend? Are the percentage labels visible? If the chart is cluttered because six product types times three channels makes eighteen bars, that is a real communication problem worth solving. Consider whether Claude should sort by product type or aggregate differently.
Step 4: Create the revenue per workshop-week chart
This is the chart that will change how Naledi thinks about her product mix. The numbers from Unit 3 showed that shelving generates ZAR 8,622 per workshop-week while dining tables generate ZAR 6,880 — despite dining tables selling for more per piece.
Direct Claude:
Create a bar chart of revenue per workshop-week by product type, sorted from highest to lowest. Label the y-axis in ZAR per week. Add a descriptive title — this chart answers which products use workshop capacity most efficiently.
Apply the same review checks from Step 2 -- title, axis labels, readability. This chart should make the ordering immediately obvious. Shelving at the top, dining tables lower. If Claude sorts alphabetically instead of by value, direct it to sort descending. The visual ordering is the insight.
Step 5: Create the monthly trend line chart
The fourth chart shows Naledi's monthly revenue trend over twelve months. The spec calls for a line chart.
Direct Claude:
Create a line chart of monthly net revenue (excluding refunds) over the twelve-month period. Format the x-axis as month names. Label the y-axis in ZAR. Title it with the question: what is the monthly revenue trend?
Apply the same review checks from Step 2. Check that the time axis reads correctly — month names in order, not date strings that overlap. Check that the y-axis starts at zero unless there is a good reason it should not. A truncated y-axis exaggerates small changes and can make a flat trend look dramatic.
Step 6: Review the four charts together
Pull all four charts up in the notebook. Look at them as a set, not individually.
Check for consistency: do the charts use the same color palette or do they clash? Are the font sizes similar across all four? If one chart uses teal for retail and another uses teal for online, that is a communication problem — a reader will assume the same color means the same thing.
The four charts together should tell Naledi's story. Revenue by channel shows where the money comes in. Profit margin shows what each channel actually keeps. Revenue per workshop-week shows which products use her team's time best. Monthly trend shows whether things are improving. Could Naledi look at these four charts and understand her business without reading a table of numbers?
Step 7: Confirm chart accuracy against verified metrics
One final pass. Each chart should use the verified numbers from Unit 3 — not a recomputation that might silently include refunds or use a different aggregation. Check:
- Revenue bar chart totals match: retail ZAR 5,326,500, commission ZAR 3,761,500, online ZAR 2,486,000
- Profit margin percentages match: retail 28.2%, commission 65.5%, online 59.2%
- Revenue per workshop-week values match: shelving ZAR 8,622, dining tables ZAR 6,880
If any chart shows different numbers, the chart is pulling from a different computation. Go back and direct Claude to use the verified query outputs.
Check: Each chart should have a descriptive title (not "Figure 1"), labelled axes with units, and use the correct metric values verified in Unit 3.