{"id":"data2-crosstab-channel-by-month-revenue","audience":"marketing","category":"spreadsheets","track":"data","technique":"format","level":"intermediate","title":"Build a channel-by-month revenue table with totals","free":false,"task":"Your marketing lead wants a cross-tab of Q1 revenue by channel and month. Make one markdown table with a row for each channel, columns Jan, Feb, Mar and Total, and a final Total row, using dollars with commas, $0 where there were no sales. Leave out refunded rows, plain text apart from the table, under 80 words, and nothing before or after the table.","materialLabel":"Order lines (attached to your prompt automatically)","material":"Q1 orders by channel (Bluewater Candles)\n\nChannel | Month | Amount | Status\nSearch | Jan | 1,200 | paid\nSearch | Jan | 800 | paid\nSearch | Feb | 1,500 | paid\nSearch | Mar | 900 | paid\nSearch | Mar | 1,100 | paid\nEmail | Jan | 600 | paid\nEmail | Feb | 700 | paid\nEmail | Feb | 300 | paid\nEmail | Mar | 1,000 | paid\nEmail | Mar | 400 | refunded\nSocial | Jan | 400 | paid\nSocial | Mar | 500 | paid\nSocial | Mar | 700 | paid\n\nNotes:\n- Amounts are in US dollars.\n- Rows are in the order exported, not sorted.\n- The marketing lead pastes this table into a deck.","rules":[{"type":"plainText"},{"type":"maxWords","max":80}],"mistakes":[{"title":"Counting the refunded row","why":"The AI includes the $400 refunded Email order in March.","fix":"Add: \"Skip rows with status refunded.\"","checks":["r0"]},{"title":"Dropping empty cells","why":"The AI leaves Social February blank or inserts a dash.","fix":"Add: \"Write $0 where there were no sales.\"","checks":["r1"]},{"title":"Wrapping the table in chatter","why":"The AI adds an intro and commentary about trends.","fix":"Add: \"Output only the table, with a final Total row.\"","checks":["r2"]},{"title":"Leaving the format to chance","why":"The AI picks its own length and layout unless told the exact shape.","fix":"Add: \"Plain text, no bold or headings.\"","checks":["plainText"]},{"title":"Trusting the AI to count words","why":"AI is bad at counting. Ask for a total word limit and it often lands over it.","fix":"Cap each part instead, for example \"each line under 15 words.\"","checks":["maxWords"]}],"promptHints":[{"label":"Names the columns","patterns":["channel ?\\||columns?","total"]},{"label":"Excludes refunds","patterns":["refund"]},{"label":"Handles empty cells","patterns":["\\$0","no sales","blank"]},{"label":"Asks for totals","patterns":["total row","final row"]},{"label":"Cuts the chatter","patterns":["only the table","no intro"]}],"hint":"Cross-tabs need the exclusions, the empty-cell rule and a statement that nothing else may appear.","mission":"Make a pivot of revenue by channel and month.","musts":["One cross-tab with totals","Skip refunded rows","$0 for empty cells"],"rubricLabels":["The channel rows show Search $2,000 / $1,500 / $2,000 = $5,500; Email $600 / $1,000 / $1,000 = $2,600 (the $400 refunded row left out); Social $400 / $0 / $1,200 = $1,600","The final Total row shows Jan $3,000, Feb $2,500, Mar $4,200 and a grand total of $9,700","The output is a single markdown table with columns Channel, Jan, Feb, Mar, Total, uses $ with commas and $0 for Social in February, and has no text before or after it"]}