Odly
← All guides

Product Guide

The whole of Odly, in one place

Odly is an intelligent requests hub — it unifies messages from every channel (email, Telegram, Slack, chat widget), automatically routes each to the right department, and drafts ready-to-send answers for agents from your knowledge base. This handbook is the whole thing in one place: Part 1 explains how the app fits together (diagrams); Part 2 walks four real journeys end-to-end; Part 3 is the step-by-step tasks, each with a screen mockup.
On this page
Part 1 · How it works

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.

AdminRuns the organization. Users, departments, channels, AI, billing — full control. org_admin
ManagerLeads the team. Everything an agent does, plus assignment, SLA oversight, routing tuning, and label management. (KB curation and message deletion are admin-only.) moderator
AgentWorks the inbox. Read, reply, resolve, create tickets, correct routing. No settings. support
Read-onlyLooks, doesn't touch. Views tickets and messages, can request changes. associate

3 · The life of a message

Every conversation moves through these states. You set some; the system sets others as things happen.

ACTIVE — YOU'RE HANDLING IT New → Openarrives, then opened In progressyou're working it Awaiting responsewaiting on customer Client repliedcustomer answered Resolvedsaved to KB Closedno KB start you reply customer replies you reply resolve & save to KB close customer writes again → re-opens as Client replied
You set:in progresspendingresolvedclosed
System sets:openawaiting responseclient repliedfiltered / spamneeds routing
Resolve or Close from any active state: whether a conversation is New/Open, In progress, Awaiting response or Client replied, you always have the same two endings — Resolve & Save to KB or Close (no KB). And if the customer writes again to a resolved or closed conversation, it automatically re-opens as Client replied so nothing slips through.
Before it ever reaches you: new mail is auto-checked. Suspected junk becomes filtered / spam, and anything the router can't confidently place goes to needs routing (see next diagram).

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.

Incomingmail Rules + learnedrules decide Department queueclear winner Needs Routingno clear winner Agent routes itpicks the department Learning enginespots the pattern Admin approves→ promoted rule unsure assigns dept trains proposes new rule ↑
The takeaway for agents: route mail where it truly belongs, mark true spam, approve good KB answers — consistently. Every one of those is training data. The engine learns across routing, spam, detection, contradiction, KB quality and auto-reply; routing is fully automated today and the rest are progressively coming online.

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.

Conversationin the inbox Resolve & Save to KBsimple — just answer it Create Ticketneeds tracking / ownership Push to Jiraengineering owns it Jira issuetwo-way synced comments sync both ways ↔

6 · Your department map

The six departments in your workspace and the kind of mail each owns — with the real categories configured in Odly.

Supportdefault

  • Technical Issue
  • How-To Question
  • Setup & Configuration
  • Feature Request
“error”, “not working”, “how do I”, “setup” — and the org-wide fallback: anything the router can't confidently place lands here

Sales

  • Demo Request
  • Pricing Inquiry
  • Product Question
  • Purchase Intent
  • Enterprise Inquiry
“pricing”, “demo”, “quote”, “interested in”

Billing

  • Billing Question
  • Invoice & Receipt
  • Payment Issue
  • Refund Request
  • Subscription Changes
“invoice”, “refund”, “payment”, “cancel subscription”

HR

  • Employee Onboarding
  • Leave & Time Off
  • Payroll & Benefits
  • Performance & Development
  • Employee Relations
  • Policy & Compliance
internal staff — “leave”, “payroll”, “policy”

Info

  • Information Request
  • Account Management (org-wide)
general information & account questions — “what is”, “where can I find”, “update my details”

Marketing

  • Brand Collaboration
  • Influencer & UGC Outreach
  • Marketing Internship
  • Press & Media Inquiry
  • Sponsorship & Partnership
“partnership”, “press”, “sponsor”, “collab”

7 · The inbox at a glance

Where you spend your day. Everything on a conversation card tells you something — here's the anatomy.

Inbox
1ThreadsContactsKanban2Status ▾Priority ▾Department ▾3search id · email · subject
4
Support · email · #SUP-1042 · 2h
Anna Meyer
Can't log in after password reset
5AI SuggestedSLA at riskTechnical Issue
6JS
1
Views. List, a people-centric Contacts view, or a drag-and-drop Kanban board.
2
Filters. Narrow by status, priority, department, assignee, SLA, labels, channel, AI state.
3
Search. Find by ID, email, subject, or message content.
4
Spine. The colored edge signals status / AI state at a glance.
5
Badges. AI suggestion, SLA flags, category, labels, attachments, ticket link.
6
Assignee. An avatar if claimed, or + Claim to take it yourself.

8 · Working a conversation

