Skip to content
CodexWork
Any AIChatGPTClaudeCodexCopilotGeminiGrokOther agents

Use materials in your tool

All tool notes →

Clean up a spreadsheet export

Give it a messy export. Get every row back in order, exceptions flagged, totals scoped.

One expense file, five stops, four runs ↗Field tests ↗
Recorded run

One synthetic expense file, one instruction, one run each: Codex, then Sonnet, Opus and Haiku in Claude Code. All preserved run-folder outputs are published. These are single runs, not a benchmark.

A spreadsheet application may strip leading zeros when opening CSV; import ID columns as text.

Read the full instruction ↓

What you supply

  • Original CSV or spreadsheet export
  • Rules for dates, currency, duplicates and acceptable corrections

What it saves

  • Cleaned copy with original values retained
  • Exception log
  • Row counts and scoped totals

Designed example · synthetic data

See the finished example

Read the result before using it

A useful cleanup keeps the source intact and makes uncertainty visible. Start with the exception log; a tidy-looking total can hide the rows an agent quietly guessed.

Four rows from the original fictional input. IDs remain text; no date, currency or conflicting amount is resolved here.
Source rowExpense IDDateCurrencyAmount
70010062026-10-06USD120.00
80010062026-10-06USD140.00
900100703/04/2026USD49.00
100010082026-10-08Not supplied95.00
  1. Keep the originals. All 14 input rows return in order, with leading-zero IDs retained. Corrections belong in added fields.
  2. Resolve only what the brief settles. Rows 7–8 conflict for ID 001006; row 9 has no date convention; row 10 has no currency. The exception log records what remains undecided. The exact duplicate follows its separate written rule.
  3. Reconcile the eligible rows. The designed result includes 7 rows and excludes 7: USD 1,375.49 and EUR 420.00, separately. An unknown amount is never zero and there is no authorized conversion.

The instruction

Clean the export I supply according to its brief. Work on a new copy; preserve the original and all source rows. If cleaning rules are absent, propose safe rules and ask before applying changes that alter meaning.

Keep identifiers as text, including leading zeros. Retain original date and amount fields and add normalized fields. Apply only unambiguous transformations supported by the brief. Leave unclear values unchanged in the original fields and log the issue; never turn an unknown amount into zero or assume a currency. Flag exact duplicates and conflicting records separately. Do not silently remove or merge either kind.

Save cleaned.csv, exceptions.csv and reconciliation.md. The exception log must identify the source row/ID, issue, treatment and decision needed. Reconcile input/output row counts. State which rows are included in any numeric totals and why others are excluded. Sum only known, eligible numeric values by currency; do not combine currencies without an authorized conversion rule. Treat these as scoped totals, not a final accounting total.

Return the saved files and unresolved decisions. Do not write to a live system, overwrite inputs or send data elsewhere.

Show plain text
Clean the export I supply according to its brief. Work on a new copy; preserve the original and all source rows. If cleaning rules are absent, propose safe rules and ask before applying changes that alter meaning.

Keep identifiers as text, including leading zeros. Retain original date and amount fields and add normalized fields. Apply only unambiguous transformations supported by the brief. Leave unclear values unchanged in the original fields and log the issue; never turn an unknown amount into zero or assume a currency. Flag exact duplicates and conflicting records separately. Do not silently remove or merge either kind.

Save cleaned.csv, exceptions.csv and reconciliation.md. The exception log must identify the source row/ID, issue, treatment and decision needed. Reconcile input/output row counts. State which rows are included in any numeric totals and why others are excluded. Sum only known, eligible numeric values by currency; do not combine currencies without an authorized conversion rule. Treat these as scoped totals, not a final accounting total.

Return the saved files and unresolved decisions. Do not write to a live system, overwrite inputs or send data elsewhere.

Stops in this kit

Two amounts conflict for one ID

Missing currency or pending amount

Dates or amounts with unknown locale

No cleaning rules supplied

Any currency conversion

Settled by your brief

An exact copy of an earlier row: flag it, keep both, count it once.

Extra spaces around a name: trim them in the added column.

A lowercase cost-center code: uppercase it in the added column.

An amount in brackets: read it as a negative refund.

Checks to run

  1. Original rows and values are recoverable; leading-zero IDs remain text.
  2. Duplicates are retained and flagged until a decision is supplied.
  3. Ambiguous dates, missing currency and unknown amounts are not guessed.
  4. Totals use stated eligible rows and separate currencies.
Check your result →

What has been tested

Recorded run

One synthetic expense file, one instruction, one run each: Codex, then Sonnet, Opus and Haiku in Claude Code. All preserved run-folder outputs are published. These are single runs, not a benchmark.

Checked 2026-10-13

Four runs · two tools · 13 and 22 October 2026 →

