# Bulk Text Classifier > Zero-shot classification for a whole spreadsheet column. Upload a CSV (or paste one text per line), pick the text > column, write your own labels with optional definitions, and every row gets a label, a confidence from 0 to 1 and a > one-line reason. Preview 5 rows first, then run the rest in batches. No API key needed - each batch is paid with > SkillSafe credits. https://csv-text-classifier.skillsafe.ai/ ## What it does - Reads CSV, TSV and plain-text lists in the browser, up to 2,000 rows; suggests the column that holds the text. - Labels: one per line, optionally "Label: what it means". Single-label or multi-label. An optional "Other" when nothing fits. - Sends only the chosen column's text, in batches of up to 20 rows; long texts are shortened in the middle. - Each row comes back with a label (or labels), a confidence and a short reason. The page checks every answer against what it sent: missing rows stay unclassified and are picked up by the next run; labels not on the list are not applied. - Free in the browser: a label distribution chart, filters (by label, needs review, search), hand corrections, CSV export with predicted_label, confidence, reason and needs_review columns, chart SVG, Markdown summary, JSON. - Past jobs are kept in the signed-in person's account: labels and per-row answers, never the texts. - Three free samples (support tickets, multi-label product reviews, search-keyword intent) replay saved answers. ## Use cases Support ticket triage, review and survey tagging, sentiment, search-keyword intent (informational, navigational, transactional, commercial), product categorisation, feedback routing. ## Pricing Loading, charts, corrections and exports are free. Classifying is metered per batch on SkillSafe credits (model gpt-terra). The page shows what a batch reserves before it starts and what was charged after. ## Developers - API tutorial: https://csv-text-classifier.skillsafe.ai/api.html - Input: {"task":"classify","labels":"- Name: definition ...","rows":"[1] text ...","multi_label":"no","allow_other":"yes","instructions":""} - Output: JSON lines, one {"id","label" or "labels","confidence","reason"} object per row, then {"done":true}.