What Broke When I Reused Old AI Prompts for Inventory Updates

What Broke When I Reused Old AI Prompts for Inventory Updates

1. Reusing chat prompts across inventory formats broke fast

I copied over a prompt I’d used for four months straight to summarize Shopify variant names into short titles for reports. It had worked just fine with CSV imports from my old product catalog. But I switched to a manual Airtable drag-and-drop update for a few SKUs — boom — totally different result. Same prompt. OpenAI went from giving me crisp two-word summaries like “Black Hoodie Medium” to unhinged full sentences like “The product you’re viewing is a medium-sized black cotton hoodie!”

This isn’t hallucination. It’s parsing context differently. The JSON string I was sending in the original automation was flattened. But manual Airtable records pull rich field metadata, and ChatGPT defaulted to interpreting it narratively unless I explicitly wrapped the values in a structured pattern, like this:

{"product_name": "Black Hoodie", "size": "Medium"}

Even then, one edge case blew through. A product had a description field labeled just “desc” — the model treated it like dialogue. It literally wrote: “Desc: Wow, this hoodie sure looks soft.”

Turns out, OpenAI’s model behavior varies if the context window leads with natural-sounding keys. If keys sound informal or descriptive—like “name,” “desc,” “preview”—you get chatty completions unless you reset the tone with strongly typed role prefixes or instructions scoped per field.

2. Token bleed-through messed with follow-up update blocks

I was stringing multiple inventory records together into one prompt to save tokens and reduce API calls. That blew up the moment I sent two records with overlapping SKUs. The AI started blending product attributes. A red hat from SKU 2941 suddenly had the size label of a black hoodie from SKU 2930.

Even though each record had a unique ID, the prompt didn’t clearly isolate their scopes. I should’ve treated each record like its own mini section with a prefix like:

“PRODUCT BLOCK [SKU: 2941]”

Then added a hard reset cue between blocks like:

---

Weirdly, even when I did this, I still got rogue completions occasionally — especially when the model had just processed a color or a material. It sometimes acts like it’s still “in” the last block. That non-deterministic behavior only showed up when context windows neared the 3000-token range. Below that, completions were clean. Feels like context edge-case contamination, or maybe OpenAI just doesn’t fully clear previous latent pathways unless you tell it to explicitly.

3. Prompting inside Zapier formatter steps led to invisible truncation

Zapier’s ChatGPT Formatter step looks innocent — but if you’re prompting inline with dynamic content and NOT logging input/output somewhere, you’re climbing a mountain blindfolded. I had one inventory update flow where I used a Zapier Formatter + OpenAI step to rephrase new item names based on supplier naming conventions.

Worked fine — until I started getting empty inventory titles. Turns out, long entries (multi-line entries with style codes and descriptors) were silently getting truncated before hitting the GPT formatter input. Not erroring — just… passing along garbage input and outputting nothing.

Adding a Log to Airtable step revealed the guilty input string was getting clipped at exactly 1024 characters. But nowhere in Zapier’s UI does it show you that truncation. You only notice it if you’re checking the raw data panel per step — which, of course, I wasn’t, because this thing had been “working” for weeks.

I ended up rewriting that flow with a Code step that validated character counts and added a warning if anything ran over budget. Not elegant — but better than guessing why five products suddenly have blank names in your warehouse screen.

4. One rogue ampersand destroyed the prompt context completely

I had a weird one where a product called “Wax & Wane Candle” came through and broke everything downstream. The rest of the inventory updated cleanly — but any prompt that had that line inside a stringified JSON block would suddenly get half-parsed and hallucinate wildly. Descriptions went off-script. Sizes vanished.

{"name": "Wax & Wane Candle", "size": "Regular"}

After ten pointless reruns and blaming the model, I finally realized the issue. I’d wrapped the whole inventory update in Markdown-style formatting to make it human-readable — but forgot that Zapier didn’t escape special characters in dynamic inputs. So that ampersand collapsed the parser at the JSON boundary mid-prompt.