Limits

  • A spreadsheet application may strip leading zeros when opening CSV; import ID columns as text.
  • An exception log requires a human decision before ambiguous records can be finalized.
  • Access instructions do not replace configured tool permissions.

Optional tool setup

Using a kit

  1. Upload a copy of the export and the cleaning brief.
  2. Run the instruction and inspect the exception log first.
  3. Check row counts, ID text handling and the eligible rows behind each total.
Use a kit in your tool →

ChatGPT

  1. Paste the instruction, attach the sample files or your own, and read the stops first.
  2. Pick Work for a multi-step task and supply the context it needs.
  3. For reuse, follow the documented skill or plugin setup on your surface. Downloading a kit does not install it.

Check the permissions for the tools and actions you use. The kit's stops are instructions to the agent; they do not create an enforced approval setting.

ChatGPT · dated notes →

Claude

  1. Paste the instruction, attach the sample files or your own, and read the stops first.
  2. In Cowork, choose the authorized folder containing your inputs where that feature is available. A generic kit-to-skill import was not established by the reviewed pages.
  3. In Claude Code, use CLAUDE.md for project guidance. AGENTS.md is read by default on supported versions (2.1.277+) only when project-path CLAUDE.md or CLAUDE.local.md does not take precedence; session and configuration exceptions apply.

Check the controls in your Claude surface. Anthropic describes approval handbacks, but the kit's stops do not enforce a product permission boundary.

Claude · dated notes →

Codex

  1. Paste the instruction, attach the sample files or your own, and read the stops first.
  2. For project guidance, use AGENTS.md. For a reusable skill, follow the supported setup, such as .agents/skills/<name>/SKILL.md in a repository.
  3. Check the sandbox and approval settings before you start the job.

Codex has sandbox and approval settings. Check them before a job that touches real files.

Codex · dated notes →

Copilot

  1. Paste the plain instruction into a Copilot chat you can access, and read the stops first.
  2. Check which file inputs and actions your tenant's actual surface supports before supplying files.
  3. Keep the kit as a manual prompt. The reviewed posts do not document importing it as a skill, plugin or agent.

Ask your administrator which actions, permissions and approval controls your organization has enabled. A kit's stops do not create those controls.

Copilot · dated notes →

Gemini

  1. Paste the instruction, attach the sample files or your own, and read the stops first.
  2. Where Skills is available, copy or import the skill using that surface's documented setup.
  3. Gemini app and Workspace skills do not sync. Set up the skill separately on each available surface you use.

Some Gemini Tasks may require confirmation. Check current eligibility and permissions before real account work; the kit's stops are instructions, not enforced approval settings.

Gemini · dated notes →

Grok

  1. Paste the plain instruction as a message and read the stops first.
  2. If Bot is available to you, show it the workflow; xAI describes routine learning by following along.
  3. Keep the instruction as plain text; we could not confirm SKILL.md support.

xAI describes approval handbacks for Grok Bot. Check what your account and connected apps allow before real actions.

Grok · dated notes →

Other agents

  1. Paste the plain instruction into an agent that accepts text, then supply inputs through its supported route and read the stops first.
  2. If your agent reads AGENTS.md, save the instruction there.
  3. If the named client supports Agent Skills, use the documented skill folder location and setup for that client and version.

This varies by agent. Look up its approval settings; the kit's stops stay in the instruction wherever you paste it.

Other agents · dated notes →
Markdown · README.md
# Clean up a spreadsheet export

Give it a messy export. Get every row back in order, exceptions flagged, totals scoped.

## Start

1. Edit [brief.md](spreadsheet-cleanup/files/brief.md) and [input-template.md](spreadsheet-cleanup/files/input-template.md).
2. Supply authorized inputs to your own file-capable agent with [instruction.txt](spreadsheet-cleanup/files/instruction.txt).
3. Inspect the saved outputs using [checks.md](spreadsheet-cleanup/files/checks.md) before using them. Keep original inputs.

## Inputs

- Original CSV or spreadsheet export
- Rules for dates, currency, duplicates and acceptable corrections

## Outputs

- Cleaned copy with original values retained
- Exception log
- Row counts and scoped totals

## Steps

- Upload a copy of the export and the cleaning brief.
- Run the instruction and inspect the exception log first.
- Check row counts, ID text handling and the eligible rows behind each total.

## Instruction

Clean the export I supply according to its brief. Work on a new copy; preserve the original and all source rows. If cleaning rules are absent, propose safe rules and ask before applying changes that alter meaning.

Keep identifiers as text, including leading zeros. Retain original date and amount fields and add normalized fields. Apply only unambiguous transformations supported by the brief. Leave unclear values unchanged in the original fields and log the issue; never turn an unknown amount into zero or assume a currency. Flag exact duplicates and conflicting records separately. Do not silently remove or merge either kind.

