For small shops that sell in the DMs
Answer every message.
Invent nothing.
Selleena reads the messages your shop already gets, answers the ones it can prove from your own catalogue — in Bangla, English or Banglish — and hands the rest to you with the reason written down.
- No card
- No email confirmation loop
- Five products is enough to start
-
এই ভাসটার দাম কত?
-
Answering automatically
এই ভাসটার দাম ৳২,৪০০ — স্টকে ৩টি আছে।
-
Can you get it engraved before Friday?
- Handed to you — no answer was invented. needs a confirmed answer: engraving, delivery date
-
We can engrave it — Thursday at the latest. Shall I reserve one?
An illustration, not a screenshot. Names, prices and times are sample data — but every label above is one the product really writes.
Who it is for
The shop is a Page, a phone and a shelf of stock.
No warehouse, no fulfilment team, no support desk. One person answers everything — between customers, at night, on a phone that is also the till.
That is the queue Selleena works: the six questions a day the owner already knows the answers to, answered without her, so the one question that needs her is the one she sees.
Photograph — illustrative, not a customer of this product.
Channels
Messenger, Instagram, WhatsApp and a website widget — one inbox.
Languages
Bangla script, Banglish and English, detected message by message.
Answers from
Your catalogue, your shop settings and the rules you teach it.
Hands off when
It cannot source a price, a stock level or a delivery date.
The rule
A reply must be sourced. Or handed over. Never guessed.
Most assistants fail by inventing: a price that changed, a delivery date they cannot keep, English to a customer writing Bangla. That failure is what this product is built against.
“The assistant may only state what it can source. Everything else becomes a hand-off to a person, with the reason recorded.”
Sourced or silent
A price comes from a product row. A delivery time comes from a shop setting. When neither has the fact, there is no sentence to give the customer.
Reasons, not shrugs
A hand-off records why: needs a confirmed answer: price. You read the reason, not a transcript you have to re-diagnose.
Labelled by default
Every reply carries its author, the writer that produced it and its delivery state. Nothing claims to be sent that was only stored.
What it answers from
Every price it may state started as a row you wrote.
Three vases, three rows: a price, a stock count, a name. That is the whole permission the assistant has. When a row has no price, the answer has no price — and the thread is handed to you instead of a number being guessed at.
Added one at a time, imported from a spreadsheet, or synced from your store's product feed. All three end in the same table, and all three can be corrected in seconds.
Photograph — illustrative.
01 — How it works
A message, from arrival to answer.
Six steps, all of them visible in the inbox afterwards. Nothing here is a black box you have to take on trust.
-
1
A message arrives
Meta delivers a webhook. The signature is checked before the body is parsed, so a forged request never reaches the parser, and every delivery is stored for audit. A retried message is skipped, not answered twice.
-
2
It is routed and stored
Messenger, Instagram and WhatsApp funnel through one ingestion path, so a fix applies to every channel. The thread, the message and — if this is someone new — the customer profile are written before any reply exists.
-
3
The language is read
Bangla script, Banglish and English are recognised per message. Banglish is the one most assistants get wrong; treating it as English is how a bot answers in the wrong language.
-
4
The gate runs
Is auto-reply on for this shop? Is this thread paused? Is the assistant switched off entirely? A switched-off assistant does not call a provider at all — no request, no cost, no invented reply.
-
5
An answer is drafted
The intent is classified — price before greeting, so “hi, how much is it?” is answered as a price question. Two interchangeable writers respond: the built-in rule set, or a language model when a key is configured. Both obey the same limits, and the reply says which one wrote it.
-
6
The honesty check, then delivery
If the answer needs a fact the shop never supplied, the reply is withheld: the thread is flagged and a timeline event records why. Otherwise the reply is stored first, then delivered — so a failed send is still visible and labelled, rather than lost.
You see the outcome of all six steps in one place: the thread, the label on every reply, and the reason whenever a person was needed.
02 — Features
Everything it does, in plain sentences.
Grouped the way the workspace is: the inbox where the assistant works, the catalogue it answers from, the advice it writes, the home screen, the channels, and the account.
Workspace 01
Inbox and the assistant
One thread list for every channel. The assistant answers what it can prove and stops where it cannot.
- Four channels, one inbox
- Messenger, Instagram, WhatsApp and your website widget arrive in the same list, with unread counts kept per conversation and settled when you open one.
- Answers in the customer's language
- Bangla script, Banglish and English are detected per message and mirrored by default. A shop can pin one language instead.
- Answers from your catalogue
- Price and stock questions are answered from the product rows you supplied. Two products match the question? Then no price at all, and a person is asked.
- Silence over guessing
- A message it cannot read is stored, not answered, and handed over. Gibberish produces a profile but never a reply.
- A reason on every hand-off
- “needs a confirmed answer: price” is recorded on the conversation, with a timeline event, so you know what to check before you answer.
- Take over as a person
- Reply in the thread yourself. It is stored as your team — never as the assistant — and the assistant pauses on that thread by default, because two voices on one thread is worse than one.
- Every reply is labelled
- Author, writer and delivery state appear on the bubble: AI agent · built-in rules or team, then sent, failed, or not sent.
- Customer profiles with provenance
- Preferences and delivery address first, activity second. What the assistant inferred is marked as inferred; only a person's edit reads “confirmed by your team”.
- Teach it a rule
- Select any message and write a rule — “always offer gift wrap” — scoped to that customer or that kind of question. With no model configured it stops answering those messages instead of pretending to follow the rule.
- An honest typing indicator
- Messenger's real typing action where Meta supports it; a bubble labelled “Answering automatically” on your website; nothing faked on Instagram or WhatsApp.
Workspace 02
Products
The catalogue is the only place a price can come from. Getting your products in should not be the hard part.
- Three ways in
- One at a time in a form, in bulk from CSV or Excel, or by pointing Selleena at your store's product feed. All three end in the same table.
- Unknown is a value
- A missing price stays “not set”. Missing stock reads “stock not tracked” — which is not the same sentence as “0 in stock”.
- A counted import report
- Rows created, updated, unchanged and skipped — and each unreadable row named with its reason, instead of a silently wrong number.
- Re-imports update
- Rows are matched by external id, then SKU, then exact name. A column your file does not mention is never blanked.
- Prices in any notation
- “1 299,50 kr”, “SEK 299” and “৳2,500” are all read, both decimal conventions included. Anything unreadable becomes a named row error.
- Feed sync, on demand
- Saving a feed URL fetches nothing. Sync now fetches it, at most once every 20 seconds, and the last outcome stays visible in the page header.
- Safe fetching
- Public hosts only, redirects refused, a 10-second timeout and a 5 MB ceiling. An optional header credential is encrypted at rest and never returned.
Workspace 03
Marketing
Advice assembled from your own numbers — and every suggestion quotes the number it came from.
- Evidence for every suggestion
- “3 of the last 9 messages asked about price.” A suggestion with no evidence behind it is dropped before it reaches the page.
- Two audiences, one screen
- Your page gets advice about itself. Selleena staff get advice about Selleena. A shop account asking for the second gets a labelled refusal, not a hidden tab.
- Notes the assistant keeps
- Audience, what buyers keep asking for, the constraints holding answers back, the shop's voice. Each note carries its source, confidence and counted evidence.
- Delete, don't edit
- Assistant notes can be removed but not rewritten, so nothing stops being traceable to the numbers that produced it. Your own note stays yours.
- Nothing is published
- A brief is a draft. Nothing is posted, scheduled, spent or emailed — and the page says exactly that rather than implying an automation that does not exist.
Workspace 04
Overview
The home screen answers the three questions an owner actually asks, in that order.
- Is anything running?
- A status band at the top: assistant on, paused, or a count of conversations that need a person.
- What did it do?
- Handled without you, handed to you, and still waiting — counted from your own rows, never a placeholder figure.
- What still needs me?
- One list of the conversations a person should open, each with the reason it was handed over.
- One switch for the assistant
- Pausing is a real write, shown in the rail, the overview and the inbox. While paused nothing calls a provider.
Workspace 05
Channels
Where your customers already write. Added in Settings, with the credential handling spelled out.
- Facebook Messenger
- The Page you connect during onboarding. Its access token is encrypted at rest and never serialised into a response.
- Attached through the Page that owns the account, so there is no second consent screen. Disabled until a Page exists, with the reason on the disabled button.
- WhatsApp Business
- Cloud API number and token are validated against Meta before they are stored, so a typo fails immediately instead of at the first customer.
- Website widget
- One script tag, Shadow DOM, a per-shop key and a list of allowed origins, throttled per IP. It labels itself “Answered automatically”.
- Dry run, clearly labelled
- With no Meta credentials nothing pretends to send. The inbox says Dry run and every reply reports not sent.
Workspace 06
Account, settings and safety
Five settings sections, and the security decisions behind them, written where you can read them.
- Five sections, saved deliberately
- Account, shop details, AI setup, channels, website. A section's save button stays disabled until something in that section actually changed.
- A read-only sign-in email
- Rendered as output, not as an input, so there is nothing to submit and nothing to spoof.
- Sessions that survive the network
- Short-lived access tokens with rotating refresh tokens, plus a short grace window, so an interrupted page load does not sign you out.
- No account enumeration
- A wrong password and an unknown email are indistinguishable, and a reset request answers the same way every time.
- Tenancy by 404
- Another shop's record is not “forbidden” — it does not exist. Existence is never leaked.
- Throttled by scope
- Login, signup, password reset and the public widget each carry their own rate limit.
- Accessible by default
- WCAG 2.2 AA, verified by automated audits at zero violations: visible focus everywhere, keyboard-operable dialogs, reduced motion respected, one h1 per page.
Not a mockup
The home screen, as it renders.
Captured from the running app with the demo workspace loaded — 12 replies sent without the owner, 3 conversations handed over, and the reason recorded beside each one. Nothing in it was retouched for this page.
03 — Channels
One inbox, wherever the customer wrote.
A conversation is the thread; a customer is the person. They are kept separate because one human may write on Messenger and again on your website.
| Channel | How it connects | In this build |
|---|---|---|
| Messenger | Page OAuth during onboarding; token encrypted at rest, verified webhook. | Real path, dry-run boundary — replies are stored and marked not delivered. |
| Linked through the Page's business account; no second consent screen. | Real path, same dry-run boundary. | |
| WhatsApp Business | Cloud API number id and token, validated against Graph before storage. | Real path, same dry-run boundary. |
| Website widget | Script tag, per-shop key, allowed origins, throttled per IP. | Live. Answers through the same agent, labelled “Answered automatically”. |
Every channel writes through one ingestion path, so a fix or a guard applies to all four — not just the one that reported the bug.
04 — Honesty
Where the line is, and how you can tell.
An assistant's credibility comes from what it refuses to do. These are refusals built into the product, not guidelines for it.
It will never
- Invent a price, a stock level, a delivery date or an order status.
- Call a stored reply a delivered one.
- Claim it followed a rule when no model is configured — it stops answering instead.
- Show an inference as a confirmed fact.
- Quote a statistic in advice without the count behind it.
- Post, schedule, spend or email anything on its own.
And it says so when
- A reply came from the built-in rules rather than a language model.
- A message was stored but not delivered — dry run, failed, or not sent.
- A customer note was inferred rather than confirmed by your team.
- A channel is a dry run rather than a live Page.
- An advice brief was written by rules because no model key exists.
- A tab is disabled because your account cannot use it, and why.
This build, stated plainly
- Assistant
- Answers out of the box with the built-in rule set. A model key is optional, and each reply names its writer.
- Meta delivery
- Runs dry in this environment: replies are stored, labelled, and reported as not delivered.
- Product feeds
- Parser, upsert and the private-address guards are tested; no live shop endpoint has been fetched yet.
- Typing indicator
- Real on Messenger where Meta accepts it, labelled on the website widget, absent elsewhere rather than simulated.
05 — Craft
Quiet on purpose.
The interface is Scandinavian in the plain sense: paper, ink and rules. Type and spacing do the work that boxes and shadows usually do.
Rules, not cards
A hairline where a boundary is real. Sections are separated by a single line, not a rounded rectangle with a shadow under it.
One accent
Deep violet, kept for actions and focus. Everything else is warm paper, ink and two greys.
Nothing decorative
No gradients, no glass, no emoji standing in for an icon, no shadow outside the things that actually float.
Measured, not claimed
Ink sits at 16.8:1 and secondary text at 7.2:1 on the paper. Four breakpoints are checked for overflow rather than eyeballed.
Semantic HTML, compiled Tailwind, self-hosted Inter and a Bengali subset, inline SVG icons. No framework at runtime and no third-party font request.
06 — Questions
The things people ask first.
If something is missing, the in-product text is usually the more precise answer — it is written next to the control it describes.
Do I need a Facebook Page to start?
Yes. The assistant answers where your customers already write, and the Page is what Selleena connects to. The connection is a gate on the server, not a checkbox: onboarding cannot be completed without it. Instagram and WhatsApp are added later in Settings, and the website widget can run on your own site.
What happens when it does not know the answer?
It stops. The conversation is flagged for a person, the reason is recorded, and the customer is told a human will confirm rather than being given a guess. That holds for prices, stock, delivery dates and anything the message did not make clear.
Does it really answer in Bangla?
Bangla script, Banglish and English. The language is detected per message and mirrored by default, and a shop can pin one language instead. Bangla, Banglish and English are handled by the same reply gate, so a language change never lowers the standard for what may be stated.
Do I need an AI provider or an API key?
No. The built-in rule set composes answers from your catalogue and settings with no key at all. If you configure one, a language model writes the reply under the same constraints — and every reply states which of the two produced it, so nothing ever claims a model wrote text the rules wrote.
Can a person take over a conversation?
Yes, from the thread itself. Your reply is stored as your team, never as the assistant, the hand-off is cleared, and the assistant pauses on that thread by default so two voices are not answering the same customer at once.
Who can read my shop's conversations?
Only your workspace. Page tokens are encrypted at rest and never returned by any endpoint, and a request for another shop's record answers 404 rather than confirming that it exists.
Does it post or send anything on my behalf?
It replies to customers who wrote to you, and nothing else. Marketing briefs are drafts: nothing is posted, scheduled, spent or emailed, and the page says so in its own words.
Start here
Connect one Page. Answer tonight.
Sign up, describe your shop, add five products. Selleena starts with the questions you answer every day — and tells you when a person is needed instead.
No card. Four steps to a connected shop.