Build the product catalog for a WhatsApp AI agent from the dashboard, click by click: price, sizes, stock and photo, so the agent quotes what you entered.
Your agent does not know what anything costs until you tell it. The catalog is
where you tell it: a product, a price, its sizes, its photo. That is where it
takes the numbers from when the customer asks “how much is it?”.This guide is the full walkthrough from the screen, click by click. The examples
use a made-up clothing store, Moda Sol, and its star product: the Polo
oversize de algodón pima.
Where it is. Go into the dashboard at
optimind.darkfunnels.ai and, in the left-hand
menu, inside the Ventas (“Sales”) row, press Catálogo (“Catalog”). (If
you prefer to go straight there, type optimind.darkfunnels.ai/catalog into the
browser bar. The old address, /catalogo, takes you to the new one on its own.)
This is what the Catalog looks like on day one: «No products yet» and an orange button at the top right.
The dashboard interface is in Spanish, so buttons and labels are given here in
English with the Spanish wording you will actually see in parentheses.
The screen itself sums it up under the title: “Your products, synced from your
store or created by hand. The price comes from here; the agent never makes it
up.” (If you have more than one agent that sentence changes, and it warns you
that the list is trimmed to the agent you have open.)That is literal: the agent carries a written instruction to look the catalog up
every time the customer asks about a product or its price, and not to make
prices up. The practical consequence is simple: what is not in the catalog is
what your agent does not know how to quote.
Loading it is all you have to do. There is no need to link the product to
the sales playbook, or to name it in any chapter, or to switch anything else on.
As soon as you save it, the agent can already find it and offer it. Two honest
caveats: changes can take up to a minute to reach a conversation that is
already under way, and if you tick specific sales funnels on the product, the
rest stop seeing it (told in
Visible and Active are not the same).
It is at the top right, in orange, next to another button called CSV
template (Plantilla CSV). With the catalog empty you also have the same
button in the middle of the screen, under “No products yet”.No new page opens. A panel slides in from the right-hand side, top to
bottom, over the dimmed background. It is titled New product (Nuevo
producto) — and Edit product (Editar producto) when you open one that
already exists. Do not look for a “back” button: there is none, it closes
with Close (Cerrar) or Cancel (Cancelar).
2
Choose what you are going to sell
The first and only thing you will see is the heading “What are you going to
sell?” (“¿Qué vas a vender?”) with three cards: Physical product
(Producto físico), Service (Servicio) and Info product
(Infoproducto). Until you choose one, the rest of the form does not exist
and the Save (Guardar) button is off: it will not let you press it.For the Moda Sol polo shirt: Physical product.
The panel starts by asking what you sell. Each card tells you what the agent will do if you choose it.
3
Give it a name and describe how it is sold
Once the type is chosen the whole form unfolds. In Title and description
(Título y descripción) there is only one field with an asterisk: Name
* (Nombre *). Type Polo oversize de algodón pima.The Description (Descripción) is optional, but it is not decorative:
the field says so — “Details the agent can use when selling.” — and it is
text the agent reads when it finds the product. It reaches the agent
trimmed to around 240 characters, so put what sells in the first lines:
“Peruvian pima cotton, unisex oversize cut. Machine washable. Shipping
anywhere in Peru.”
The name is what the customer has to be able to say. The agent searches
by the product name and by the name or the code of its variants — it does
not search inside the description. Putting “polo”, “camiseta” and “remera”
only in the description does not help it find the product: put them in the
name.
4
Upload the photos
In Media (Medios), drag the images in or press where it says “Drag or
click to upload” (“Arrastra o haz clic para subir”). Underneath it reads
“PNG, JPG or WEBP. The first image is the main one.” — that is a
recommendation, not a filter: the system accepts any image file, so a GIF
or a HEIC also gets in.The first photo carries the Main (Principal) label; the others are
removed with the ×. They cannot be reordered by dragging: to change
the main one you have to remove the ones in front of it.
The photos are the only thing in this panel that does not wait for the save
button. They are uploaded on the spot, and removing one deletes it from
storage at that same moment. If you upload a photo and then cancel the
product, the photo has already been uploaded. If you remove a photo and then
cancel, the photo really has already been deleted — and on a product that
already existed, its record is left pointing at a file that is no longer
there until you save it again.
The form for a physical product: Type, Title and description, Media and Prices.
5
Set the price
In Prices (Precios) there are two fields: Price * (Precio *)
and the currency. The currency has only two options — “PEN (S/)” and “USD
($)” — and comes set to PEN. From this screen there are no other
currencies.For the polo shirt: 79 and PEN (S/). If you leave the price empty or type
something that is not a number, on saving you get “Enter a valid price.”
(“Pon un precio válido.”)Underneath you will see the Quantity pricing (Precios por cantidad)
switch. Leave it off for now: we look at it in
its own section.
6
Decide whether you keep count of stock
In Inventory (Inventario) there is a Track stock (Controlar
stock) switch and a SKU field (with the example XL-25). Turn it on
only if you really want the agent to stop offering what has run out — it
explains it right there: “The agent warns when something runs out and does
not offer what you do not have.”
Quantities are not typed here. When you turn on Track stock,
Available quantity (Cantidad disponible) appears, but it is
read-only: it will not let you type. Underneath, the panel itself says so
— “Inventory handles it. To move it, record a movement in Inventory” —
with a link to that screen. It is the most common confusion in this form.
7
Add sizes and colors, if you have them
On a physical product the block is called Variants (Variantes) and
comes with the Generate variants from options (Generar variantes por
opciones) button: you give it the axes (Color: black, white, sand / Size: S,
M, L, XL) and it creates the combinations for you in one click, with an
automatic SKU (SKU automático) if you ask for it. It takes up to 3
axes and 100 combinations.The Variants section tells the whole story.
The bottom half of the panel: Inventory with its SKU, the Variants and Availability.
8
Save — and check that it turned up in the table
The last block is Availability (Disponibilidad), with Visible in the
catalog and Active switched on. Leave them like that and press
Save.The product appears at the very top of the table, with its columns:
producto, sku, precio, inventario, embudos, visible, origen (“product, sku,
price, inventory, funnels, visible, source”) and a last one with the actions.
The saved product, with its columns. The «inventario» column says «Sin control» (Not tracked) when you do not track it.
Closing the panel throws away everything you typed, with no warning. It
makes no difference whether you press Close at the top, Cancel at the
bottom, or click outside the panel, on the dark area: there is no
confirmation and no saved draft. The only thing that keeps your work is
Save.
The type is not a label: it changes which fields you see and what the agent
does afterwards. Each card tells you so when you choose it.
Type
What the card says
What changes in the form
Physical product (Producto físico)
“The agent quotes shipping and generates the waybill.”
A Variants block, with the size and color generator.
Service (Servicio)
“The agent sells it and arranges it over chat. It does not generate shipping.”
The block is called Modalidades (“Service options”): it asks for the name and price of each option.
Info product (Infoproducto)
“Its delivery is digital: it is delivered on its own, as soon as payment is confirmed.”
It has no variants block. Instead, Automatic delivery (Entrega automática) appears.
The stock-tracking notice changes too: on a physical product it talks about
stock on hand, on a service about available slots (cupos disponibles)
(“The agent does not offer what has run out.”) and on an info product about
limited licenses or accesses. So “stock” here is not just boxes in a
warehouse.
Changing the type of a product that already exists does not delete anything
straight away. The panel itself says: “Changing the type hides what no longer
applies. Nothing is deleted until you save.” If the change is going to remove
data — turning a product that has several variants into an info product, for
example — saving asks you for a two-step confirmation with the Convert and
save (Convertir y guardar) button.
If you sell a course or an ebook: “Automatic delivery”
On an info product a block appears that is not in the other two, and it explains
on its own what it is for: “When payment is confirmed (voucher approved), the
agent sends this to the customer without you doing anything.” You have two
options:
A file from the Library — only the files already marked as sendable for the
agent you have open are offered. They are prepared in
The file Library.
A link — it has to start with http:// or https://.
If you save with neither of the two, the product is saved anyway, but the
panel warns you: “Careful: with no file and no link, the agent will not be able
to deliver it on its own.” And in the list, that product is marked under its
name as “Infoproducto · ⚠️ sin entrega” (“Info product · ⚠️ no delivery”). It
is worth fixing: otherwise the agent can charge for something it then does not
know how to deliver.
Once the type is chosen, the panel shows seven blocks. Six are always the
same; the seventh depends on the type and sits between Inventory and
Availability.
Order
Block
What it is for
1
Type (Tipo)
What you sell. It is chosen first and it conditions the rest.
2
Title and description (Título y descripción)
The name (required) and the text the agent uses when selling.
3
Media (Medios)
The photos.
4
Prices (Precios)
Price, currency and the quantity scale.
5
Inventory (Inventario)
The stock-tracking switch and the SKU.
6
Variants / Modalidades / Automatic delivery
Depending on the type. The info product has no variants.
7
Availability (Disponibilidad)
Visible, Active and — if you have more than one agent — which sales funnels sell it.
Name *. If it is missing: “Name is required.” (“El nombre es
obligatorio.”)
Price *. If it is empty or not a number: “Enter a valid price.”
Everything else — description, photos, SKU, variants, stock, sales funnels — is
optional and can be filled in later.
With “Quantity pricing” on, the required price moves. The field at the top is
locked and the one you have to fill in becomes the 1 unit row of the scale.
The warning changes too: it will talk to you about the price for 1 unit, not
about “Enter a valid price”.
Do not leave products with a price of 0. They are saved without complaint,
but afterwards they do not appear in the product dropdown when you record a
sale or an order by hand: that dropdown only brings in active products whose
variants cost more than zero.
It is the most powerful feature on this screen and the least obvious. Turn on
Quantity pricing (Precios por cantidad) and you declare the exact total
price for each quantity, not a percentage discount:
Quantity
Total price
1
S/ 79
2
S/ 149
3
S/ 209
Rows are added with + Add tier (+ Añadir tramo). And with + From N and
up (price per unit) (+ De N a más (precio por unidad)) you define the open
tier: from 6 and up, S/ 65 each.
The moment you turn it on, the “Price” field at the top is locked and it is
renamed Price (1 unit, from the scale) (Precio (1 unidad, de la escala)).
It is not a fault: the price is now typed into the 1-unit row of the table.
For the quantities that are not on your scale, the agent combines tiers and
adds them up. If the customer asks for 10 polo shirts and your scale goes up to
3, it charges 3 + 3 + 3 + 1. If you prefer a clean per-unit price from a certain
quantity onwards, define the open From N and up tier.There is also a Promotion with an end date (Promoción con fecha de fin),
with the Valid until (Vigente hasta) field. While it is in force, that
price overrides the list scale in the conversation.
The promotion does not travel to the WhatsApp catalog. In the catalog
WhatsApp shows on your business profile, the list price for 1 unit is always
published, never the promotional one. It is on purpose: if the promo were
published, it would stay stuck there once it expired. In the chat, the promotion
does apply.
The scale is only removed from this panel. Leaving its cell blank in the CSV
file does not delete it: it leaves it as it was.
Moda Sol sells the same polo shirt in 3 colors and 4 sizes. That is 12
variants, and there is no need to type them one by one.
1
Press «Generate variants from options»
It is in the Variants (Variantes) block.
2
Declare the axes
Color: black, white, sand. Size: S, M, L, XL. You can use up to 3
axes (color, size and, for example, sleeve).
3
Generate
The 12 combinations come out in one click. Tick Automatic SKU (SKU
automático) and each one is born with its code. The cap is 100
combinations per product.
4
Adjust the prices that fall outside the norm
Each row carries its own price. If the XL costs S/ 10 more, it is changed
there.
The moment the product has several variants, the “Price” and the “SKU” at the
top stop being in charge. Each variant keeps its own, and what you type at the
top is not saved: it only serves as the base price when generating the matrix.
When you reopen the product, that field at the top shows you the cheapest of
its variants.If you change the price at the top and swear it did not save, this is why.
Change the price on the variant’s row.
On a service they are called “Modalidades” and they are the same thing under
another name: Express consultation, Full consultation, Package of 4
sessions. They ask for a name and a price. The Slots (Cupos) are shown but
not typed — same as stock, Inventory handles them. An info product does not have
this block: a single presentation.
Turn on “Track stock” only if you are going to record the movements. If you
turn it on and never load any stock, the agent will believe you have none left.
What you see in the inventario column
What it means
A number
You are tracking and you have that many units left.
Agotado (“Out of stock”)
You are tracking and you are at zero: it reaches the agent marked as out of stock, with the instruction not to promise it.
Sin control (“Not tracked”)
You are not keeping count. The agent can offer it without looking at stock.
With tracking on and stock at zero, that variant reaches the agent marked as
out of stock and with the instruction not to promise it — which is what the
screen sums up as “The agent warns when something runs out and does not offer
what you do not have.” With tracking off there is nothing that can run out: it
is the right option for a service you can provide with no cap on slots, or for a
product you make to order.Quantities are moved on the Inventory screen, by recording a movement. From
the catalog you only declare whether the product is tracked.
That list only appears if your business has more than one agent. If you have
one, you will not even see it. And the rule is not the one it looks like: “With
none ticked, every sales funnel quotes it.” — ticking nothing means “all”,
not “none”.
It is an organizing rule, not a security barrier. It is there so that your
wholesale agent does not quote the retailer’s products. But do not use it to
hide sensitive information: if the system cannot read the assignments, it opens
up instead of closing down, and the agent sees everything.
The sales funnels are saved in a second step, after the product. If that step
fails you will see “The product was saved, but the sales funnels were not”: the
product is fine; reopen it and tick them again.And if on saving you take the product away from the agent you have open, it
warns you — “The open sales funnel no longer sells it: it drops out of this
list.” — and it disappears from the table. It has not been deleted: it
stopped belonging to that sales funnel.
With more than one agent, the list you see is trimmed./catalog shows what
the agent you have selected in the top bar sells, plus whatever is not assigned
to any of them. The counter at the foot (“Showing N of M products”) counts
already trimmed, and the CSV template you download will come out trimmed the
same way. Before concluding that you lost products, switch agents in that
selector.
To load a hundred products, or to raise the price of a whole season, the
one-by-one form is no use. The CSV template (Plantilla CSV) button (next to
“Add product”) opens the “Bulk-edit catalog (CSV)” (“Editar catálogo en
bloque (CSV)”) box, with two numbered steps.
The «Bulk-edit catalog (CSV)» box: first you download, you edit in your spreadsheet, and then you upload.
1
Download the template
Download template (.csv) (Descargar plantilla (.csv)) button. It
downloads a file with your current products, which you can open in Excel or
in Google Sheets.Watch what it brings: only your own products (the ones synced from a
store do not come out) and only those of the agent you have open.
2
Edit it in your spreadsheet
Change what you need and save as CSV.
3
Upload it
Choose CSV file (Elegir archivo CSV) and then Apply changes
(Aplicar cambios). The cap is 500 products per upload.
A row with an id updates the product that already exists.
A row without an id creates a new one… unless it repeats the handle of
a product that is already there, and then it overwrites it.
A product that is not in the file is not touched. Deleting a product row
does not delete the product.
But removing a variant’s row does delete that variant from the product.
What is in charge is the “handle” column, not the name. It is the grouping
key that the template comes with already filled in (something like
polo-oversize-de-algodon-pima- followed by a long code). If you copy a whole
row to create a variation of the polo shirt and leave the handle the same, you
wipe out the original product in silence.To really create: leave the id empty and put in a handle that does not
exist. A row without a handle is not accepted — the file rejects it with “The
handle (grouping key) is missing.”From the Add product button this does not happen: two products with the same
name created there are two different products.
Two columns that do not do what they look like.Photos are not edited by
CSV (only from the product editor), and the stock quantity is exported but
ignored on import: you can write “40” in the sheet, upload it, and nothing will
happen and you will see no error. Stock is moved in Inventory.
In the file
What it is
id
The product identifier. With an id, it updates; without an id, it creates.
handle
The grouping key. It is the one that decides what gets overwritten.
price_tiers
The quantity pricing scale. Leaving it blank does not delete it.
From the dashboard, it is the only route for duplicating a product. The
screen does not know how to clone: there is no “Duplicate” button. The real route
is to download the template, copy the product’s row, delete its id and change
its handle, and upload it again.
When the customer asks about a product or its price, the agent searches the
catalog and answers with what it finds. It searches by the product name and
by the name or the code (SKU) of its variants. Useful things to know:
It does not search inside the description, although it does show it to the
agent (trimmed) once it has found the product.
It has to get at least half the words right. And the one- or two-letter
words — “S”, “M”, “XL” — have to stand on their own to count.
It returns at most 5 products. If you have forty similar items, the agent
will name a few, not the whole list.
The variant’s color and size help to narrow down among what it already
found, not to find something that did not match by name or by code.
Translated into a recommendation: the product name has to be the name your
customer would ask for it by.
It is the products tab WhatsApp shows inside your business profile. It fills
itself, but with conditions:
Your number has to be a WhatsApp Business account and be connected. If it
is not, nothing is published there (and the agent carries on selling over chat
all the same).
One entry is published per variant, not per product. That is why the
12-combination polo shirt appears 12 times.
Only the products that are “Active” and “Visible in the catalog” at the same
time get in, and only if they have a price and a currency.
With quantity pricing, the 1 unit list price is published, never the
promotion.
If you ticked sales funnels on the product, each number publishes its own. A
product with no sales funnels ticked — which is the normal case — is published
by all your numbers.
Deactivating or hiding also deletes it from WhatsApp. It is not left hanging
there. And do not worry: only the products DarkFunnels published are touched; the
ones you had created by hand in WhatsApp stay as they are.
In the actions column of its row, press Edit (Editar). Pressing the
row does not open anything — no row in this table is clickable — so if you
click on it and nothing happens, it is not broken: use the action.
Withdrawing a product without deleting it (the recommended way)
Tick the checkbox on its row and press Deactivate (Desactivar) in the
bar that appears at the top. The product stays in your catalog with all its
history, but the agent stops finding it.In that same bar you have the four bulk actions — Activate (Activar),
Deactivate (Desactivar), Show (Mostrar) and Hide (Ocultar)
— which are applied straight away to everything you have ticked. It is the
quick way to withdraw a whole season.
Really deleting a product
There is no trash can and no delete button inside the product panel. From
the dashboard, the only way is to tick the checkbox on the row and press
“Delete” (Eliminar) in the selection bar.
That button does not ask for confirmation and cannot be undone. One click
and the product disappears with its variants; it is not archived. The only
thing that does stop it is one of its variants having an open charge: then
the deletion bounces back with an error.An order or a sale that has already been recorded does not stop it: the
product is deleted and those records are left not knowing which variant was
sold. That is why, almost always, what you want is Deactivate, not
Delete.
Finding something in a large catalog
Two tools work: the search box “Search products…” (“Buscar
productos…”) (it searches by product name and by the SKU of its variants;
it does not search the description) and the Filter (Filtrar) button,
which opens “Filter catalog” (“Filtrar catálogo”) with three filters:
Type (Tipo), Visibility (Visibilidad) (Visible / Hidden) and
Status (Estado) (Active / Inactive).The list loads 50 at a time as you scroll down, with no page numbers, and
at the foot it says “Showing N of M products”.
Two controls on this screen do nothing today, and we would rather tell
you. The Todos · Manual · Shopify (“All · Manual · Shopify”) tabs do not
filter: switching tabs does not change what you see. And the Sort
(Ordenar) button opens its box with “Name”, “Price”, “Inventory” and
“Updated”, but the list does not change order: it always comes out from the
most recent product to the oldest (the column headers do not sort either).
Use the search box and Filter, which do work.
My products come from Shopify and it will not let me touch them
The products synced from a store are read-only. On their row you will not
see Edit but Import (Importar) (“Copy to the editable catalog”),
and they cannot be ticked with the checkbox or have their visible switch
changed either.Import them first and then edit the copy.
Who on my team can touch the catalog?
Anyone invited to your business: there are no role permissions on this
screen. They can create, edit, hide and also delete products, with the
Delete button that does not ask for confirmation. Bear it in mind when
you invite people.
Things this screen does not have
So that you do not go looking for them: there are no categories, no tags, no
weight, and no “was price / struck-through price”. There is no
duplicate button (it is done by CSV), no undo and no trash can.
”No products yet” — or ”… has nothing to sell” with the name of your agent — and you know you loaded them
You have another agent selected and the list is trimmed to it
Switch agents in the selector in the top bar
”No results” (“Sin resultados”)
You have a search or a filter set
Press Clear filters (Limpiar filtros)
The panel opens almost empty
You have not chosen the type yet
Choose Physical product, Service or Info product
It will not let me type the price
You have Quantity pricing on
Type it into the 1 unit row of the scale
I change the price at the top and it does not save
The product has several variants: the price of each one is in charge
Change the price on the variant’s row
It will not let me type the stock quantity
Here you only declare whether it is tracked
Record the movement in Inventory
I lost what I was typing
You closed the panel (or clicked outside) without saving
There is no draft: it has to be redone. Always press Save
I saved and the product disappeared from the table
You took it away from the agent you have open
It was not deleted: switch to an agent that does sell it
”The product was saved, but the sales funnels were not”
The second step of the save failed
Reopen the product and tick the sales funnels again
The agent still does not name a product you have just created
Changes can take up to a minute to reach a conversation under way
Wait a minute and try again
The agent does not find it even though it is active
The customer names it differently from what it is called
Rename the product with the words the customer uses
I turned “Visible” off and the agent carries on offering it
”Visible” does not silence the agent
Turn off Active
The search box and the filters disappeared
You ticked a product’s checkbox: the selection bar replaces them
Press Clear (Limpiar)
I uploaded the CSV and wiped out a product
You repeated the handle of one that already existed
To create, empty id and a new handle
I edited the stock in the CSV and nothing changed
That column is exported but ignored on import
Record it in Inventory
”Infoproducto · ⚠️ sin entrega” in the list
You gave it neither a delivery file nor a link
Open it and fill in Automatic delivery
It does not come up in the dropdown when recording a sale
Its price is 0
Give it a price greater than zero
Your product photos sit at a public internet address. It has to be that way
so that WhatsApp can show them: anyone with that link sees it, without logging
into your account. And deleting the product does not delete the photo: that
link carries on working. Do not upload anything here that should not be public.
This section is optional and only applies if you connected Claude, ChatGPT or
Codex to your business. If you work in the dashboard, you are already done.
Your assistant can read the whole catalog, load it in bulk from a file you hand
it, and correct it. Reading works with the basic connection; writing does
not: you have to ask for the catalog write permission in the address you
connect with. It is set up ready to copy and paste in
The connection URL.
Tool
What it does
list_products
A paginated list. It filters by text, visibility, active and type.
get_product
The complete record of a product: description, variants, images and price scale.
upsert_products
Creates or updates up to 100 products per call. Destructive.
delete_product
Deletes a product. Final, with no trash can.
The rule that avoids disasters: when writing, each product is a complete
row that replaces the one that was there — whatever is not sent is written
empty. That is why the right order is always to read the record, change only your
own bit, send it back whole and read it again to check. The system does force your
hand quite a bit: it rejects incomplete rows before touching anything.
Three things that can indeed cost you dearly from the assistant.
Telling it that a product has no variants when it does wipes out all of
them and replaces them with a single one. It is the costliest mistake in the
catalog.
When updating a product with variants you have to send all of them: a
variant that is not sent is deleted, and one that is sent without its
identifier creates another new one and deletes the old one — the orders and
the stock that pointed at it are left with no reference.
A product with no identifier is looked up by name: a name equal to that of
one that already exists overwrites it. Have your assistant always use the
identifier when updating.
And three limits worth keeping in mind:
The photos are not touched from the assistant: uploading a batch does not
delete or change your products’ images. They are managed in the dashboard.
The stock quantity is not either. Even if your assistant sends a number, it
is not written: it lives in Inventory. What it can declare from outside is
whether the product is stock-tracked.
The products synced from a store are read, not edited.
Phrases that work:
“List my catalog before writing anything, so as not to duplicate.”
“Raise the price of the Polo oversize de algodón pima to 89 soles. Read its
record first and send the whole row back with that single change.”
“Set the Combo Verano to inactive: read its record, change only that and send
the complete row back.”
“Open three of the ones you have just uploaded and show me the price and the
currency of each variant.”
That last phrase matters. In the listing, the price you see is the cheapest
among the variants and the code is the one from that same variant, so a batch
that uploaded the wrong currency on a single variant can look correct from a
distance.
The file Library
The photos and the PDFs the agent sends, and where the automatic deliveries
come from.
The sales playbook
The script your agent uses to present and defend those prices.
Orders and metrics
What sold out of all this and how much it brought in.
Last modified on September 4, 2026
Assistant
Responses are generated using AI and may contain mistakes.