Save cleaned.csv, exceptions.csv and reconciliation.md. The exception log must identify the source row/ID, issue, treatment and decision needed. Reconcile input/output row counts. State which rows are included in any numeric totals and why others are excluded. Sum only known, eligible numeric values by currency; do not combine currencies without an authorized conversion rule. Treat these as scoped totals, not a final accounting total.

Return the saved files and unresolved decisions. Do not write to a live system, overwrite inputs or send data elsewhere.

## Decisions that need your context

- Two amounts conflict for one ID
- Dates or amounts with unknown locale
- Missing currency or pending amount
- No cleaning rules supplied
- Any currency conversion

## Settled by the brief

- An exact copy of an earlier row: flag it, keep both, count it once.
- Extra spaces around a name: trim them in the added column.
- A lowercase cost-center code: uppercase it in the added column.
- An amount in brackets: read it as a negative refund.

## Check the output

- Original rows and values are recoverable; leading-zero IDs remain text.
- Duplicates are retained and flagged until a decision is supplied.
- Ambiguous dates, missing currency and unknown amounts are not guessed.
- Totals use stated eligible rows and separate currencies.

## Limits

- A spreadsheet application may strip leading zeros when opening CSV; import ID columns as text.
- An exception log requires a human decision before ambiguous records can be finalized.
- Access instructions do not replace configured tool permissions.

## Materials

- [examples/spreadsheet-cleanup/cleaned.csv](spreadsheet-cleanup/files/examples/spreadsheet-cleanup/cleaned.csv)
- [examples/spreadsheet-cleanup/designed-example.html](spreadsheet-cleanup/files/examples/spreadsheet-cleanup/designed-example.html)
- [examples/spreadsheet-cleanup/designed-example.md](spreadsheet-cleanup/files/examples/spreadsheet-cleanup/designed-example.md)
- [examples/spreadsheet-cleanup/exceptions.csv](spreadsheet-cleanup/files/examples/spreadsheet-cleanup/exceptions.csv)
- [examples/spreadsheet-cleanup/input.csv](spreadsheet-cleanup/files/examples/spreadsheet-cleanup/input.csv)
- [examples/spreadsheet-cleanup/input.md](spreadsheet-cleanup/files/examples/spreadsheet-cleanup/input.md)
- [examples/spreadsheet-cleanup/recorded-run/input.md](spreadsheet-cleanup/files/examples/spreadsheet-cleanup/recorded-run/input.md) (original recorded evidence; links retain their recorded form)
- [examples/spreadsheet-cleanup/recorded-run/instruction.txt](spreadsheet-cleanup/files/examples/spreadsheet-cleanup/recorded-run/instruction.txt) (original recorded evidence; links retain their recorded form)
- [examples/spreadsheet-cleanup/recorded-run/output/cleaned.csv](spreadsheet-cleanup/files/examples/spreadsheet-cleanup/recorded-run/output/cleaned.csv) (original recorded evidence; links retain their recorded form)
- [examples/spreadsheet-cleanup/recorded-run/output/exceptions.csv](spreadsheet-cleanup/files/examples/spreadsheet-cleanup/recorded-run/output/exceptions.csv) (original recorded evidence; links retain their recorded form)
- [examples/spreadsheet-cleanup/recorded-run/output/reconciliation.md](spreadsheet-cleanup/files/examples/spreadsheet-cleanup/recorded-run/output/reconciliation.md) (original recorded evidence; links retain their recorded form)
- [examples/spreadsheet-cleanup/recorded-run/report.html](spreadsheet-cleanup/files/examples/spreadsheet-cleanup/recorded-run/report.html) (original recorded evidence; links retain their recorded form)
- [examples/spreadsheet-cleanup/recorded-run/report.md](spreadsheet-cleanup/files/examples/spreadsheet-cleanup/recorded-run/report.md) (original recorded evidence; links retain their recorded form)
- [field-tests/expense-cleanup/claude-sonnet/cleaned.csv](spreadsheet-cleanup/files/field-tests/expense-cleanup/claude-sonnet/cleaned.csv) (original recorded evidence; links retain their recorded form)
- [field-tests/expense-cleanup/claude-sonnet/exceptions.csv](spreadsheet-cleanup/files/field-tests/expense-cleanup/claude-sonnet/exceptions.csv) (original recorded evidence; links retain their recorded form)
- [field-tests/expense-cleanup/claude-sonnet/reconciliation.md](spreadsheet-cleanup/files/field-tests/expense-cleanup/claude-sonnet/reconciliation.md) (original recorded evidence; links retain their recorded form)
- [field-tests/expense-cleanup/claude-sonnet/reply.md](spreadsheet-cleanup/files/field-tests/expense-cleanup/claude-sonnet/reply.md) (original recorded evidence; links retain their recorded form)
- [field-tests/expense-cleanup/claude-opus/cleaned.csv](spreadsheet-cleanup/files/field-tests/expense-cleanup/claude-opus/cleaned.csv) (original recorded evidence; links retain their recorded form)
- [field-tests/expense-cleanup/claude-opus/exceptions.csv](spreadsheet-cleanup/files/field-tests/expense-cleanup/claude-opus/exceptions.csv) (original recorded evidence; links retain their recorded form)
- [field-tests/expense-cleanup/claude-opus/reconciliation.md](spreadsheet-cleanup/files/field-tests/expense-cleanup/claude-opus/reconciliation.md) (original recorded evidence; links retain their recorded form)
- [field-tests/expense-cleanup/claude-opus/reply.md](spreadsheet-cleanup/files/field-tests/expense-cleanup/claude-opus/reply.md) (original recorded evidence; links retain their recorded form)
- [field-tests/expense-cleanup/claude-haiku/cleaned.csv](spreadsheet-cleanup/files/field-tests/expense-cleanup/claude-haiku/cleaned.csv) (original recorded evidence; links retain their recorded form)
- [field-tests/expense-cleanup/claude-haiku/exceptions.csv](spreadsheet-cleanup/files/field-tests/expense-cleanup/claude-haiku/exceptions.csv) (original recorded evidence; links retain their recorded form)
- [field-tests/expense-cleanup/claude-haiku/reconciliation.md](spreadsheet-cleanup/files/field-tests/expense-cleanup/claude-haiku/reconciliation.md) (original recorded evidence; links retain their recorded form)
- [field-tests/expense-cleanup/claude-haiku/reply.md](spreadsheet-cleanup/files/field-tests/expense-cleanup/claude-haiku/reply.md) (original recorded evidence; links retain their recorded form)

