AI Assistant
The Joryio Assistant is an in-app AI operator, available from the sparkle button in the app. It works with your real workspace data - it looks at your actual campaigns, journeys, send stats, alerts, tracked events and contact attributes before answering, and it answers in the language you write in.
What you can ask
- Analyze performance - "How did my last campaign do?", "Analyze the welcome journey". The Assistant reads the structure and the numbers (sent, delivered, opened, clicked, bounced, unsubscribed) and tells you what stands out. Tag a specific campaign or journey with @ to point at it directly.
- Ask about a segment - "Explain this segment" with the segment open in the builder, or "explain the VIP segment" by name from anywhere. The Assistant reads the real definition and answers in plain words: every condition as a sentence ("Performed Order Completed at least 3 times in the last 30 days", "Is in segment VIP"), how the groups combine, an approximate member count, when it was last edited, and which active journeys and scheduled or active campaigns target it. Ask "who is in it and why?", "what uses it?" or "how does it differ from Lapsed buyers?" - comparing two segments reads both.
- Segment by import - "a segment of the people from leads.csv" or "everyone from yesterday's import". The Assistant looks the import up in your import history by file name or date and builds a Came from import condition from it; when several imports match, it asks which one you mean, and it never guesses one. When it explains a segment, imports are named by file and date.
- How-do-I questions - it answers from this documentation and links the pages it used.
- Write copy - subject lines, message bodies, refinements. Copy generation applies your Brand Voice and respects channel length limits.
- Diagnose problems - "Why did my sends drop?" It checks your active alerts and recent trends.
- Journey ideas for your industry - "What automations should I build?" See the playbook library below.
Attaching documents
Paste a long, multi-line text into the chat box, or press the paperclip to attach a .txt or .docx file (up to 5 MB). Either way it appears above the box as a chip with its name and size, and stays on your message in the conversation after you send it. Add a question with it - "summarise this", "write a campaign from this brief", "what does section 4 say?" - or send it on its own. PDF and old .doc files are not supported yet: copy the text and paste it.
- Size limits. One attachment holds up to 100,000 characters; a longer paste or file is cut there, and the chip says only the first part was kept. A conversation carries up to 150,000 characters of attachments in total - past that, the oldest attachments drop out, and the Assistant asks you to attach one again if it needs it.
- Long documents are read in parts. The Assistant first sees the beginning of the document and its total length, then reads the rest page by page (and can search it for a word or heading) as your question needs. It reads up to about 40,000 characters per message. When a question needs more than that, it tells you which part it covered - ask it to continue and it picks up where it stopped.
- A brand voice from a document reads the whole attachment at once - see Brand Voice.
- Private to your chat. An attachment is used only in your own conversation. It is not saved to your workspace or to the conversation log, and it is gone when the chat is reset or the page is reloaded.
The Apply safety model
The Assistant can propose changes to your workspace, but it cannot make them on its own. Every proposal appears in the chat as a card with an Apply button, and the rules are strict:
- Nothing is created or changed until you press Apply. Reading, analyzing, and drafting happen freely; writing never does.
- The action list is a fixed whitelist, enforced on the server. The Assistant can only execute the specific action types documented below - there is no generic "run anything" path, and an unrecognized action type is rejected outright.
- Applied actions run through the same services as the UI, under your own account, organization, and workspace. The Assistant can't touch anything you couldn't change yourself by hand.
- Everything it builds arrives as a draft or a reviewable object. Journeys never activate themselves, campaigns never send themselves, and AI agents are saved as drafts for you to test first.
If you close the chat without pressing Apply, nothing happened.
Editing what already exists, with a diff
Ask for a change to something you already have - "make the subject of the Spring sale email warmer", "shorten the SMS in the Welcome journey" - and the Assistant reads the current text, then proposes the edit as a before/after diff, field by field, naming the variant or journey node each change belongs to. It can change copy and names: subjects, bodies, preheaders, push titles, journey message text. It cannot change audiences, schedules, senders, or the shape of a journey.
Apply never touches what is live:
- Email and in-app templates get a draft version. The template stays exactly as it is until you open Version history and restore that version, so scheduled campaigns and running journeys keep sending the current one.
- Campaigns: a draft campaign's draft is updated; a live campaign gets the edit as buffered changes and keeps sending as it is until you press Publish changes.
- Journeys: the journey's draft is updated; people in a live journey stay on the published version until you press Publish.
A proposal is tied to the text as it was when it was made. If you or a colleague edit the item in between, Apply refuses and asks you to request the edit again, so nobody's work is overwritten. Templates built in the drag-and-drop designer keep their body in the designer; for those the Assistant can change the name, description and subject only.
Experiment Copilot: what to test next
Ask "what should I test on the Spring sale email?" or press Suggest an experiment in the email template editor. The Assistant reads your workspace's own content report - how emails with each tone, urgency, offer, call to action and topic performed over the last 90 days - finds the one feature with the widest gap between its best and worst values that this template is not already best on, and writes one or two variants that change that feature and nothing else. Every merge field and every link stays as it is; a rewrite that would drop one is kept to the subject alone.
The same copilot works while you write an email campaign: in the Compose step, once the subject and body are in, Joryio checks whether the message sits on the weaker side of a gap your results can measure and, only then, shows one dismissable card with the evidence. Write the variant drafts it and Add to this campaign adds the arm and sets the A/B test to pick the winner with the recipients it needs. Launch Review carries the same idea as a recommendation.
The card shows the evidence in plain words ("urgent emails converted 3.1% of recipients and friendly ones 1.4%"), the arms side by side, and the recipients each arm needs to tell the difference apart from chance (95% confidence, 80% power). Create draft experiment makes a draft campaign with the original as the baseline arm, the variants split evenly, and that sample size set as the minimum per variant. You pick the audience, the sender if none is set, and launch it - the Assistant never sends.
It needs a content report with at least two measured values on some feature (each needs 100 reached recipients), so a new workspace sees "no experiment to propose" for a while. Email templates only for now.
Things it can build for you
| You ask for | You get |
|---|---|
| A journey ("welcome series for new signups") | A complete draft journey - entry trigger from your real tracked events, waits, and messages with on-brand copy already in the nodes; email steps arrive pre-branded with your Brand Kit and open populated in the drag & drop editor. It never activates by itself; you review it in the editor. WhatsApp steps need you to pick a pre-approved template. |
| A monitoring alert | A configured alert (metric, threshold, cooldown) that emails you when it fires. |
| An analytics dashboard ("build me a revenue dashboard") | A custom dashboard with widgets over your real event names or e-commerce data (revenue, orders, AOV, revenue-over-time, RFM distribution) - editable in the dashboard builder afterwards. |
| Changes to an existing dashboard | Rename it or add widgets (e.g. "add a by-channel breakdown to my Messaging dashboard") - new widgets land below the current layout, nothing existing is touched. |
| An email template | AI-written copy assembled into a branded, email-safe design using your Brand Kit, saved as a normal template you can fine-tune. |
| An in-app message ("push-permission primer for new visitors") | A branded modal (logo, colors, close button, glanceable copy) saved as a normal in-app template - editable in the in-app editor. |
| An audience segment ("customers who purchased twice but are inactive 30 days", or "shoppers predicted to spend 500+ next year", "customers whose next order is due within 7 days", "people who searched the same hotel three times this month") | A real segment built from your actual events and attributes - including predictive fields (predicted CLV, next-order timing, churn/engagement, RFM, category/brand affinity) - editable in the segment builder. |
| A campaign ("email campaign announcing the summer sale to my VIP segment, Sunday 10:00") | A draft campaign with the copy in place - and if you named them, the audience, send time or event trigger pre-configured too - including creating the segment on the fly when you describe one that doesn't exist yet. You review and launch from the wizard; it never sends by itself. |
| An AI agent ("an agent that scores each lead's purchase intent") | A configured agent - name, instructions, output type - saved as a draft so you review, test, and activate it yourself. |
| A relationship alert ("tell people when a sold-out show has tickets again", "notify viewers when a new episode drops") | The relationshipAlert config on your custom catalog entity - the Assistant picks event-audience vs a waitlist entity from your real events (and creates the waitlist entity if needed). Then it offers to build the notify journey. |
| Pause / resume a campaign | The action, applied only on your confirmation. |
The full action whitelist
For the curious (and the auditors), these are the exact action types the server will execute - nothing else:
draft_journey- create a draft journey (nodes, edges, branded email steps)create_campaign- create a draft campaigncreate_segment- create a segment from validated conditionscreate_email_template- generate and save a branded email templatecreate_in_app_template- generate and save a branded in-app templateapply_edit- a field-level edit to an existing email template, in-app template, campaign or journey, shown as a before/after diff; Apply writes a draft, never the live one (see below)create_experiment- a draft campaign experiment from an email template: the original plus one or two variants on one content feature, with the sample size per arm (see Experiment Copilot above)create_dashboard- create an analytics dashboardupdate_dashboard- rename a dashboard or append widgets to itcreate_alert- create a monitoring alertcreate_ai_agent- create an AI agent (saved as a draft)setup_relationship_alert- configure a relationship alert on a catalog entitypause_campaign- pause a running campaignresume_campaign- resume a paused campaign
Every one of them validates its inputs against the same rules the regular UI uses (segment conditions are whitelist-validated, dashboard widget types are checked against the widget catalog, and so on) before anything is written.
The playbook library
Ask "what automations should I build?" and the Assistant doesn't improvise - it consults a curated library of proven lifecycle playbooks (abandoned cart, browse abandonment, post-purchase review, win-back, replenishment, VIP programs, onboarding series, and more) organized by business vertical: e-commerce, SaaS, gaming, finance, travel, education, health, B2B, services, media, marketplace, nonprofit, and real estate, plus universal playbooks that fit everyone.
It then cross-checks the library against your workspace:
- which playbooks you're missing (no journey of that shape exists yet),
- whether you actually track the events each playbook needs to trigger, and
- which channels the messages could use, given what you've connected.
From there it builds the pieces for you - the segment, then the journey - one Apply at a time, with each step grounded in your real event names.
Grounded in your data
The Assistant is injected with your workspace's real vocabulary on every turn:
- Event names - journey triggers, alert scopes and dashboard widgets use events you actually track, never invented names.
- Contact attributes with fill rates - the Assistant sees not just which attributes exist but what share of your contacts actually have them filled. Generated copy may personalize with
{{ user.firstName }}and your own custom attributes (e.g.{{ user.custom.loyaltyTier }}), but only ones that are filled for a healthy share of your contacts, so messages never render with empty holes. - Connected channels - it only recommends channels you've actually connected; others are suggested as "needs setup" with a link. It checks this from live channel configuration on every conversation, so the advice tracks your setup as it changes.
- Your brand - the default Brand Voice, its business category, and its "what the company does" description frame every suggestion.
Getting the most out of it
- Point, don't describe. Use @ to tag the exact campaign or journey you mean - "analyze @Welcome Series" beats "analyze my welcome thing" and skips a round of clarification.
- Name your constraints up front. Audience, channel, timing, offer: "email campaign for the VIP segment, Sunday 10:00, 20% off code SUN20" comes back pre-configured; a vague ask comes back generic.
- Iterate before you Apply. The card is a proposal - ask for changes ("make the second email shorter", "move the wait to 3 days") and Apply only when the proposal reads right. Refining a proposal costs nothing; editing afterwards in the builder works too, but chat is usually faster.
- Let it chain. Bigger asks decompose into several Apply cards - a segment, then a campaign that targets it, then an alert watching it. Each card stands alone; you can Apply some and skip others.
- Ask "why", not just "what". After an analysis, follow up with "what would you change first?" - the Assistant reasons over the same numbers it just showed you.
- Write in your language. The Assistant answers in the language you use, and generated copy follows your Brand Voice's language settings, including Hebrew audience form and register.
What it deliberately can't do
A few boundaries worth knowing, all by design:
- It can't delete anything. There is no delete action in the whitelist - not campaigns, not segments, not journeys. Removal always happens in the UI, by you.
- It can't send messages. No action sends an email, SMS, or WhatsApp message directly. Campaigns arrive as drafts you launch from the wizard; journeys arrive as drafts you activate in the editor.
- The only changes to existing objects it can make are pausing/resuming a campaign and renaming or adding widgets to a dashboard - and even those wait for your Apply.
- It can't reach outside your workspace. Every action executes with your identity in your current workspace; there is no cross-workspace or cross-organization path.
Support tickets
If something needs a human (billing, bugs, account issues), the Assistant drafts a support ticket for you - you see an editable form in the chat, adjust the text, and send it yourself. Replies from our team arrive by email.
Your tickets
Open the menu under your name (top right) and choose Support (/support). The page lists the tickets you opened in this organization - not your colleagues' - with the case number, subject, status (Open, In progress, Waiting for you, Resolved) and the last update. Tickets Waiting for you - our team needs your answer - come first, then the newest. A New reply marker shows a ticket our team answered since you last opened it. Click a ticket to read the whole conversation.
- Answer on the ticket page: write in Your reply and press Send reply (or reply to our email). A ticket that was waiting for you goes back to In progress, and a resolved one reopens.
- New ticket opens a short form (subject and description) - the same as a ticket the Assistant drafts.
- When our team replies, resolves your case, or is waiting for your reply, you get the email and an item in the bell; clicking it opens the case and marks it read.
- Help center, in the same menu, opens this documentation in a new tab.
Email support
You can also email [email protected] directly - with or without the Assistant.
- A case number for every request. When your email starts a new request, you receive a short acknowledgement - "We received your email. Your case number is #1234." - with the number in the subject as
[Joryio #1234]. - Replies reach our team. To add details or answer us, reply to any of our emails and keep the
[Joryio #1234]tag in the subject, so the team can put your message with the right case. - Write from the address you sign in with. That makes it easy for the team to match your email to your account; once they do, you can open the case in the app at
/support/tickets/<case number>. - Automatic replies (out-of-office) do not open requests and get no acknowledgement.
How long we keep support requests
- Ordinary requests are anonymised 3 years after the last activity on them (the last message, reply or status change - usually when the request is resolved). Anonymised means your name, email address, phone numbers and the sender lines are removed; the subject, dates, case number and status stay, so there is a record that the request existed and how it was handled.
- Billing requests - refunds, credits, cancellations and invoices - are kept for 7 years, the period tax and accounting rules require, and then anonymised the same way.
- Original emails and attachments are deleted after 90 days; the text of your messages stays with the request.
- If you close your account, your support requests are not deleted with it: they are separated from the account and follow the same periods.
- To have your details removed from our support records sooner, email [email protected]. We remove your name and contact details from every request and keep the conversation; for billing requests we keep the amounts, dates and content the tax rules require, a request involved in a dispute stays unchanged until the dispute ends, and we tell you what we kept and why.
Privacy
Assistant conversations are stored for support and product-improvement purposes with a 180-day retention. They are not used to train third-party models. Generated content belongs to you.