Give the AI each supplier's spec sheet and have it copy the facts (fibre, width, weight, care) into fixed fields before it writes a word of description, then check those fields against the sheet. For cut-length orders, use a form with a half-metre minimum and 10 cm steps, and let the AI turn emails into order lines you confirm.
Fabric is unforgiving in a way most products aren't: a cut length can't go back on the roll. A description that promises "wrinkle-resistant" or "pre-washed" when the supplier said neither doesn't just disappoint someone, it creates a return you can't resell. The AI fills gaps with plausible qualities, which is why the sheet comes first and the prose comes second.
The examples use a made-up independent fabric shop with about 900 bolts, selling dressmaking and furnishing fabric by the metre in store and online, cut to order in 10 cm steps with a half-metre minimum. The workflow suits a shop selling to sewists, which is a different job from the AI design and tech-pack tools aimed at textile brands.
Extract the supplier sheet into fixed fields before any prose
The safest first step is to stop asking for a description and ask for a record. A supplier sheet is a tangle of abbreviations, units and columns, and the moment you request flowing copy the AI starts smoothing over whatever it can't read. Paste the sheet instead and have it fill fixed fields, writing NOT STATED wherever the sheet is silent. Here is an invented row as it might arrive from a PDF:
Art. LN-204 | Washed linen | col. Clay
Comp: 100% LI | W 150 cm | 185 g/m2
Fin: garment washed | Care: machine wash 40C, tumble dry low, iron damp
Roll 40 m | Cert: -
The prompt and the record it returns:
Fill in these fields using only what the sheet says. If the sheet doesn't say, write NOT STATED. Don't guess, tidy up or add anything. Expand abbreviations (LI = linen) and keep the care wording as written.
Fields: code, name, colour, composition, width_cm, usable_width_cm, weight_gsm, finish, care, certifications, roll_length_m
code: LN-204
name: Washed linen
colour: Clay
composition: 100% linen
width_cm: 150
usable_width_cm: NOT STATED
weight_gsm: 185
finish: garment-washed
care: machine wash 40C, tumble dry low, iron damp
certifications: NOT STATED (the sheet shows a dash)
roll_length_m: 40
Spend two minutes comparing the record with the sheet, field by field. This is where a misread width or weight gets caught, and it is the one step that needs careful eyes. After it, the writing step only ever sees the record, so it has no sheet to misread. The NOT STATED lines are as useful as the filled ones: certifications is empty, so no description may mention one.
Two house decisions save arguments later. When a supplier gives a full width and a usable width, pick one to quote everywhere. I'd quote the usable width, because that is what a pattern layout depends on. Here is how it goes wrong without a rule: a sheet printed "Width 150 cm (usable 144 cm)", and the AI put 150 in the title and 144 nowhere. The cure is a second width field in the list, usable width, with the instruction that the description quotes that one and the full width stays in the notes.
The second decision is to add one field the sheet can't supply: handle. Whoever unrolls the bolt types a short note, such as "soft, slightly crisp, creases easily". That note, and not the AI's imagination, is the only source for how the fabric feels in the hand.
One stock sheet that holds the record, the check and the copy
Keep everything for a fabric on one row, so nothing lives only in a chat window. A layout that works for a shop of this size:
| Columns | Filled by | Notes |
|---|---|---|
| Code, name, colour, composition | AI from the sheet, then you | Checked against the supplier sheet |
| Width, usable width, weight | AI from the sheet, then you | Plain numbers with no units, so formulas can use them |
| Width in inches, weight in oz/sq yd | Formulas | Never typed by hand |
| Finish, care, certifications | AI from the sheet, then you | NOT STATED stays NOT STATED |
| Handle note | Whoever unrolls the bolt | One short line |
| Roll length, metres sold, balance | You and the till | Balance is a formula |
| Price per metre, minimum cut, step | You | The AI never sets prices |
| Status | You | Draft, Checked or Live |
| Description | AI, edited by you | Pasted in only once the status is Checked |
| Checked by and date | You | Initials, so a wrong claim has an owner |
The Status column is the guardrail. Only rows marked Checked feed the website, so a draft that skipped the check can't go live by accident. The Checked by column sounds bureaucratic, but it is what makes the check real: a wrong claim now has a name next to it, and the person whose initials are on it reads more carefully.
Convert units in the sheet, never in the AI's head
Dressmakers lay a pattern against width and judge suitability by weight, which is grams per square metre, written gsm. Customers who think in inches or ounces per square yard need both. AI conversions are usually right, but "usually" isn't good enough for a number someone will cut a coat from. Put two formulas in the sheet (for example =ROUND(B2/2.54,0) for inches and =ROUND(C2/33.906,1) for ounces per square yard) and let the description draw on the results:
| Fabric | Width | Weight |
|---|---|---|
| LN-204 washed linen | 150 cm = 59 in | 185 gsm = 5.5 oz/sq yd |
| CT-310 cotton lawn | 140 cm = 55 in | 95 gsm = 2.8 oz/sq yd |
| PW-512 wool-blend coating | 145 cm = 57 in | 420 gsm = 12.4 oz/sq yd |
Rules that keep an AI description honest about fabric
Save these as the standing instructions of a ChatGPT or Claude project, so they apply to every fabric you paste without retyping. Whichever tool you use, the rules are the same:
- Facts come from the record. Every number, fibre and care instruction is copied, never rephrased.
- Width and weight sit in the first two sentences, in centimetres and inches, grams and ounces.
- Handle words come from the handle note only. The AI may repeat them. It may not add its own.
- Uses come from your weight bands, below, and nothing beyond them without a staff member's sign-off.
- Care is copied word for word and goes last.
- A banned-claims list: organic, certified, pre-washed, pre-shrunk, wrinkle-free, non-iron, stretch, waterproof, flame retardant, hard-wearing and any upholstery claim, unless the record says so.
- Colour is the supplier's name plus a staff word. The AI never describes a colour from a photo.
The weight bands are house rules, not an industry standard. Your cutting-table staff know them better than any AI does, so write down what they would say out loud and adjust these invented ones:
| Weight | Suggested uses the description may state |
|---|---|
| Under 120 gsm | Blouses, lightweight dresses, linings |
| 120 to 220 gsm | Shirts, dresses, skirts, light trousers, cushion covers |
| Over 220 gsm | Trousers, jackets, coats, bags |
| Upholstery or heavy-wear claims | Only with the supplier's rub-test rating on the sheet |
One linen from sheet to listing: draft, errors, final
With the record checked, the writing prompt can be short: "Write a product description for a fabric shop from this record, under 90 words, following the project rules. Then list any field you left out." For LN-204, with the handle note "soft, creases easily", the AI's first attempt read:
Washed Linen, Clay. Breathable, wrinkle-resistant and endlessly versatile, this 100% organic linen has a soft, pre-washed feel that's perfect for summer dresses, curtains and upholstery. Oeko-Tex certified. 150 cm wide (59 in) and a mid-weight 185 gsm (5.5 oz/sq yd). Machine wash at 40C, tumble dry low, iron damp.
It reads well and has six problems:
| In the draft | Problem | Fix |
|---|---|---|
| "wrinkle-resistant" | Linen creases, and the handle note says so | Use the note: creases easily |
| "100% organic linen" | The record says 100% linen and nothing about organic | Delete "organic" |
| "soft, pre-washed feel" | The supplier says garment-washed | Use the supplier's wording |
| "summer dresses, curtains and upholstery" | Curtains and upholstery aren't on the weight-band list | Shirts, dresses, skirts and cushion covers |
| "Oeko-Tex certified" | Certifications: NOT STATED | Delete |
| "endlessly versatile" | Filler that says nothing | Delete |
The 59 in and 5.5 oz/sq yd were correct because they came from the sheet's own conversions. This is the version that went on the page:
Washed Linen, Clay. 100% linen with a garment-washed finish, 150 cm (59 in) wide and 185 gsm (5.5 oz/sq yd), a mid-weight that suits shirts, dresses, skirts and cushion covers. Soft in the hand and it creases easily. Care: machine wash 40C, tumble dry low, iron damp. Sold per metre, cut to order from 0.5 m in 10 cm steps.
The whole fabric took about three minutes: two for the record check, one for the draft and the fixes. That figure is worth testing on your own shop. If writing a description from scratch takes 8 minutes and the checked workflow takes 3, then 900 bolts come to 120 hours against 45, a gap of 75 hours. It holds only if the record check never gets skipped.
Two more fabrics, two more kinds of slip
The linen's errors were embellishments. The next two are contradictions, which are costlier because they look like helpful advice:
| Fabric and record | What the draft said | Fix |
|---|---|---|
| CT-310 cotton lawn, Meadow print. 100% cotton, 140 cm, 95 gsm. Care: machine wash 30C, do not tumble dry. Shrinkage up to 3% on first wash. One-way print. | "Pre-shrunk, so there's no need to wash before sewing." | "Wash before cutting: the supplier states up to 3% shrinkage on first wash." Add that the print runs one way, so every piece must be cut in the same direction. |
| PW-512 wool-blend coating, Charcoal. 70% wool, 30% polyamide, 145 cm, 420 gsm. Care: dry clean only. | "A luxurious pure wool coating that can be gently hand-washed in cool water." | "Wool blend, 70% wool and 30% polyamide. Dry clean only." |
The lawn slip is the one that can cost a customer a finished garment. A customer who skips pre-washing because a page said "pre-shrunk" cuts a garment that then shrinks. The coating slip combines two common habits: the AI rounded a blend up to the fibre people know, and it reached for the standard wool-care advice instead of the sheet's. Garment sellers make the same mistakes in their own listings, so the checklist of fabric, fit and care errors in clothing product descriptions is worth skimming. For turning a whole catalogue into rows rather than one fabric at a time, see generating descriptions in bulk from CSV rows, and rewriting supplier copy with AI covers the broader habit of not trusting supplier wording blindly.
A metre-based order form that the cutting table can trust
A fabric order is a length, not a quantity, and the form should say so. Whether it lives on paper, in a form builder or on your website, these fields do the work:
| Field | Rule | Why |
|---|---|---|
| Fabric code | Chosen from your live stock list | Stops "the blue one" and wrong-bolt cuts |
| Length in metres | Minimum 0.5, one decimal place, never more than the roll balance | Matches how you cut and what is left |
| One continuous piece? | Yes or no | Two pieces use more fabric than one length |
| Pattern notes | Free text: matching, one-way print, the pattern's stated requirement and the width it assumes | A frequent cause of a short cut |
| Matching an earlier purchase? | Yes or no, with the approximate date | Dye lots can differ between rolls, so staff check before cutting from a different one |
| Contact and delivery | Name, email, collect or post | Keeps the cutting list separate from the address |
The price line is a formula, length multiplied by price per metre and rounded to cents, and the AI never calculates it. If you sell online, check whether your platform's quantity box takes decimals. Shopify's doesn't, going by merchants' reports on its community forums, so fabric shops on it usually do one of two things. Some sell a fixed unit: 10 cm at a tenth of the metre price, so a quantity of 25 means 2.5 m and a 40 m roll is stocked as 400 units, with that rule printed beside the box and some way, through the theme or an app, to stop orders below five units. Others add a length app from the Shopify App Store that takes metres directly. Compare what each app costs and whether it tracks part-metre stock before relying on it. Whatever you choose, test one order end to end: place it, read the cutting list your staff would see, and confirm the length on it is the length the customer typed.
Turning an emailed order into confirmed lines
Many orders arrive as free text, and this is where AI earns its place: it reads a messy message and proposes lines, and a person confirms them. Paste the message with the live stock list and the order rules, and ask for a table that flags anything uncertain. An invented message:
Hi, can I order 2.5 m of the clay linen, and enough of the Meadow lawn for two skirts? My pattern says 1.4 m per skirt for 140 cm fabric. Also 1.9 m of that grey wool coating if you still have it. Can you post to me? Thanks, [first name]
| Line | Fabric | Length | Per metre | Total | For a person to check |
|---|---|---|---|---|---|
| 1 | LN-204 washed linen, Clay | 2.5 m | $16.50 | $41.25 | Nothing |
| 2 | CT-310 cotton lawn, Meadow | 2.8 m (2 x 1.4) | $11.00 | $30.80 | The print runs one way. Does the pattern's 1.4 m allow for a one-way layout? One 2.8 m piece or two of 1.4 m? |
| 3 | PW-512 or PW-514? | 1.9 m | $38.00 | $72.20 | Two greys in stock: ask which. Total assumes the charcoal |
| $144.25 | Postage not included |
The totals come from the formula in your sheet, and the checks are the part worth reading. Line 3 matters most: the customer's "grey" matched two fabrics, and a model that picks one quietly is more dangerous than one that asks. The customer's width matches the lawn, so that part is settled. A good draft reply confirms the clear line, then asks the two open questions in a sentence each: which grey, and whether the pattern's 1.4 m figure allows for a print that runs one way, since many patterns give a larger figure for that layout. The same idea, with extra layers for photos and quotes, appears in AI for an upholstery business.
Pattern envelopes in yards: the conversion table
Pattern requirements are usually stated per fabric width, and many are written in yards. So the shop gets messages like "I need 2 3/4 yards". Convert in the sheet, round up to your cutting step, and keep the rounding rule where staff can see it. A formula that rounds to two decimals first, =ROUNDUP(ROUND(yards*0.9144,2),1), stops a harmless residue such as 3.2004 jumping to 3.3:
| Pattern says | In metres | Cut length (up to the next 10 cm) |
|---|---|---|
| 2 3/4 yards | 2.5146 m | 2.6 m |
| 1 7/8 yards | 1.7145 m | 1.8 m |
| 3 1/2 yards | 3.2004 m | 3.2 m |
Whether to add an allowance for pre-washing, straightening the grain or matching a print is your policy, not the AI's. Write it as a line in the order rules: "add 10% for one-way prints" or "ask for the pattern's matching note". Then the AI can quote it back correctly.
The end-of-roll rule
Every bolt has a balance: roll length minus everything cut so far. Keep it in the stock sheet, and let the AI quote it only from there. The decision rule is simple. LN-204 started at 40 m and 31.6 m has been sold, which leaves 8.4 m:
- A customer wants 6 m. The balance after the cut is 2.4 m, which is a usable remnant, so cut it.
- A customer wants 8.2 m. Only 0.2 m would remain, under your 0.5 m minimum cut, so offer the whole 8.4 m and decide whether to charge for the extra 20 cm.
- A customer wants 9 m. The roll can't cover it, so say how much there is and whether the supplier can send more.
The AI drafts those three replies well once the rule is written down. The decision about charging for the extra 20 cm belongs to you, and it should be the same every time.
Checking a batch before it goes live
Don't trust fifty good drafts to protect you from the fifty-first. Check a sample of about one in five before a batch is published, and run the same test every time:
- Do width, weight and composition match the sheet, character for character?
- Is every claim traceable to the record or the handle note?
- Is any word from the banned-claims list present?
- Does the care line match the sheet exactly?
- Does the photo show the real fabric, in daylight, with something for scale, and does the alt text describe what the photo shows? Checking alt text that an AI wrote covers that last part.
After a month, count three things: returns and complaints saying the fabric wasn't what the page described, enquiries asking for a width or weight the page should have stated, and cut-length mistakes at the table. All three should be falling. If returns for a particular fabric type stay high, read its descriptions first.
Roll the whole thing out in stages. Start with the 30 best-selling bolts, then new arrivals as they come in, then the back catalogue one supplier at a time. Watching the first 30 for a fortnight tells you which rule the AI keeps breaking, and you can tighten the instructions before you touch the other 870.
Where the money goes: checking time, not software
Start on a free AI plan. If the daily limits or the number of project files pinch once you are working through the back catalogue, the individual paid tiers list at around $20 a month; confirm today's price on the vendor's own page. The spreadsheet is free. The real expense is the checking time, and the earlier sum shows why it is worth paying. A length app for decimal quantities has its own subscription, so compare prices and stock handling before you commit.
Questions fabric shop owners ask about this
Can AI read a supplier's PDF or a photo of a spec sheet?
Often, but scanned pages and low-quality photos are where figures get misread, such as a width of 150 read as 130. Compare width, weight and fibre content against the original every time, and retype them yourself if the file is a scan. The extraction step exists to catch exactly this.
Can I use AI-generated pictures of the fabric?
I wouldn't. The customer is buying a colour and a texture, and a generated picture shows neither reliably. Google's product-listing rules also expect AI-generated images to be marked as such in their metadata. Photograph the real fabric in daylight, with a ruler for scale and a close-up of the weave.
Should the AI calculate prices for cut lengths?
No. Use a spreadsheet formula, length multiplied by price per metre and rounded to cents, so every total can be traced. Let the AI propose order lines and flag oddities, and let the formula do the arithmetic. A wrong total on a hundred-dollar order costs more than the time the AI saved.
How do I describe colour accurately?
Use the supplier's colour name plus one word a staff member chose after seeing the bolt, and offer swatches if you stock them. Screens vary, so say so on the page. Don't let the AI describe a colour from a photo, because it will turn a muddy green into something far more flattering.
Further reads
- Yarn Shop Marketing: Fill Knitting Classes and Promote New Stock With AI — Another craft retailer, with classes and new-stock promotion.
- Online Shop AI Mistakes That Hurt Trust and Conversions — How careless AI copy damages trust in a small online shop.
- Shopify Magic vs ChatGPT for Product Descriptions — Compares built-in and general AI for product copy.
- How to Use AI for Etsy Titles, Tags and Descriptions — Titles and tags if you also sell fabric or patterns on Etsy.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: Shopify community forum threads and app listings on whole-number quantities (seen in search results, October 2026); Google's help pages on AI-generated images in product listings; OpenAI and Anthropic pricing pages (October 2026). Fabrics, prices, supplier sheets and messages in the examples are invented.