## Evidence

[Recorded context and file identities](spreadsheet-cleanup/files/evidence.json)

Recorded run

One synthetic expense file, one instruction, one run each: Codex, then Sonnet, Opus and Haiku in Claude Code. All preserved run-folder outputs are published. These are single runs, not a benchmark.

Observed or source-checked: 2026-10-13.

## Revision and corrections

Revision: 2.0.1. Lifecycle: active.

[Current kit](https://codexwork.com/kits/spreadsheet-cleanup/) · [Changes and corrections](https://codexwork.com/changes/)

[Rights and notices](spreadsheet-cleanup/files/LICENSES.md) · [Sources](spreadsheet-cleanup/files/sources.md) · [Manifest](spreadsheet-cleanup/files/manifest.json)

Downloading these files does not run an agent, install a skill, create a schedule, or grant file or account permissions.
Open Markdown file ↗
SKILL.md
---
name: spreadsheet-cleanup
description: "Give it a messy export. Get every row back in order, exceptions flagged, totals scoped."
---

# Clean up a spreadsheet export

Clean the export I supply according to its brief. Work on a new copy; preserve the original and all source rows. If cleaning rules are absent, propose safe rules and ask before applying changes that alter meaning.

Keep identifiers as text, including leading zeros. Retain original date and amount fields and add normalized fields. Apply only unambiguous transformations supported by the brief. Leave unclear values unchanged in the original fields and log the issue; never turn an unknown amount into zero or assume a currency. Flag exact duplicates and conflicting records separately. Do not silently remove or merge either kind.

Save cleaned.csv, exceptions.csv and reconciliation.md. The exception log must identify the source row/ID, issue, treatment and decision needed. Reconcile input/output row counts. State which rows are included in any numeric totals and why others are excluded. Sum only known, eligible numeric values by currency; do not combine currencies without an authorized conversion rule. Treat these as scoped totals, not a final accounting total.

Return the saved files and unresolved decisions. Do not write to a live system, overwrite inputs or send data elsewhere.

## Required inputs

- Original CSV or spreadsheet export
- Rules for dates, currency, duplicates and acceptable corrections

## Expected outputs

- Cleaned copy with original values retained
- Exception log
- Row counts and scoped totals

## Checks

- Original rows and values are recoverable; leading-zero IDs remain text.
- Duplicates are retained and flagged until a decision is supplied.
- Ambiguous dates, missing currency and unknown amounts are not guessed.
- Totals use stated eligible rows and separate currencies.

## Limits

- A spreadsheet application may strip leading zeros when opening CSV; import ID columns as text.
- An exception log requires a human decision before ambiguous records can be finalized.
- Access instructions do not replace configured tool permissions.

Revision: 2.0.1. [Read the complete kit](files/README.md) before use. This optional format is not a claim of support by every tool.
Open SKILL.md ↗