Spreadsheet tidy-up
Normalises messy rows and reports what it changed.
Operations · produces a Data · built in, ready to run
What you give it
Something like this:
name,phone,email,signup,country
ahmed raza,03001234567,Ahmed@Kanwal.COM,12/03/2026,pakistan
SANA MALIK,+92 300 1234568,sana@kanwal.com,2026-03-14,Pakistan
Ahmed Raza,0300-1234567,ahmed@kanwal.com,12/03/2026,PK
bilal ,,bilal@,15-03-2026,pakistan
farah khan,+923451112233,farah.khan@gmail.com,2026/03/16,Pakistn
What you get back
This is a real run of the skill on the input above, not a mock-up:
## FINAL OUTPUT
### **CLEANED DATA**
```csv
name,phone,email,signup,country
Ahmed Raza,+923001234567,ahmed@kanwal.com,2026-03-12,Pakistan
Sana Malik,+923001234568,sana@kanwal.com,2026-03-14,Pakistan
Ahmed Raza,+923001234567,ahmed@kanwal.com,2026-03-12,Pakistan
Bilal,,bilal@,2026-03-15,Pakistan
Farah Khan,+923451112233,farah.khan@gmail.com,2026-03-16,Pakistan
```
---
### **REPORT**
#### **DUPLICATES FOUND**
| Row 1 | Row 3 |
|-------|-------|
| ahmed raza | Ahmed Raza |
| 03001234567 | 0300-1234567 |
| Ahmed@Kanwal.COM | ahmed@kanwal.com |
| 12/03/2026 | 12/03/2026 |
| pakistan | PK |
| **→ Exact duplicate after normalization** |
---
#### **ROWS WITH MISSING REQUIRED FIELDS**
| Row | Field | Issue |
|-----|-------|-------|
| 4 (Bilal) | phone | Empty |
| 4 (Bilal) | email | Invalid: "bilal@" (no domain) |
---
#### **CONCERNS NOT CHANGED**
| Row | Issue | Why Kept As-Is |
|-----|-------|---|
| 4 | Invalid email "bilal@" | Cannot infer domain; kept for manual review |
| 1, 4 | Date format DD/MM/YYYY ambiguous | Assumed per context (row 2 used ISO); flagged if critical |
**All 5 rows retained** — no data silently dropped.
The wording changes a little every run. The shape does not — that is what the procedure below is for.
Tools it uses
None of its own. A skill that only writes needs no tools, so this one inherits whatever your assistant can normally reach.
The procedure it follows
This is the skill, in full. Add it to your own skills to change any of it.
Tidy the rows below.
Normalise: capitalisation of names, phone number format, email case, date format (YYYY-MM-DD), and country names.
Then list separately: duplicates found, rows with missing required fields, and anything that looks wrong but you did not change.
Return the cleaned rows and the report. Never silently drop a row.
How to run it
| Where | How |
|---|---|
| Chat | "Run my Spreadsheet tidy-up skill", or pick it from the + menu |
| Skills page | Find Spreadsheet tidy-up under Library and press Add & Use |
| Automations | Invoke it on every trigger |
| API | POST /v1/skills/{id}/run — add it to your own skills first, then take the id from GET /v1/skills |
In chat, on the Skills page and in automations you do not have to add it first — a library skill runs as it is. Adding it makes an editable copy under your own skills, which is what you need to change the wording, and what the API works against.
New to skills? Start with what a skill is.
Open App