Open a message and you get the full thread, AI help in the tabs, a composer, and the action buttons.

Conversation
1 Anna Meyer · Can't log in high
2SLA
3AICustomerKBActivityNotes
4
Hi, I reset my password but now I just get an error. Help!
Hi Anna — can you tell me the exact error text you see?
5Suggested reply · DOCS · 86% — “A reset link expires after 30 minutes…”
Reply as Jamie…
6ReplyNoteKBSend ⌘↵
7Create TicketResolve & Save to KBClose
1
Header. Sender, subject, status, priority — plus a “More” menu (copy link, reanalyze, check contradiction, mark as lead/suspicious, and — admins only — delete). Change the department from the header strip dropdown.
2
SLA bar. How much time you have before the target is missed.
3
Tabs. AI analysis, Customer info, Files, KB suggestions, Activity, internal Notes, Conflict check. A Lead tab appears only once a message is marked as a lead.
4
Thread. The full back-and-forth; your replies vs the customer's.
5
Suggested reply. A drafted answer on the KB tab — click Use, edit it, then send. Nothing goes out on its own.
6
Composer. Switch between a customer Reply and an internal Note; attach files; insert KB; send with ⌘↵.
7
Action strip. Turn it into a ticket, resolve (and grow the KB), or close.
Part 2 · End-to-end scenarios

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

A stuck customer gets unblocked

Support · from first email to a saved KB answer

Agent
  1. A customer emails “can't log in after resetting my password.” It's auto-routed to Support and lands in the inbox as open.
  2. You click + Claim to own it, open the KB tab, and see a suggested answer about reset links expiring. Task 1
  3. You click Use, tweak the wording, and Send (⌘↵). Status moves to awaiting response.
  4. The customer replies “that worked, thanks!”client replied.
  5. Since this will come up again, you click Resolve & Save to KBresolved, and the answer now powers future AI suggestions. Task 7
B

A hot lead comes in

Sales · from a chat message to a tracked opportunity

Agent
  1. 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.
  2. You open the Lead tab and check the captured name, company, and interest — fixing anything the AI missed. Task 5
  3. You click Create Lead Ticket so it's tracked through the pipeline, and reply fast with next steps.
  4. Because it's a large deal, you add an internal Note and reassign it to a senior rep via the assignee avatar. Task 6
  5. Your manager watches enterprise leads under Statistics (Overview, Team Performance, Messages, SLA) and steps in if one stalls.
C

A refund request, handled cleanly

Billing · agent + manager, with an audit trail

Agent → Manager
  1. An email “please refund last month's charge” routes to Billing.
  2. You verify the account and the charge — without promising a refund yet. You keep your reasoning in an internal Note.
  3. You click Create Ticket (→ Task 2), set its priority to high, and escalate for approval — captured in the ticket, your notes, and the audit trail.
  4. Your manager reviews and tags the conversation with a Refund pending label (applying labels is a manager / admin action), then approves.
  5. Once approved, you reply confirming the refund and click Resolve & Save to KB (or Close for a one-off).
D

Mail nobody could place teaches the system

Routing + learning · agent today, admin later, automatic tomorrow

Agent → Admin
  1. An ambiguous email arrives that the router can't confidently place, so it's marked needs routing.
  2. In the Needs Routing queue you read it, pick Billing, and click Route. Task 3
  3. You (and teammates) keep routing similar mail the same way. The learning engine notices the pattern.
  4. An admin opens Engine Activity, sees the proposed rule with its evidence, and clicks Accept. Task 9
  5. From now on, that kind of mail auto-routes to Billing — it never hits Needs Routing again.
Part 3 · Step-by-step tasks · for agents
1

Answer & resolve a customer message

The core loop — you'll do this dozens of times a day.

Agent
  1. In the Inbox, open the conversation. If it's unassigned, click + Claim to take ownership.
  2. Read the thread. Open the KB tab for a suggested answer (the AI tab shows the analysis — category, priority, summary).
  3. Click Use on a good suggestion — it drops into the composer as an editable draft.
  4. Edit it to fit the customer, then click Send (or press ⌘↵).
  5. When it's solved: if the answer is reusable, click Resolve & Save to KB; otherwise Close.
Conversation
AIKBNotes
Reply as Jamie…
ReplyNoteKBSend ⌘↵
Create TicketResolve & Save to KBClose
Nothing is sent automatically — you always edit and send the reply yourself.
Before you send: the Conflict tab (or More → Check Contradiction) flags where your draft or the KB answer contradicts something this customer was already told — worth a glance on anything sensitive.
2

Turn a message into a ticket

When it needs tracking, ownership, or engineering.

