E-commerce
July 1, 2026
"What shelf life (DLC) will I have upon receipt?" "My refrigerated parcel is 24 hours late, can I eat it?" "How should I store this product once opened?" On a fresh food or meal kit shop, these questions arrive at 11:00 PM on a Sunday, when no agent is available and every hour counts.
Certainly describes the grocery agent capable of managing delivery slots, allergen substitutions, and product recalls within the same conversational thread, without redirecting to a form (Certainly, food & grocery 2026). Carti estimates that clarifying the cold chain and delivery windows reduces pre-purchase anxiety around sensitive goods (Carti, food & beverage 2026).
This guide #314 covers the perishable goods AI chatbot: storage, delivery, dates, and freshness claims. It complements perishables support (#313) with a focus on bot automation, PERISH-BOT intents, and food safety guardrails, which are absent from general chatbot articles.
Summary
Why can't a perishable bot respond like a fashion or electronic bot?
A generic bot quotes the 30-day return policy. A perishable goods bot must distinguish between use-by and best-before dates, estimate a freshness buffer after carrier delay, and refuse to guarantee that a lukewarm yogurt is "probably fine".
Three risks of a poorly configured bot
Health hallucination: inventing a use-by date, playing down a warmed-up package
Pre-purchase over-promising: exact date of unknown batch before FEFO picking
Post-purchase under-reaction: directing to email when the complaint window is 24 hours
2026 Agent Opportunity
Digiqt describes food supply chain agents capable of proposing substitutions with real-time shelf life and allergen data (Digiqt, food supply chain 2026). In DTC, the bot reads PERISH-POLICY (#313), Shopify metafields, and carrier tracking: it acts, not just informs.
Principle #314
FRESH-DISPLAY Matrix: each freshness data point = public PDP tier, authenticated post-purchase, or never customer-facing. The bot quotes the corpus, never its intuition.
How does it differ from After-Sales Service #313, traceability #312, and generic post-purchase?
Five neighboring pieces of content, five levels of automation.
Perishables support (#313)
Perishables support (#313): PERISH-INTENT, PERISH macros, human PERISH-CLAIM workflow. The #314 orchestrates the bot: routing intents, auto refund, contextualized delay notifications.
Bot traceability (#312)
Traceability (#312): batch lookup, recall, DPP. The #314 consumes trace_batch_order and trace_recall_check for freshness intents.
Automated post-purchase
Post-purchase: generic WISMO. The #314 replaces "in transit" with "refrigerated box, estimated freshness margin X h" (WISMOlabs 2026).
Returns bot (#10)
Returns bot: return label. The #314: refund without return spoilage via PERISH-CLAIM photo upload.
Product questions (#3)
Product questions: pre-purchase objections. The #314 adds cold classes, shelf life range, post-opening preservation.
Promise #314
PERISH-BOT-INTENT, FRESH-DISPLAY, prompt PERISH-BOT-01, delay/spoilage flows, guardrails, freshness bot KPI.
What PERISH-BOT-INTENT mapping should be used to route the freshness chatbot?
The PERISH-BOT-INTENT taxonomy maps the 16 #313 intents to executable bot actions.
12 high-priority bot intents
bot_perish_pre_fresh: shelf-life window upon receipt, PDP cold classbot_perish_storage: storage, freezing, duration once openedbot_perish_ddm_educate: explain best before date vs use-by date without medical advicebot_perish_shipping_window: slots, zones, weekend restrictionbot_perish_delay_status: delay + freshness margin + next updatebot_perish_temp_alert: warm package reported → proof flow + refund/reshipbot_perish_dlc_order: auth → actual batch use-by date of the orderbot_perish_spoilage_claim: photoupload → PERISH-CLAIM autobot_perish_partial_refund: one damaged item in a multi-SKU cartbot_perish_recall: delegates trace_recall_check #312bot_perish_sub_fresh: delivery quality for recurring subscriptionsbot_perish_handoff: food poisoning, press, amount > threshold, 3rd claim in 90 days
Routing priority
bot_perish_recall and bot_perish_temp_alert > bot_perish_spoilage_claim > bot_perish_delay_status > bot_perish_pre_fresh. An active dispute intent blocks any proactive product suggestions.
Mapping chips → intent
"How fresh is it?" → bot_perish_pre_fresh. "Delayed package" → bot_perish_delay_status. "Damaged product" → bot_perish_spoilage_claim. "How to store it?" → bot_perish_storage. "Is my batch recalled?" → bot_perish_recall.
How to build the FRESH-DISPLAY matrix: public, auth, internal?
The FRESH-DISPLAY matrix defines what the bot displays depending on the session context, modeled after TRACE-DISPLAY (#312).
Tier A: public (PDP, anonymous visitor)
Product class: ambient / refrigerated / frozen / heat-sensitive
Shelflife (DLC) range upon receipt (e.g. minimum 5 days before DLC)
Closed storage instructions (temperature, consume within X days after opening)
Promised delivery window (D+1-D+2, no Sunday delivery)
Summary of complaints policy (24 hours, photo, no physical return)
Tier B: post-purchase auth (OTP or logged-in)
DLC/DDM of the batch shipped on order #{order}
Tracking status + calculated freshness margin in case of delay
Upload link for PERISH-CLAIM
Batch recall status if applicable (#312)
Tier C: never customer
Warehouse stock by batch, FEFO cost, internal QA notes
Raw IoT temperature without policy interpretation
INCO Regulation: DLC can be communicated at the latest upon delivery; the Tier A bot announces the range, Tier B the actual batch date (Economie.gouv, labeling 2026).
Which Shopify metafields and corpus feed the perishable bot?
The freshness bot corpus combines PERISH-POLICY (#313) and Shopify structured data.
Product Metafields
perish_class: ambient | refrigerated | frozen | ultra_fresh | heat_sensitivemin_dlc_days_ship: minimum days at receptionstorage_closed_json: temp, duration, freezing yes/nostorage_open_json: duration after opening, containershipping_zones_perish: authorized zip codes or regionsallergens_structured: 14 INCO allergens
Order Metafields
batch_dlc,batch_codeper line itempacked_at,cold_pack_countcarrier_etasync webhook
Corpus Pages
PERISH-POLICY Notion export, /pages/fraicheur-livraison, macros PERISH-001 to 010. Index via Shopify bot training. StoreAgent: bot reads catalog + policies for contextual F&B answers (StoreAgent 2026).
Weekly Corpus Sync Workflow
Export perish_* metafields from Shopify
Diff vs PERISH-POLICY Notion (DLC thresholds, claim windows)
Re-index bot if > 5 SKU modified
Test 5 bot_perish_storage questions on modified SKU
How to configure pre-purchase retention and delivery bot flows?
The pre-purchase bot flows resolve objections blocking the fresh shopping cart.
Flow bot_perish_pre_fresh
PDP Context: SKU + perish_class
Display min_dlc_days_ship + "exact date known after order preparation"
Propose time slot or zone: bot_perish_shipping_window
Allergen pill if cross-referenced with composition question
Flow bot_perish_storage
Read storage_closed_json + storage_open_json. Copy style: "Store between 0 and 4 °C. After opening, consume within 48 hours. Freezing not recommended." Never "safe" if outside the corpus.
Flow bot_perish_ddm_educate
Public Service: Use-by date (DLC) = health risk if exceeded; Best-before date (DDM) = indicative quality (Service Public, DLC/DDM 2026). Bot cites policy definition, handoff if customer describes symptoms.
PDP Chips
"What freshness upon receipt?", "How to store?", "Refrigerated delivery?", "What to do if package is delayed?". Carti: perishable shipping answers reduce pre-purchase abandonment (Carti 2026).
How to manage delivery delays and temperature alerts in conversation?
The delay flow bot replaces the generic WISMO with a product-oriented response.
flow bot_perish_delay_status
Lookup order auth → line items perish_class
Carrier API → delay hours vs packed_at
Margin calculation: refrigerated +24 h = "estimated margin 12 h, monitor receipt before tomorrow 6 p.m."
Offer reship or refund if delay > PERISH-POLICY threshold (#313)
Schedule proactive update if carrier scan changes
flow bot_perish_temp_alert
Packaging + product + thermometer photos if provided. If frozen and ice melted → auto refund if < policy threshold. Otherwise handoff to QA. Wonderchat: immediate escalation if active excursion (Wonderchat, cold chain 2026).
Proactive trigger
Webhook carrier delay > 24 h on refrigerated order → bot message before customer ticket. WISMOlabs: clear communication reduces fear-based refunds (WISMOlabs 2026).
Example of bot freshness margin calculation
Refrigerated meal kit order, packed_at Monday 8 a.m., batch expiry date Thursday, carrier delay +26 h. Bot calculates: "Remaining margin approximately 22 h after estimated delivery Tuesday 10 a.m. If received after Tuesday 6 p.m., contact us for replacement." PERISH-POLICY thresholds (#313) trigger automatic reship if margin < 6 h.
How to structure PERISH-BOT-01, guardrails, and automated PERISH-CLAIM?
System block PERISH-BOT-01 350-450 words, extension bot instructions (#163).
Prompt blocks
Role: freshness and delivery guide, not a dietitian or doctor
FRESH-DISPLAY: Tier A/B/C section 4
Corpus: PERISH-POLICY + metafields perish_* + macros PERISH
Use-by date/Best-before date: French Public Service definitions, no edible claims outside the policy
Delay: freshness margin + action, never vague reassurance
Recall: redirect bot_perish_recall → #312 immediate
Handoff: health symptoms, amount > threshold, 3 claims in 90 days
Bot prohibitions
Medical advice. Guaranteeing safety of lukewarm product without policy. Promising exact use-by date pre-purchase. Requesting physical return of spoiled food. Inventing allergen absent from INCO corpus.
Flow bot_perish_spoilage_claim
Auth order + postal code
Check PERISH-POLICY window
Upload 3 photos (product, packaging, use-by date label)
Lookup batch_dlc + carrier timeline
Refund Shopify API if < auto threshold, otherwise handoff
Macro PERISH-007: no physical return
Flow bot_perish_dlc_order post-auth: "Order #{order}, {product}: Best before {batch_dlc}." Integration traceability (#312) for recall.
Typical bot copy by intent
bot_perish_pre_fresh: "We ship this cheese with a minimum of 7 days before the 'Use-by' date. The exact date of your batch will be visible on the label received."
bot_perish_delay_status: "Your refrigerated package is delayed by 18 hours. Estimated freshness margin: 14 hours after delivery. Next update tomorrow at 9 AM."
bot_perish_spoilage_claim: "Send 3 photos within 24 hours. No need to return the product. Refund within 4 hours if eligible."
What bot settings by vertical: meal kits, cheese, pet food and chocolate?
The perishable bot adapts chips, thresholds, and copy according to the vertical.
Refrigerated meal kits
Intents: bot_perish_storage (D+0/D+1), bot_perish_partial_damage (punctured bag). Delay > 24 h: auto reship menu. Chips: "Can I eat it tomorrow?"
Cheese shop / delicatessen
bot_perish_dlc_order critical. ultra_fresh: handoff if DLC < min_dlc_days_ship. Cross-reference provenance (#311).
Fresh pet food
bot_perish_sub_fresh on subscription: compare batch quality 1 vs batch 3. Link subscription support.
Heat-sensitive chocolate
Summer: bot_perish_shipping_window blocks hot zones. bloom = standard partial refund via bot_perish_temp_alert.
Live flowers
bot_perish_delay_status SLA 12 h. storage_open = vase, water, room temperature. No food expiry date.
Certainly: grocery agent handles slots and allergen substitutions without a ticket (Certainly 2026).
Which KPIs should be measured for the perishable products bot?
Measure bot deflection and resolution quality, not message volume alone.
Monthly KPIs
perish_bot_deflection: PERISH-BOT intents resolved without human / total perishable intents
pre_purchase_fresh_cvr: post bot_perish_pre_fresh orders / freshness chip sessions
delay_proactive_rate: delays > 24 h contacted by bot before customer ticket
spoilage_auto_refund_rate: PERISH-CLAIM bot / spoilage claims
perish_handoff_rate: escalations / conversations (target < 15% if full corpus)
fresh_csat_bot: CSAT post perishable intents resolution
hallucination_audit_fail: sample QA review, out-of-corpus responses
Weekly Review
If perish_handoff_rate goes up on bot_perish_storage: enrich storage metafields. If delay_proactive_rate is low: activate carrier webhooks. Align KPIs with Chatbot KPIs (#11).
How does Qstomy deploy preservation, delivery, and PERISH-CLAIM in a bot?
Qstomy executes PERISH-BOT-INTENT, reads Shopify freshness metafields, and triggers refunds without returns when PERISH-POLICY allows it.
Capabilities
PDP freshness chips + bot_perish_pre_fresh routing
Contextualized carrier delay + calculated freshness margin
Spoilage upload + auto-refund configurable threshold
Batch shelf-life lookup post-auth + lien #312 recall
Batch case handoff + timeline for QA
Sync PERISH macros (#313) word-for-word
DTC Case Study in Numbers
DTC online cheese shop, 1,800 refrigerated orders/month. Before Qstomy: 420 freshness tickets/month, perish_bot_deflection 19%, pre_purchase_fresh_cvr chip 12%. After PERISH-BOT-01 + FRESH-DISPLAY + PERISH-CLAIM bot: tickets 240/month, deflection 68%, fresh_cvr chip 21%, mean_time_perish_resolution 2.1 h (vs 9 h human).
See AI support, sales agent, Shopify, demo.
Which playbooks to use to deploy the ephemeral bot in four weeks?
Playbook 1: freshness chat intents audit (4 h)
Export "DLC" (expiry date), "fresh", "lukewarm", "storage", "delay" conversations over 90 days. Map PERISH-BOT-INTENT section 3. Top 6 intents = priority flows.
Playbook 2: FRESH-DISPLAY + metafields (1 day)
Fill in Tier A/B/C section 4. Sync perish_class, min_dlc_days_ship, storage_* on fresh SKUs. Publish PERISH-POLICY corpus (#313).
Playbook 3: prompt PERISH-BOT-01 + guardrails (4 h)
Draft 7 blocks section 8. Test 30 questions including 10 trick questions (lukewarm parcel, expired DLC, symptoms). Zero hallucination_audit_fail.
Playbook 4: delay flows + PERISH-CLAIM (1 day)
Carrier webhook → bot_perish_delay_status. Photo upload + auto Shopify refund. Mystery shop spoilage: resolution < 5 min bot.
Playbook 5: PDP chips + vertical QA (3 h)
Activate 4 chips section 6 by vertical. Mobile test meal kit, cheese, summer chocolate.
Useful links
This week: open your chat and ask "What DLC upon receipt?" on a refrigerated SKU. If the response is generic, playbook 1 confirms that #314 is your bot priority.

Enzo
July 1, 2026





