Volnyn – Website Builder, Domains, Property, Freelancers & Free Games
Open App

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.