Agent
  1. In the conversation's action strip, click Create Ticket — it's pre-filled from the message.
  2. Set the Title and Priority; optionally add a Category and Assignee. AI Enhance can polish the description.
  3. To involve engineering, tick Sync to Jira (or Push to Jira later). Synced tickets are then edited in Jira, not Odly.
  4. Track it in the ticket's Comments tab — tick Internal for team-only notes — and add files in Attachments.
Create ticket
TitleLogin error after reset
PriorityHigh ▾
CategoryTechnical Issue ▾
AssigneeUnassigned ▾
Sync to JiraCreate
Most messages don't need a ticket — they're just answered and resolved. Reach for a ticket when work spans replies or teams.
3

Route a message from Needs Routing

When the router couldn't decide a department.

Agent
  1. Open Needs Routing from the left menu.
  2. Click a row to read the message if you're unsure where it belongs.
  3. Pick the correct department from the dropdown.
  4. Click Route — it moves to that department's queue. If it's junk, click Spam instead.
Needs Routing
Anna Meyer · Invoice question
Route to… ▾RouteSpam
Tom Becker · Partnership idea
Marketing ▾RouteSpam
Every routing decision trains the learning engine — route accurately and less lands here over time.
4

Handle spam & suspicious mail

When a message is flagged Suspicious or Filtered.

Agent
  1. Open the flagged conversation and read it. (Suspicious and Filtered are two forms of the filtered / spam status from §3.)
  2. If it's legitimate, click Not Spam — Approve to move it into the active inbox.
  3. If it's genuine junk, click Move to Spam.
  4. If it's phishing or a scam, don't just dismiss it — approve only if safe, and escalate the threat to a manager.
Flagged message
Suspiciousspam filter flagged this
Not Spam — ApproveMove to Spam
Phishing? escalate — don't just dismiss
Your spam and approve decisions also train the engine to filter better next time.
5

Handle a sales lead

When a message shows buying interest (or is auto-marked Lead).

Agent
  1. If it isn't flagged already, open the More menu and choose Mark as Lead.
  2. Open the Lead tab and check the captured details (name, email, company…). Edit anything the AI missed.
  3. Click Create Lead Ticket to track it through the pipeline.
  4. Reply fast with clear next steps — speed wins deals.
Lead tab
NameTom Becker
Emailtom@acme.com
CompanyAcme Ltd
InterestEnterprise plan
Create Lead Ticket
In Sales, mark leads liberally so nothing slips through.
6

Hand off to a teammate

When someone else should take it, or you need input.

Agent
  1. Switch the composer to Note mode and write the context — this is internal only, never sent to the customer.
  2. Reassign by clicking the assignee avatar on the conversation and picking a teammate.
  3. If it belongs to another team, change the department from the conversation header.
Hand off
ReplyNote
Internal note — only the team sees this…
Assign to
JSMaria K ▾Dept: Support ▾
Notes keep the full context for whoever picks the conversation up next.
For managers · knowledge & oversight
7

Grow & tidy the knowledge base

Everyone saves; admins review & approve what's captured (managers can view).

Admin

Where: Knowledge Base (left menu)

  1. Anyone: when resolving, choose Resolve & Save to KB to capture the question & answer.
  2. Open Knowledge Base and filter to Pending.
  3. View each entry, then Approve the good ones, Edit the almost-good, or Hide the noise.
Knowledge base
AllPendingApprovedHidden
How to reset a password
quality 86%ApproveEditHide
A clean, approved KB means better AI-suggested replies for the whole team. Clear the Pending queue weekly.
8

Tune a routing rule

When mail keeps landing in the wrong department.

Manager

Where: Settings → Rules → Routing Rules

  1. Open the routing rules and filter by All / Manual / Learned.
  2. Create or open a rule: pick the target department and a type (subject contains, body contains, sender domain, …).
  3. Set the value / pattern and example text, then adjust the weight (higher wins when several rules match).
  4. Toggle Enabled — and disable a Learned rule that's grown too broad.
Routing rules
AllManualLearned
Billing ▾subject contains
“invoice”weight 5on
The strongest fix isn't the rules screen — it's the team routing consistently, which is what the engine learns from.
9

Review the learning engine's suggestions

Approve or reject what the engine proposes across its domains.

Admin

Where: Settings → AI → Engine Activity (and Learning Trust)

  1. Open Engine Activity to see proposals grouped by domain (routing, spam, detection, …).
  2. For each, check the summary, confidence, and evidence count.
  3. Click Accept to apply it, or Decline (optionally with a reason).
  4. For a routing conflict, expand the evidence and Edit one rule to tighten it, or Merge the two.
  5. Set how boldly it acts under Learning TrustManual, Balanced, or Aggressive.
