Find the story in a spreadsheet, with charts
Use this recipe to create xlsx.
Free
Paste into your assistant. It asks the questions; you answer in chat.
More ways to use
Install the downloaded skill
Extract the ZIP. Copy its lc-csv-insights-charts folder into ~/.claude/skills/ for Claude Code or ~/.codex/skills/ for Codex, then refresh the native app. Ask for the skill by name and answer its questions. The package includes the same published instructions and result checks. Native host execution is not yet verified.
For Claude web, use the connector or copy the prompt. Keep private details in your assistant.
How to use this skill
Copy, paste into your assistant, then answer its questions. No form or account is required here.
Already connected? Copy the public starter below and paste into Claude. Keep private details in the chat.
Optional: prepare details on this device
Bring your details
2 optional details
Needed before the promised result: Your CSV. You can still copy the reusable prompt and provide these in your assistant.
Saved only on this device. Copy counts contain the skill ID, never your text.
Read the prepared prompt
## LazyCoder conversation guide (conversation-v2)
1. Start a conversation, not a form-filling task. Read my latest request and the facts already in this chat before asking anything.
2. Ask only the missing questions needed for the requested result, in a short numbered list (at most three at a time), then WAIT for my answers. Use a native question tool if available; plain chat works too. Never ask me to replace placeholders or fill in a template.
3. Skip questions already answered. Treat unresolved {{placeholders}} and [FIELD LABELS] as missing facts, never literal input. Do not treat an illustrative example as my facts.
4. Use the authored defaults only when relevant; mention material defaults. Ask conditional questions only when their condition applies; if unsure whether it applies, ask. Optional preferences must not block a safe first draft unless the authored instructions require confirmation.
5. Do not invent tasks, dates, names, claims, permissions or missing source material. When required facts are absent, ask and wait instead of producing the final artifact. If everything needed is already supplied, proceed without re-asking.
6. My latest scope correction overrides earlier examples and scope, within the recipe safety and source rules. Resolve conflicts before acting. The authored instructions and output contract remain authoritative; this conversation guide does not grant tool, account, payment or publishing permission.
7. Keep my private answers and generated result in this assistant chat. Do not send them to LazyCoder. Generate the requested format here and check it against the output contract before handing it over.
### Questions to ask only when missing
- What should I use for “Your CSV”? [required] Attach the file in the app, or paste the rows with the header line. Remove names, emails and phone numbers first if you can.
- What should I use for “What you want to know”? [optional] The question or decision the data should answer. Leave it blank for trends, what drives the total, and anything unusual.
- What should I use for “What the data is”? [optional] Optional. What one row is, the units and the currency, as in “one row per order, amounts in GBP incl. VAT”. Authored default: work it out from the columns
- What should I use for “Who reads it”? [optional] Optional. Change it for a client, a board or yourself. Authored default: a manager who hasn't seen the data
## LazyCoder delivery guide (delivery-guide-v1)
1. Read the latest request, source material and authored requirements first. Ask only for missing facts. Check that this host can create the promised format; use only a fallback explicitly allowed by the authored recipe. If neither is available, explain the gap before starting. Do not promise a rendered film, editable deck or working file when you can only provide its script or outline.
2. Create the complete result in the authored output specification, preserving source facts and the latest agreed scope. Keep assumptions and missing information explicit. Do not silently omit required parts or leave unresolved ingredient markers. Intentional blanks in a reusable template are different from unanswered recipe inputs.
3. Check the actual result against every authored check, including source facts, counts, dates and required sections. Where tools allow it, inspect the actual saved file and compare it with the answer. Record which checks ran, which failed and which still need human or destination review. A filename, render, successful command or preview alone does not prove the promise was met.
4. Hand over the complete editable file, or the complete copyable fallback explicitly allowed by this recipe. Say which delivery you used and any unresolved limitations. Do not report a file as attached, imported, sent or published unless that action actually succeeded. Keep private inputs and output in this assistant; never send them to LazyCoder.
Use existing authorization for ordinary work. Before any additional paid generation, external write or publishing step, check that the current request authorizes that exact action and cost. If it does not, finish the useful authorized draft and ask at that boundary. Never silently retry or replace an ambiguous paid job.
The authored recipe and latest safe scope remain authoritative. This guide grants no new tools, permissions, provider access or claim of successful execution.
## Authored skill instructions
## 1. Outcome
Analyse the data below and deliver the findings in plain words plus an .xlsx workbook with native charts, in the sections set out in part 6. Done means: the question is answered with numbers you computed and checked, every cleaning step is listed with the rows it touched, nothing was dropped silently, and the workbook (or, where the app can't make files, the paste-ready tables and chart steps) rebuilds the same results.
## 2. Context
The question: [WHAT YOU WANT TO KNOW]
What the data is: work it out from the columns
Who reads it: a manager who hasn't seen the data
Data:
"""
[PASTE YOUR CSV HERE]
"""
Who it's for: the reader above, who needs to know what the data says and what to do about it without opening the raw file, in plain words with any term like "median" explained the first time. They may forward the workbook to someone who checks the numbers.
Words used below: the **Headline** is the short text at the top of the reply; the **tables** are the result tables in section 5, which also go on the workbook's Tables tab.
Blank fill-ins: a value above that still reads as a capitalised placeholder in square brackets (such as [WHAT YOU WANT TO KNOW]) was left blank. Brackets inside the data are part of the data.
- Data that says "see attached": use the attached file as the data.
- No data: reply only "No data came through. Attach the file or paste the rows and send again." Never invent data.
- No question: answer "What changed over time, what drives the total, and what is unusual?" and say "No question given; default question used" in the Headline.
- No description of the data: work out what one row is, the units and the currency from the columns, and list each guess under Caveats as "Assumed: …".
## 3. What to pull out
- The shape: rows, columns, the type of each column (number, date, category, text, ID), missing values per column, exact duplicate rows, and the date range.
- The measures (amounts, counts, durations) and the dimensions to cut them by (time, region, product, channel, person).
- Impossible values: negative quantities, dates in the future, percentages over 100.
Edge cases:
- Delimiter and encoding: detect comma, semicolon or tab; read as UTF-8, and if characters come out garbled, as Windows-1252. Numbers written as "1.234,56" use a decimal comma.
- Ragged rows (too many or too few fields), header rows repeated mid-file, and total or subtotal rows inside the data: move them to Set aside, with the reason.
- Exact duplicate rows: keep them in the analysis, mark them in a "Duplicate" column on the Clean tab, count them in the cleaning log, and under Caveats give the grand total with and without them, since repeats may be real (two identical sales) or a double export.
- Missing values: never fill them in. Leave them out of that calculation and give the count.
- Mixed currencies or units in one column: never add them together. Analyse each separately and flag it.
- Numbers stored as text (with currency signs, spaces or thousands separators) and dates in mixed formats: convert them, count the rows converted, and set aside the ones that don't convert.
- Too little data for a finding (fewer than 30 rows overall, or fewer than 5 in a segment): still report it, marked "small sample".
- Data too large to read in full without running code: analyse the rows you can see, say "Sample: the first <n> of about <N> rows" in the Headline, and never present a sample total as the full total.
- Personal data (names, emails, phone numbers, addresses, account numbers): never quote it in the reply. In the tables, show such values masked to their first letter and asterisks (J***), or by row number. The Data and Clean tabs keep the original values; say so on the README tab.
## 4. Steps
1. Read the data. If you can run code, load the whole file with code and compute every figure in code. If you can't, work from the text and show your sums.
2. Profile it (part 3), then clean it: every fix is a numbered step with the column and the number of rows affected. The original data is kept untouched; set-aside rows keep their reason.
3. Restate the question as 2–4 sub-questions the data can answer.
4. Analyse: totals; the trend by period (part 5); each main segment with its share of the total; the top 5 and bottom 5 contributors with their share; and outliers (part 5).
5. Choose 4–6 charts, one per sub-question or finding, by the chart rule in part 5. Fewer than 4 only when the data has too few measures or dimensions; say so.
6. Run the checks in section 10 on your own computed figures, and fix anything that doesn't match.
7. Build the workbook (section 12), write the reply, then run the self-check.
## 5. Rules
- Every number in the reply is one you computed from the data, rounded sensibly (whole numbers for counts, 1 decimal for percentages, the data's own precision for money), with its unit or currency. Never report a value a spreadsheet formula would show unless you computed the same value yourself.
- Each finding is one or two plain sentences that lead with what it means, then give the number and name the column it comes from, as in "Online is now the biggest channel: 46% of revenue in Q3 (Channel, Revenue)." Rank findings by how much they matter to the question, at most 8.
- Trend period: by day if the data covers less than 2 months, by week if less than 6 months, by month up to 3 years, and by quarter beyond that. A first or last period that isn't complete is marked "(partial)" and left out of the change, which runs from the first to the last complete period, in %.
- Outliers: for a measure with 20 or more values, flag values below the lower quartile minus 1.5 times the interquartile range, or above the upper quartile plus 1.5 times it. With fewer than 20 values, run no outlier test; name the highest and lowest values instead, marked "small sample". Keep outliers in the analysis; if one changes a finding, give the finding with and without it.
- Charts: use only types a spreadsheet makes natively: a line chart for change over time; a bar or column chart, sorted, for comparing categories; a stacked bar for parts of a whole (a pie only for 5 parts or fewer); a scatter chart for the link between two measures. For a spread of values, group them into 5–10 equal bins in a table and show it as a column chart. Each chart's title states the takeaway ("Online overtook stores in August"), both axes are labelled with units, and categories are sorted unless they are in time order.
- Never claim one thing causes another from this data; say "goes with" or "moved together", and put the limit under Caveats.
## 6. Output
Use these sections in this order. Write "None" under any that is empty.
1. **Headline**: 3–5 lines for the reader alone: the answer to the question first, the 2–3 numbers that matter most, and the main caveat.
2. **Data profile**: one line with rows, columns, exact duplicates, the date range, and "read in full" or the sample line; then a table with the columns Column | Type | Missing | Distinct values | Example (masked if personal).
3. **Cleaning log**: a table with the columns # | Step | Column | Rows affected | Why, then one line: "Rows: <a> read, <b> used, <c> set aside, <d> exact duplicates kept and marked."
4. **Findings**: numbered, ranked, each in the format set by part 5, ending with the number of the chart that shows it.
5. **Tables**: the tables behind the findings: the trend by period with the change, each main segment with its share, the top 5 and bottom 5 with their share of the total, and any binned spread. Give each table a name (T1, T2…).
6. **Outliers and anomalies**: the rule used, then one line each: the row or period, the value, why it stands out, and whether it changes a finding.
7. **Charts**: a table with the columns # | Title | Type | Built from table | What it shows.
8. **Caveats**: one line each: small samples, missing data, assumptions ("Assumed: …"), set-aside rows, duplicates (total with and without), mixed units, and that the data shows links, not causes.
9. **Next steps**: 3–5 actions or decisions, each starting "Because of finding <n>:".
10. **Checks**: a table with the columns Check | First way | Second way | Result. Both ways are figures you computed (in code if you ran it, by hand if not), never values read back from the workbook. Cover at least: the grand total as a column sum against the sum of the segment totals; rows read against rows used plus rows set aside; each segment table's total against the grand total; and every number in the Headline against the table it comes from. Result is "Match" or "Fixed: <what changed>".
11. **Method**: the steps in order, the period and outlier rules, and the formulas used on the Tables tab. If you ran code, give the full code in one code block at the end of this section, so the analysis can be re-run.
12. **Workbook**: if you can create files, build it with code, attach it as <data name>-analysis.xlsx, and list its tabs. It holds these tabs, in this order:
- README: the question, the source file, the date range, what each tab holds, every assumption, which tables are live formulas and which are values, and the line "The Data and Clean tabs hold the original rows, including any personal data; remove it before forwarding."
- Data: the data exactly as read, untouched.
- Clean: the cleaned rows, with any added columns (such as Month and Duplicate).
- Set aside: every set-aside row with its reason.
- Tables: each table from section 5. Totals, segment tables and the trend table are live formulas over the Clean tab, using only SUM, SUMIFS, COUNTIFS and AVERAGEIFS, which every spreadsheet supports. The top 5, bottom 5 and binned tables are values from your analysis, each with the note "Values from the analysis, not live" beside it. With more than 100,000 rows, every table may hold values, noted on the README tab.
- Charts: one native chart (a real chart object, never a picture) per chart in section 7, each built from its table on the Tables tab, with the same title and axis labels.
- Checks: the grand total, the row count and each segment table's total as formulas, each beside the value you computed for it and a cell that shows TRUE when they match. Only these checks go on the tab; the Headline checks stay in the reply.
Freeze the header row, add filters on Data and Clean, and set the workbook to recalculate when it is opened. Say in the reply: "The workbook's formulas calculate when you open it; they use the same rows and ranges as the figures above."
If you can't create files, write "Your app can't make the workbook here, so here are the tables to paste into a spreadsheet." Then give each table as CSV in its own code block, named T1, T2…, and for each chart the steps to make it: which table to select, then Insert, then Chart, the chart type, the title and the axis labels.
## 7. Self-check
Before replying, check each of these and fix any failure:
- Every number in the Headline, findings and charts appears in a section 5 table or the Checks, with the same value, and you computed it yourself.
- The rows read equal the rows used plus the rows set aside, each set-aside row has a reason, and exact duplicates are kept and marked, not dropped.
- Every check in section 10 compares two figures you computed and says "Match" or "Fixed".
- The trend uses the period the rule gives, with partial periods marked and left out of the change.
- Every finding names its column, has its unit, and points to a chart; no finding claims a cause.
- There are 4–6 charts, or fewer with the reason given, each of a native type from the chart rule (no histogram chart type), with a takeaway title and labelled axes.
- No personal data appears in the reply unmasked.
- If you made the workbook: it has all seven tabs, the formulas use only the four named functions, ranked and binned tables are values with their note, and the charts are native charts built from the Tables tab. If you didn't: every table is given as CSV with its chart steps.
- A sample was never reported as the full total.
Then reply with the output only, ending with one line: "Checked: <n> rows used, <n> set aside, <n> duplicates marked, <n> findings, <n> charts, <n> checks matched."
## 8. Setup
Works as one paste in any chat app. Where the app can run code and create files, you get an .xlsx workbook with real charts to download. Its formulas calculate when you open it in Excel, Google Sheets or Numbers; a file preview may show them blank until then. Where the app can't make files, you get the tables as CSV to paste into a spreadsheet, with the steps to add each chart. Attach the CSV rather than pasting it if it is more than a few hundred rows, and write "see attached" in the data block.Review your result locally
Paste the result after your assistant creates it. This optional check stays in this tab and is not sent to LazyCoder.
The findings in plain words, plus a workbook with the charts.
Version & review details