You have six weeks before Diwali, a spreadsheet of SKUs and a founder who wants "a 30 percent sale". Before anyone writes a single banner, you need two things: a calendar with dates you've actually checked, and a margin calculation that tells you whether 30 percent loses money. AI is useful for the first as a structuring tool and for the second as a way to write the calculator, not to do the arithmetic from memory.
This post gives you a festive season campaign planner for an Indian D2C brand: a calendar prompt, a small Python offer calculator I ran on 2026-10-09 (output pasted below), and an inventory check prompt. The example numbers are made up. Replace them with yours.
Which festive dates should you plan around in 2026?
Get the dates from a panchang or a source you trust, then give them to the model. Don't let it supply them. I searched on 2026-10-09 and the pages I found mostly agreed on the following, but they are third-party calendars and some disagreed with each other:
| Moment | Date found in most sources | Caveat |
|---|---|---|
| Karwa Chauth | Thu, 29 Oct 2026 | Moonrise time varies by city |
| Dhanteras | Fri, 6 Nov 2026 | Check your regional panchang |
| Choti Diwali | Sat, 7 Nov 2026 | |
| Diwali / Lakshmi Puja | Sun, 8 Nov 2026 | Two pages listed October dates and looked like stale templates |
| Govardhan Puja | Mon 9 or Tue 10 Nov 2026 | Sources split; some apply a sunrise rule |
| Bhai Dooj | Tue 10 or Wed 11 Nov 2026 | Sources split between the two |
Navratri and Dussehra dates in October 2026 came from a single source in my search, so I'm not listing them as confirmed. Festival dates also shift by a day depending on the tradition and city. Treat this table as a starting point and check a local panchang.
Wedding-season dates (muhurat days) vary by region and tradition; I did not verify any, so the prompt below makes you supply them.
How do you prompt AI for a festive campaign calendar?
Give it your dates, your constraints and your inventory, and ask for a plan in a fixed format. Untested template:
You are a campaign planner for [BRAND], a D2C brand selling [CATEGORY]
in India. Today is [DATE].
INPUTS (use only these; do not add dates or numbers of your own):
- Key dates I have confirmed: [LIST WITH DATES]
- Last day we can ship to metro cities and still deliver before each date,
per our courier: [DATES]
- Last day for non-metro: [DATES]
- Hero SKUs and stock on hand: [TABLE]
- Offers already approved (type, value, SKUs, dates): [LIST]
- Channels we use: [email / WhatsApp / Instagram / Meta ads / Google ads]
- Weekly marketing budget: [Rs. AMOUNT]
TASK: Produce a week-by-week plan from today to the day after the last date.
For each week give: theme, what we announce, which approved offer runs,
which channel carries it, one message draft per channel (max 60 words),
and the decision I must make that week.
RULES:
- If an input is missing, list it under OPEN QUESTIONS instead of guessing.
- Do not invent discounts, deadlines or stock levels.
- Flag any week where shipping cutoffs make a promised delivery date unsafe.
The "OPEN QUESTIONS" rule matters. Without it the model fills gaps with confident-sounding dates. For the actual message copy, the flow prompts in our email and SMS prompts post already handle the "only the offer I give you" rule, so reuse that header rather than writing a new one.
What discount can you afford? Run the numbers
A percent-off banner is a bet that extra orders will cover the lost margin. The question to answer is: how many times more orders do I need for the offer to earn at least as much contribution as no offer? This is a calculator, so I wrote one and ran it rather than asking a chatbot to do the maths.
Assumptions in the script, all labelled as examples: list price Rs. 1,499 including GST, GST at 5 percent (check the rate for your own product; it varies by category), product cost Rs. 420, outbound shipping Rs. 70, packaging Rs. 25, gateway fee 2 percent plus 18 percent GST on the fee (Razorpay's pricing page, as summarised on 2026-10-09, lists 2 percent on UPI, cards and netbanking plus 18 percent GST on the fee; see our Shopify payments post; your rate may differ), half of orders prepaid, 20 percent of COD orders returned to origin. For an RTO the parcel returns to stock, so the script loses outbound freight, return freight (assumed equal to outbound) and packaging, but not the product. It ignores ad spend, discount code stacking, payment-failure retries, and the cost of money while COD cash is in transit.
def unit(price_incl_gst, gst_rate, cogs, ship, pack, gateway_pct,
gateway_gst, discount_pct, prepaid_share, rto_cod, cod_fee):
sell = price_incl_gst * (1 - discount_pct / 100)
net = sell / (1 + gst_rate / 100)
gw = sell * gateway_pct / 100 * (1 + gateway_gst / 100)
prepaid = net - cogs - ship - pack - gw
cod_ok = net - cogs - ship - pack - cod_fee
cod_rto = -(ship * 2 + pack)
cod = (1 - rto_cod) * cod_ok + rto_cod * cod_rto
blended = prepaid_share * prepaid + (1 - prepaid_share) * cod
return blended
base = unit(1499, 5, 420, 70, 25, 2.0, 18, 0, 0.5, 0.20, 0)
for d in (0, 10, 15, 20, 25, 30, 35, 40):
b = unit(1499, 5, 420, 70, 25, 2.0, 18, d, 0.5, 0.20, 0)
print(d, round(b, 2), round(base / b, 2))
Output from my run of the full version of this script:
disc% sell blended/order breakeven order multiplier
0 1499 787.17 1.00x
10 1349 660.45 1.19x
15 1274 597.09 1.32x
20 1199 533.74 1.47x
25 1124 470.38 1.67x
30 1049 407.02 1.93x
35 974 343.66 2.29x
40 899 280.30 2.81x
Sensitivity at 25% off: COD RTO rate vs blended contribution
RTO 10%: 506.41
RTO 20%: 470.38
RTO 30%: 434.34
RTO 40%: 398.31
Read it like this: with these made-up inputs, the full-price order earns about Rs. 787. At 30 percent off it earns about Rs. 407, so you need roughly 1.93 times as many orders to earn the same total. That's not a prediction that you will get them. It's the bar your campaign has to clear, and it's a reason to ask whether a 15 percent offer plus a free gift (check what the gift costs you) is cheaper than 30 percent.
The RTO table shows the other lever. Going from 10 to 40 percent COD returns at 25 percent off cuts contribution from about Rs. 506 to Rs. 398. A festive sale often shifts your payment mix toward COD, so the RTO rate you assume matters as much as the discount. Our COD vs prepaid messaging post covers that side, with the caveat that the evidence for any lever is thin.
Take the same function, put your SKU costs in a CSV, and run it per SKU. Ask the model to write the CSV loop, then run it yourself:
Write a Python script that reads skus.csv with columns
sku, price_incl_gst, gst_rate, cogs, ship, pack, stock
and, for discounts 0 to 40 in steps of 5, prints blended contribution per
order and the breakeven order multiplier, using the unit() function below.
Mark any SKU/discount pair where contribution is negative. Do not change
the formula. [PASTE unit() FROM ABOVE]
Have a person check the formula against one order in a spreadsheet before you trust the loop.
How do you check inventory against the plan?
The cheapest festive mistake is promoting stock you don't have. Once the calculator has told you which offers are affordable, check them against stock and lead times. Untested template:
Given this table (sku, stock_on_hand, units_sold_last_28_days, supplier_lead_time_days)
and this plan (sku, offer, start_date, end_date), do the following without
estimating anything I did not give you:
1. For each SKU compute days of cover = stock_on_hand / (units_sold_last_28_days / 28).
2. List SKUs where cover is less than the days the offer runs, and say the
plan is unsafe for them.
3. List SKUs where lead time is longer than the days until end_date, so they
cannot be restocked in time.
4. Suggest, as options, whether to cap quantity, swap the hero SKU, or
pause the offer. Do not choose for me.
Last-28-days sales is a poor proxy for a festive spike. The model can't fix that, so apply your own multiplier from last year's data if you have it, and say where it came from. Our AI agents for Indian e-commerce post has the Shopify API side if you want stock pulled automatically.
What should a pre-launch checklist include?
Before any festive offer goes live, check:
- Offer terms in the store match the banner exactly: code, minimum order, expiry, exclusions.
- Discount stacking: can the code combine with an automatic discount? Test with a real cart.
- Courier cutoffs are published on the site if you promise delivery before a date.
- COD policy for the sale (limits, fees, confirmation) is decided and communicated.
- Support has the returns and exchange wording ready; see AI customer support prompts for Shopify.
- Ad creative claims are things you can substantiate; see AI ad creative prompts for Meta and Google.
- Someone owns the stop button: who ends the offer if stock runs out?
What I'd skip
Skip fake countdown timers and "only 3 left" copy unless the number is real. Skip site-wide percent-off if the calculator shows your top sellers go negative. And don't treat the calendar prompt's output as a plan until every date in it has a source you can point to. I haven't run these prompts on a live model; the Python and its output are the only things in this post I executed.