Engine Activity
routing “invoice” → Billing
92%14 examplesAcceptDecline
Trust:ManualBalancedAggressive
Start in Manual or Balanced; move to Aggressive once you trust what it's proposing.
For admins · setup
10

Connect a mailbox (or other channel)

When adding a source that feeds the inbox.

Admin

Where: Settings → Integrations (the on-screen tab)

  1. On the Integrations tab, pick a message-source card — Email, Gmail, Telegram, or Slack. (The same screen holds the Jira card used in Task 2.)
  2. Email (IMAP/SMTP): enter host, port, address, password, and TLS. Gmail: use the OAuth sign-in instead.
  3. Choose the search criteria and lookback window, then assign the department(s).
  4. Save — new mail now flows into the inbox. (Telegram/Slack use a bot token; Slack is event-driven, no polling.)
Email source
IMAP hostimap.acme.com
Port · TLS993 ·
Addresssupport@acme.com
DepartmentSupport ▾
Save
Flag a source as a Knowledge Base source to also mine its content for Q&A pairs.
11

Invite a teammate

When adding a new person to your organization.

Admin

Where: Users (left menu)

  1. Open Users and click Invite User.
  2. Enter their email and pick the organization.
  3. Choose a role — Agent (support), Manager (moderator), read-only (associate), or Admin (org_admin).
  4. Assign their department(s) and send — they'll get an email to set a password.
Invite user
Emailnew@acme.com
RoleSupport Agent ▾
DepartmentSupport ▾
Send invite
Give people the minimum departments and role they need; you can always adjust later.
Account security: invited users set their own password from the email link, then enable 2FA under Settings → Profile. Admins can require org-wide 2FA and a password policy under Settings → Organization → Security.
12

Set up AI for your organization

To enable suggested replies, analysis, and auto-reply.

Admin

Where: Settings → AI

  1. Open Settings → AI, pick your provider, and paste that provider's API key on its card (Odly is bring-your-own-key). Providers: OpenAI, Anthropic, DeepSeek, Perplexity, Qwen, AWS Bedrock, Ollama, or a Custom OpenAI-compatible endpoint.
  2. Choose the model for that provider.
  3. Review the prompts & model settings the AI uses for analysis and drafting.
  4. Configure Lead qualification (which fields to collect) and Auto-reply (whether AI may draft/send, and its guardrails).
  5. The same tab governs the learning engine — set the Trust Mode and review proposals (see Task 9).
AI settings
ProviderAnthropic ▾
ModelClaude ▾
Auto-reply
Lead qualification
You enter the provider's API key yourself on its card in Settings → AI — it's per-organization (bring-your-own-key). Without a provider, the full manual workflow still works — you just don't get drafted answers.
13

Set your SLA targets

Define the response and resolution times the team is held to.

Admin

Where: Settings → Organization → SLA Thresholds

  1. Open SLA Thresholds.
  2. For Ticket SLA, set a first-response (minutes) and resolution (hours) target for each priority — Critical, High, Medium, Low.
  3. For Message SLA, set a first-response target per channel — Email, Telegram, Slack, Chat/Widget, Other.
  4. Save — targets apply to new tickets and messages and drive the SLA breach / at risk flags.
SLA thresholds
PriorityResponse · Resolve
Critical15 min · 4 h
High1 h · 8 h
Medium2 h · 24 h
Set targets you can actually hit — breaches are only a useful signal if the bar is realistic.
14

Add a department

When you need a new team queue (e.g. a new HR or Marketing desk).

Admin

Where: set up during onboarding — no self-serve screen yet

  1. Decide the essentials: the department name, and which mail, sources, and people belong to it.
  2. Odly has no self-serve “Departments” form today — contact your Odly onboarding / platform contact to create it.
  3. Once it exists, link message sources to it and add routing rules & skills that target it.
  4. Grant the right users access to the department (see Task 11).
  5. 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.”
Departments
No self-serve form yet
→ contact onboarding
Then, once created:
link sourcesadd rulesgrant users
Keep departments few and non-overlapping — clear boundaries make routing and the learning engine far more accurate.
15

Restore a deleted message

When a conversation was removed and needs to come back.

Admin

Where: Deleted Messages (left menu · admin only)

  1. Open Deleted Messages — it lists everything soft-deleted from the inbox.
  2. Find the conversation and click Restore to return it to the active inbox in its previous state.
  3. To remove it for good, use Delete permanently — this can't be undone.
Deleted messages
Anna Meyer · Old newsletter reply
RestoreDelete permanently
Restore and permanent delete are admin-only. And if a customer replies to a deleted thread, it resurfaces on its own as client replied — so you rarely need to restore by hand.
The screen snippets are simplified illustrations, not exact screenshots. Verified against the current app.