Once I replaced all non-alphanumeric characters in the dynamic field inputs before building the prompt structure, the problem vanished. Also switched from manual Markdown to inline triple backticks, so the model didn’t misinterpret data blocks as prose.

I would’ve never found this bug without literally copy-pasting the raw sent prompt into ChatGPT manually to see where it derailed. Still unclear if it’s the formatter or the OpenAI model wigging out, but either way — it cost me half a day.

5. Vendor SKUs confused the model without domain-specific guidance

Inventory updates that involve obscure SKU patterns or vendor asset codes need more than a generic rewrite prompt. I thought saying “Convert product names into readable short titles” would be enough. Nope.

The model couldn’t parse things like:

“CAM-X4-GRN-M-LNG”

Sometimes it would just write “CAMX4GRNMLNG” or worse — “Camera extra four green medium long.” Not helpful.

I had to explicitly train it on a few examples via system messages. Something like:

“When parsing product names, recognize that ‘CAM-X4’ refers to the product line and ‘GRN’ is the color, abbreviated. Rewrite as ‘CAM-X4 Green M Long’.”

After three to four examples, it started generalizing well. But worth noting it still occasionally interpreted hyphens as stylistic separators rather than structured markers — especially if the rest of the context was styled with Markdown or variable delimiters.

One tip: wrap known fields with semantic flags. Like, `[brand: CAM-X4]`, `[color: GRN]` — makes pattern recognition repeatable.

6. ChatGPT ignored instructions when team included comments in prompts

A colleague helpfully dropped in a block comment explaining the SKU system right above the instructive prompt, like this:

It was in an HTML comment block inside the passed prompt field. Looked harmless. But ChatGPT tried to interpret it. Prompt completions started referencing the comment like it was part of the user’s intent. One summary included “follows a fixed code from your supplier” in plain output text. Brutal.

The model saw the comment and basically fused it with the functional logic even though it was intended as developer-side metadata. We had to clear out all comment-style blocks from passed data fields.

Since then, we annotate inside the webhook payload section or upstream in the Airtable Interface fields — never in the prompt body.

Hidden dev notes aren’t hidden unless they’re actually out of prompt scope. Learned that the hard way when our manager asked whether we were pushing supplier names into public metadata. Oops.

7. Embedding SKU logic into vector prompts did not actually save tokens

I tried embedding product-category logic as an inline vector embedding passed to GPT via the Zapier step + OpenAI Embeddings route. The idea was: instead of passing full examples every time, generate category logic vectors once and reuse them.

But it’s not how OpenAI actually works with prompt engineering. Embeddings can help with searching similar vectors, not reasoning from them directly inside chat completions. I misunderstood how the Zapier plugin handled embedding usage. It wasn’t passing the vector into GPT as a starter point — it was using it to match similar tags, then backing off to generic instructions for the model.

The result: vague completions like “Short description unavailable” or “Product category not found.” It always defaulted when the match confidence dipped even slightly. For token savings, I would’ve been better off just handcrafting a few more structured examples right in the prompt body than hoping vector matching would smooth over SKU weirdness.

8. Best fixes came from using Preprocess mode with reusable examples

I finally found something repeatable. Instead of using Zapier’s Formatter or relying on one wild mega-prompt, I moved all the product-normalization logic upstream into a Make.com scenario using OpenAI’s ChatGPT API directly. Key change: I added a fixed set of SKUs and outputs in the system prompt, formatted like:

"For example:\nSKU: CAM-X4-GRN-M-LNG → Title: CAM-X4 Green Medium Long Candle\nSKU: HX-WTR-BL-S → Title: HX Winter Blue Small"

Then passed in a single raw SKU at a time for new inventory updates.

This locked the context hard — the model stayed within pattern 95% of the time. Also found a weird edge case where leaving a newline \n before each example mattered — without it, the model ignored the examples 20% of the time. Still no idea why. But it works.

Also reduced retries — I was logging failed completions based on empty output fields and saw the dropout rate drop to basically zero once I enforced preexample formatting and removed all Markdown from the prompt input.