Product Guide
The whole of Odly, in one place
On this page
2 · The four roles
Every person has one role. Each rung adds to the one below it. The handbook uses the friendly names; the app shows the system name.
org_adminmoderatorsupportassociate3 · The life of a message
Every conversation moves through these states. You set some; the system sets others as things happen.
4 · How the learning engine works
The engine writes new rules by watching how your team works. The loop below shows routing — the mature, fully-automated domain — but the same loop runs for other domains too (spam, detection, and more). Correcting the app isn't just fixing one message; it's training the system.
5 · Message → Ticket → Jira
Most conversations are just answered and resolved. Promote one to a ticket only when it needs tracking — and to Jira only when engineering owns it.
6 · Your department map
The six departments in your workspace and the kind of mail each owns — with the real categories configured in Odly.
Support
- Technical Issue
- How-To Question
- Setup & Configuration
- Feature Request
Sales
- Demo Request
- Pricing Inquiry
- Product Question
- Purchase Intent
- Enterprise Inquiry
Billing
- Billing Question
- Invoice & Receipt
- Payment Issue
- Refund Request
- Subscription Changes
HR
- Employee Onboarding
- Leave & Time Off
- Payroll & Benefits
- Performance & Development
- Employee Relations
- Policy & Compliance
Infodefault
- Information Request
- Account Management (org-wide)
Marketing
- Brand Collaboration
- Influencer & UGC Outreach
- Marketing Internship
- Press & Media Inquiry
- Sponsorship & Partnership
7 · The inbox at a glance
Where you spend your day. Everything on a conversation card tells you something — here's the anatomy.
8 · Working a conversation
Open a message and you get the full thread, AI help in the tabs, a composer, and the action buttons.
Four realistic journeys that stitch the individual tasks below into a full story — follow the timeline and see how a conversation moves through its statuses and across the team.
A stuck customer gets unblocked
Support · from first email to a saved KB answer
- A customer emails “can't log in after resetting my password.” It's auto-routed to Support and lands in the inbox as open.
- You click Claim to own it, open the KB tab, and see a suggested answer about reset links expiring. → Task 1
- You click Use in reply, tweak the wording, and Send (⌘↵). Status moves to pending (awaiting the customer).
- The customer replies “that worked, thanks!” → in progress (our turn again).
- Since this will come up again, you click Resolve & save to KB → resolved, and the answer now powers future AI suggestions. → Task 7
A hot lead comes in
Sales · from a chat message to a tracked opportunity
- A visitor asks via the chat widget: “interested in the Enterprise plan for ~40 seats.” The AI auto-marks it a Lead and routes it to Sales.
- You open the Lead tab and check the captured name, company, and interest — fixing anything the AI missed. → Task 5
- You open ⋯ More actions → Create lead ticket so it's tracked through the pipeline, and reply fast with next steps.
- Because it's a large deal, you add an internal Internal note and reassign it to a senior rep via the assignee avatar. → Task 6
- Your manager watches enterprise leads under Statistics (Overview, Team Performance, Messages, SLA) and steps in if one stalls.
A refund request, handled cleanly
Billing · agent + manager, with an audit trail
- An email “please refund last month's charge” routes to Billing.
- You verify the account and the charge — without promising a refund yet. You keep your reasoning in an Internal note.
- You open ⋯ More actions → Create ticket (→ Task 2), set its priority to high, and escalate for approval — captured in the ticket, your notes, and the audit trail.
- Your manager reviews and tags the conversation with a Refund pending label (applying labels is a manager / admin action), then approves.
- Once approved, you reply confirming the refund and click Resolve & save to KB (or Resolve for a one-off).
Mail nobody could place teaches the system
Routing + learning · agent today, manager/admin later, automatic tomorrow
- An ambiguous email arrives that the router can't confidently place, so it's marked needs routing.
- In the Needs Routing queue you read it, pick Billing in the row's Select department… picker, and click Route. → Task 3
- You (and teammates) keep routing similar mail the same way. The learning engine notices the pattern.
- A manager or admin opens Engine Activity, sees the proposed rule with its evidence, and clicks Accept. → Task 9
- From now on, that kind of mail auto-routes to Billing — it never hits Needs Routing again.
Answer & resolve a customer message
The core loop — you'll do this dozens of times a day.
- In the Inbox, open the conversation. If it's unassigned, click Claim to take ownership.
- Read the thread. Open the KB tab for a suggested answer (the AI tab shows the analysis — category, priority, summary).
- Click Use in reply on a good suggestion — it drops into the composer as an editable draft. (The same suggestion also sits inline in the thread as a dashed AI suggestion · N% card — Tap to insert into reply.)
- Edit it to fit the customer, then click Send (or press ⌘↵).
- When it's solved: if the answer is reusable, click Resolve & save to KB (offered only on threads the customer has written in); otherwise Resolve — or Not customer work if it never needed an answer.
Turn a message into a ticket
When it needs tracking, ownership, or engineering.
- In the conversation, open ⋯ More actions → Create ticket (Create lead ticket on a lead) — it's pre-filled from the message.
- Set the Title and Priority; optionally add a Category and Assignee. AI Enhance can polish the description.
- To involve engineering, tick Sync to Jira (or Push to Jira later). Synced tickets are then edited in Jira, not Odly.
- Track it in the ticket's Comments tab — tick Internal for team-only notes — and add files in Attachments.
Route a message from Needs Routing
When the router couldn't decide a department.
- Open Needs Routing from the left menu.
- Click a row to read the message if you're unsure where it belongs.
- Pick the correct department in the row's Select department… picker.
- Click Route — it stays disabled until a department is picked, then moves the thread to that department's queue. If it's junk, click Resolve & move to spam instead.
Handle spam & suspicious mail
When a thread wears the Suspicious mark, or sits filtered in the Spam pile.
- Open the flagged conversation and read it. (Suspicious is a mark on an ordinary thread; filtered junk waits in the Spam pile as to confirm until a person agrees — see §3.)
- If it's legitimate, approve it: Not Spam — Approve on a suspicious thread (Not a Threat — Approve on phishing/scam flags), or Approve — Move to Open on a filtered one.
- If it's genuine junk, click Resolve & move to spam on a suspicious thread, or Confirm — it is spam in the Spam pile — both record it as confirmed spam.
- If it's phishing or a scam, don't just dismiss it — approve only if safe, and escalate the threat to a manager.
Handle a sales lead
When a message shows buying interest (or is auto-marked Lead).
- If it isn't flagged already, open ⋯ More actions and choose Mark as lead.
- Open the Lead tab and check the captured details (name, email, company…). Edit anything the AI missed.
- Open ⋯ More actions → Create lead ticket to track it through the pipeline.
- Reply fast with clear next steps — speed wins deals.
Hand off to a teammate
When someone else should take it, or you need input.
- Switch the composer to Internal note mode and write the context, then Post note — this is internal only, never sent to the customer.
- Reassign by clicking the assignee avatar on the conversation and picking a teammate.
- If it belongs to another team, change the department with the header's Dept control — tick Create rule to mint a routing rule at the same time.
Grow & tidy the knowledge base
Everyone saves; reviewers (managers & admins) approve what's captured.
Where: Knowledge Base (left menu)
- Anyone: when resolving, choose Resolve & save to KB to capture the question & answer.
- Open Knowledge Base and filter to Pending.
- View each entry, then Approve the good ones, Edit the almost-good, Hide the noise, or Reject outright junk.
Tune a routing rule
When mail keeps landing in the wrong department.
Where: Settings → Rules → Routing Rules
- Open the routing rules and filter by All / Manual / Auto-learned.
- Create or open a rule: pick the target department and a type (Subject Contains, Body Contains, Subject Regex, Sender Email, Sender Domain, Header Match).
- Set the value / pattern and example phrases, then adjust the score (higher wins when several rules match).
- Toggle Enabled — and disable a Learned rule that's grown too broad (learned rules carry Learned / Promoted badges plus a match count).
Review the learning engine's suggestions
Approve or reject what the engine proposes across its domains.
Where: Settings → AI → Engine Activity (and Learning Trust)
- Open Engine Activity to see proposals grouped by domain (routing, spam, detection, …) — managers work the queue for the domains they manage, not just admins.
- For each, check the summary, confidence, and evidence count.
- Click Accept to apply it, or Decline (optionally with a reason).
- For a routing conflict, expand the evidence and Edit one rule to tighten it, or Merge the two.
- Set how boldly it acts under Learning Trust (admin-only) — Manual, Balanced, or Aggressive.
Connect a mailbox (or other channel)
When adding a source that feeds the inbox.
Where: Settings → Integrations → Message Sources
- Under Message Sources, pick a source card — Email, Gmail, Telegram, Slack, or WhatsApp. (The same tab holds the Jira card used in Task 2, plus AI providers, object storage, and chat widgets.)
- Email (IMAP/SMTP): enter host, port, address, password, and TLS. Gmail: use the OAuth sign-in instead.
- Choose the search criteria and lookback window, then assign the department(s).
- Save — new mail now flows into the inbox. (Telegram uses a bot token; Slack is event-driven via Event Subscriptions; WhatsApp is its own Meta handshake.)
Invite a teammate
When adding a new person to your organization.
Where: Users (left menu)
- Open Users and click Invite User.
- Enter their email — the Workspace is fixed to the one you're in.
- Choose a role — Associate (
associate), Support (support), or Moderator (moderator). Org-admin invites are platform-admin only — the dialog notes “Org admins cannot invite other org admins.” - Assign their department(s) and send — they'll get an email to set a password.
Set up AI for your organization
To enable suggested replies, analysis, and auto-reply.
Where: Settings → Integrations → AI Providers (prompts & learning under Settings → AI)
- Open Settings → Integrations → AI Providers and choose your AI provider mode. On paid plans, Managed AI is included and on by default — Odly runs the model for you, no key required. On Free (or whenever you'd rather use your own account) switch to Bring your own keys and paste a provider's API key on its card. Providers: OpenAI, Anthropic, DeepSeek, Perplexity, Qwen, AWS Bedrock, Ollama, or a Custom OpenAI-compatible endpoint.
- Choose the model for that provider.
- Under Settings → AI, review the prompts & model settings the AI uses for analysis and drafting.
- Configure Lead qualification (which fields to collect) and Auto-reply (whether AI may draft/send, and its guardrails).
- That tab also governs the learning engine — set the Trust Mode (admin-only) and review proposals (see Task 9).
Set your SLA targets
Define the response and resolution times the team is held to.
Where: Settings → Workspace → SLA Thresholds (admin-only; managers can view)
- Open SLA Thresholds.
- For Ticket SLA, set a first-response (minutes) and resolution (hours) target for each priority — Critical, High, Medium, Low.
- For Message SLA, set a first-response target per channel — email, Telegram, Slack, other.
- Save — targets apply to new tickets and messages and drive the SLA breach / at risk flags.
Add a department
When you need a new team queue (e.g. a new HR or Marketing desk).
Where: set up during onboarding — no self-serve screen yet
- Decide the essentials: the department name, and which mail, sources, and people belong to it.
- Odly has no self-serve “Departments” form today — the six defaults are seeded at signup and your plan budgets how many can be active. Ask your Odly platform contact (a platform admin creates / activates departments in the Platform Console).
- Once it exists, link message sources to it and add routing rules & skills that target it.
- Grant the right users access to the department (see Task 11).
- Heads-up: if you try to add a source with no departments yet, the integration card shows “No active departments. Create one before adding a source.”
Restore a deleted message
When a conversation was removed and needs to come back.
Where: Settings › System › Deleted Messages (platform admin only)
- Deleting a conversation is an org-admin action — ⋯ More actions → Delete message — and it's a soft delete: hidden from the inbox, but recoverable.
- To bring one back, ask your platform admin — they open Settings › System › Deleted Messages, find the conversation, and click Restore.
- The same surface has a “delete everything older than N days” purge — platform-admin only and irreversible.