← Files Zovo Spreadsheet CompareARCHIVED FILE
.codex-plugin/plugin.json
12.9 KB · Nov 3, 2026 · 19:12 UTC
{
"name": "sheet-compare",
"version": "1.0.1",
"description": "Compare two versions of a spreadsheet and get the full change list as an Excel file.",
"author": {
"name": "Zovo",
"email": "support@zovo.one",
"url": "https://zovo.one"
},
"homepage": "https://sheet-compare.zovo.one",
"license": "Proprietary",
"keywords": [
"compare two excel files",
"compare two spreadsheets",
"compare excel files",
"find differences between two excel files",
"compare two csv files",
"what changed between two spreadsheets",
"spreadsheet diff",
"compare price lists",
"excel compare tool",
"compare two versions of a spreadsheet",
"compare inventory lists"
],
"skills": "./skills/",
"mcpServers": "./.mcp.json",
"interface": {
"displayName": "Zovo Spreadsheet Compare",
"shortDescription": "Compare two spreadsheets",
"longDescription": "Compare two versions of a spreadsheet and get the full list of differences as a file, not just a few examples. Attach the old and the new CSV or Excel file (a product list, inventory export, employee roster, budget, product catalog or CRM export) and Zovo Spreadsheet Compare lists the rows that were added, the rows that were removed, and the rows that changed, cell by cell: the old value, the new value, the change and the percent change for numbers.\n\nRows are matched by a key column, such as SKU, Employee ID or email. Zovo Spreadsheet Compare finds the key automatically (unique and stable in both files) and tells you why it chose it; you can name your own key, including two columns together such as Store + Product code. When a file has no key, rows are matched by their content. Rows can be in any order.\n\nIt handles the things that make spreadsheet comparisons noisy: columns that were moved, renamed, added or removed; extra spaces; numbers written as 1,200.00 in one file and 1200 in the other; European formats such as 1.234,56; dates stored as text in one file and as Excel dates in the other; total and subtotal rows (left out of the comparison and listed); repeated header rows; blank rows; and a renumbered key (one change, not a removal plus an addition). You can ignore columns, ignore upper/lower case, and set a tolerance for rounding.\n\nDownloads: an Excel workbook with a Summary sheet, a Changed sheet with old and new values side by side, a Cell changes sheet with one row per changed cell, Added and Removed sheets, and the new version annotated with each row's status, plus a CSV of all changes. A second tool summarizes the changes by column: how many values went up or down, the total and average change, and the largest increases and decreases.\n\nLimitations: CSV, TSV and Excel .xlsx files (save older .xls files as .xlsx); one sheet per file per comparison; up to 50,000 rows per file. Formulas are compared by their saved values. Files are read once, and downloads expire after about an hour.",
"developerName": "Zovo",
"category": "Data & Analytics",
"capabilities": [
"Interactive",
"Read"
],
"websiteURL": "https://sheet-compare.zovo.one",
"supportURL": "https://sheet-compare.zovo.one/support",
"privacyPolicyURL": "https://sheet-compare.zovo.one/privacy",
"termsOfServiceURL": "https://sheet-compare.zovo.one/terms",
"defaultPrompt": [
"Compare old SKU,Price: A1 10, B2 5, C3 7 with new SKU,Price: A1 11, B2 5, D4 9. List what changed.",
"Diff rosters by Employee ID. Old: E1 Ana Sales, E2 Ben Ops. New: E1 Ana Finance, E3 Cy Ops",
"Summarize price changes. Old Item,Price: A 10.00, B 20.00, C 5.00. New: A 11.00, B 19.00, C 5.00, D 3.00"
],
"brandColor": "#3550C8",
"brandColorDark": "#8EA2FF",
"composerIcon": "./assets/icon.svg",
"logo": "./assets/logo.png"
},
"extensions": {
"com.openai": {
"onboardingSkill": "./skills/sheet-compare/SKILL.md",
"review": {
"test_cases": {
"positive": [
{
"description": "Compare two small typed price lists (starter prompt 1)",
"prompt": "Compare old SKU,Price: A1 10, B2 5, C3 7 with new SKU,Price: A1 11, B2 5, D4 9. List what changed.",
"tools_triggered": "compare_spreadsheets",
"expected_behavior": "Calls compare_spreadsheets with old_table and new_table as CSV text. Result: key SKU picked automatically; 1 changed row: A1 Price 10 -> 11 (+1, +10%); 1 added (D4); 1 removed (C3); 1 unchanged. Returns Excel and CSV download links and the widget shows the counts and the lists."
},
{
"description": "Compare two typed rosters by Employee ID (starter prompt 2)",
"prompt": "Diff rosters by Employee ID. Old: E1 Ana Sales, E2 Ben Ops. New: E1 Ana Finance, E3 Cy Ops",
"tools_triggered": "compare_spreadsheets",
"expected_behavior": "Calls compare_spreadsheets with the two rosters as CSV text (Employee ID, Name, Department), optionally key_columns [\"Employee ID\"]. Result: 1 changed row: E1 Department Sales -> Finance; 1 added (E3); 1 removed (E2). Excel and CSV downloads are returned."
},
{
"description": "Summarize price changes by column (starter prompt 3)",
"prompt": "Summarize price changes. Old Item,Price: A 10.00, B 20.00, C 5.00. New: A 11.00, B 19.00, C 5.00, D 3.00",
"tools_triggered": "summarize_changes",
"expected_behavior": "Calls summarize_changes with the two lists as CSV text. Result: 2 changed rows, 1 added (D), 0 removed, 1 unchanged. Price: 2 changed, 1 up, 1 down, average +2.5%; largest increase A 10.00 -> 11.00 (+10%); largest decrease B 20.00 -> 19.00 (-5%)."
},
{
"description": "Compare two attached quarterly price list workbooks (attach fixtures/regression/d_pricelist_2026Q3.xlsx and d_pricelist_2026Q4.xlsx)",
"prompt": "Here are our Q3 and Q4 price lists. List everything that changed: price changes, new SKUs and discontinued SKUs.",
"tools_triggered": "compare_spreadsheets",
"expected_behavior": "Calls compare_spreadsheets with old_file = the Q3 file and new_file = the Q4 file. Result: key SKU (unique in both files: 1,200 old and 1,203 new values); 37 changed rows (37 changed cells, all Price), 12 added, 9 removed, 1154 unchanged. All 37 price changes are listed with old and new prices and percent change, e.g. PL-12870 449.37 -> 404.44 (-10%); every added and removed SKU is listed. Returns the Excel workbook and changes CSV with the complete list."
},
{
"description": "Compare two invoice exports with subtotal rows (attach fixtures/regression/totals_old.csv and totals_new.csv)",
"prompt": "Compare last week's and this week's AP invoice export and tell me which amounts changed. Ignore the subtotal lines.",
"tools_triggered": "compare_spreadsheets",
"expected_behavior": "Calls compare_spreadsheets with the two CSV files. Result: key Invoice; 2 changed rows: INV-HA002 Amount 50.72 -> 60.72 (+10, +19.72%) and INV-SO003 Amount 384.8 -> 380.3 (-4.5, -1.17%); 0 added, 0 removed, 16 unchanged. The subtotal rows (Hardware Total, Software Total, Services Total) and Grand Total in each file are excluded and listed, and vendor TOTAL WINE & MORE rows are kept as normal rows."
}
],
"negative": [
{
"description": "Comparing two Word documents is out of scope. Expected: no call to compare_spreadsheets or summarize_changes.",
"prompt": "Can ChatGPT compare two Word documents for differences? I have two versions of a contract."
},
{
"description": "Joining two different tables (VLOOKUP) is not a version comparison. Expected: no tool call from this plugin.",
"prompt": "Write a VLOOKUP formula to pull the customer name from my customers sheet into my orders sheet"
},
{
"description": "Creating a new spreadsheet from scratch. Expected: no tool call.",
"prompt": "Make me a monthly household budget spreadsheet template with categories"
}
]
},
"commerce": false,
"commerce_description": "This plugin does not sell products or process payments.",
"demo_recording_url": "https://sheet-compare.zovo.one/demo.mp4"
},
"publication": {
"countries": [],
"release_notes": "Initial release: compare two CSV or Excel versions of a spreadsheet; all added, removed and changed rows with old and new values, numeric and percent change, automatic key detection with an explanation, renamed and moved columns, total rows excluded and listed; Excel and CSV downloads and a per-column change summary. Uses the detected ChatGPT native link helper for downloads, preserving standard MCP Apps compatibility.",
"translations": {
"pl-PL": {
"subtitle": "Por\u00f3wnaj dwa arkusze",
"description": "Por\u00f3wnaj dwie wersje arkusza kalkulacyjnego (CSV lub Excel) i zobacz ka\u017cd\u0105 r\u00f3\u017cnic\u0119: dodane, usuni\u0119te i zmienione wiersze, kom\u00f3rka po kom\u00f3rce, ze star\u0105 i now\u0105 warto\u015bci\u0105 oraz zmian\u0105 procentow\u0105. Kolumna klucza (np. SKU, ID pracownika) jest wykrywana automatycznie z wyja\u015bnieniem. Obs\u0142uguje przesuni\u0119te i przemianowane kolumny, wiersze sum, formaty liczb i dat. Pobierz komplet zmian jako plik Excel i CSV."
},
"de-DE": {
"subtitle": "Zwei Tabellen vergleichen",
"description": "Vergleichen Sie zwei Versionen einer Tabelle (CSV oder Excel) und sehen Sie jede Abweichung: hinzugef\u00fcgte, entfernte und ge\u00e4nderte Zeilen, Zelle f\u00fcr Zelle mit altem und neuem Wert und prozentualer \u00c4nderung. Die Schl\u00fcsselspalte (z. B. Artikelnummer, Personalnummer) wird automatisch erkannt und begr\u00fcndet. Verschobene und umbenannte Spalten, Summenzeilen sowie Zahlen- und Datumsformate werden ber\u00fccksichtigt. Alle \u00c4nderungen als Excel- und CSV-Datei."
},
"es-ES": {
"subtitle": "Compara dos hojas de c\u00e1lculo",
"description": "Compara dos versiones de una hoja de c\u00e1lculo (CSV o Excel) y obt\u00e9n cada diferencia: filas a\u00f1adidas, eliminadas y modificadas, celda por celda, con el valor anterior, el nuevo y el cambio porcentual. La columna clave (SKU, ID de empleado) se detecta autom\u00e1ticamente con una explicaci\u00f3n. Tiene en cuenta columnas movidas o renombradas, filas de totales y formatos de n\u00fameros y fechas. Descarga todos los cambios en Excel y CSV."
},
"fr-FR": {
"subtitle": "Comparer deux tableurs",
"description": "Comparez deux versions d'un tableur (CSV ou Excel) et obtenez chaque diff\u00e9rence : lignes ajout\u00e9es, supprim\u00e9es et modifi\u00e9es, cellule par cellule, avec l'ancienne et la nouvelle valeur et la variation en pourcentage. La colonne cl\u00e9 (r\u00e9f\u00e9rence, matricule) est d\u00e9tect\u00e9e automatiquement, avec une explication. Colonnes d\u00e9plac\u00e9es ou renomm\u00e9es, lignes de total, formats de nombres et de dates sont g\u00e9r\u00e9s. Toutes les modifications en fichier Excel et CSV."
},
"ja-JP": {
"subtitle": "2\u3064\u306e\u8868\u3092\u6bd4\u8f03",
"description": "\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\uff08CSV \u307e\u305f\u306f Excel\uff09\u306e2\u3064\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u6bd4\u8f03\u3057\u3001\u3059\u3079\u3066\u306e\u5dee\u5206\u3092\u8868\u793a\u3057\u307e\u3059\u3002\u8ffd\u52a0\u30fb\u524a\u9664\u30fb\u5909\u66f4\u3055\u308c\u305f\u884c\u3092\u3001\u30bb\u30eb\u3054\u3068\u306b\u65e7\u5024\u3068\u65b0\u5024\u3001\u5897\u6e1b\u3068\u5897\u6e1b\u7387\u3064\u304d\u3067\u4e00\u89a7\u306b\u3057\u307e\u3059\u3002\u30ad\u30fc\u5217\uff08SKU\u3001\u793e\u54e1\u756a\u53f7\u306a\u3069\uff09\u306f\u7406\u7531\u3064\u304d\u3067\u81ea\u52d5\u5224\u5b9a\u3002\u5217\u306e\u79fb\u52d5\u3084\u540d\u524d\u5909\u66f4\u3001\u5408\u8a08\u884c\u3001\u6570\u5024\u3084\u65e5\u4ed8\u306e\u66f8\u5f0f\u306e\u9055\u3044\u306b\u3082\u5bfe\u5fdc\u3057\u3001\u3059\u3079\u3066\u306e\u5909\u66f4\u3092 Excel \u3068 CSV \u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002"
},
"pt-BR": {
"subtitle": "Compare duas planilhas",
"description": "Compare duas vers\u00f5es de uma planilha (CSV ou Excel) e veja cada diferen\u00e7a: linhas adicionadas, removidas e alteradas, c\u00e9lula por c\u00e9lula, com o valor antigo, o novo e a varia\u00e7\u00e3o percentual. A coluna-chave (SKU, matr\u00edcula) \u00e9 detectada automaticamente, com explica\u00e7\u00e3o. Trata colunas movidas ou renomeadas, linhas de total e formatos de n\u00fameros e datas. Baixe todas as altera\u00e7\u00f5es em Excel e CSV."
}
}
}
}
},
"apps": "./.app.json"
}
SHA-256: 3717964e725cacb5bef516cb809fa13f75c532a4550ece07b29fca985e3c735c