We’ve been hard at work making Raven even more powerful, intuitive, and easy to use. Whether you’re managing teams, collaborating with customers, or just streamlining your workflows, these new features are designed to make your life easier. Let’s break it all down!
AI Agents
With Raven, you can now connect OpenAI’s large language models (LLMs) to your Frappe apps—no coding required. Using OpenAI’s Assistants API behind the scenes, you can create “agents” that follow specific instructions and perform predefined tasks.
At The Commit Company, for example, we’ve built an agent that processes invoices and creates Purchase Invoices in ERPNext. The agent is configured to extract the supplier ID from the GST number on the invoice and generate invoices using specific items from the Item doctype. We’ve defined “functions” for tasks like fetching a supplier based on a GST number or creating a purchase invoice. All of this is set up through the user interface, with instructions written in plain English. This makes it easy to create agents tailored to your unique needs.
Security is built into the system: agents can only access documents and APIs that the end user has permission to use. If a user doesn’t have access to create a specific document, the agent won’t either.
What’s more, the instructions for these agents can be dynamic. You can use Jinja tags to pass in variables like the current user’s name, ID, or today’s date. To make this even easier, we’ve included commonly used Jinja variables directly in the Raven interface.
For instance, we’ve created an agent to handle employee expense claims. Employees can send photos of receipts or invoices to the agent, which then creates an expense claim. If the employee sends additional images or PDFs in the same thread, the agent updates the expense claim with the new amounts and attaches the files directly to the document.
But how does the agent know the employee’s ID? Simple. We include this instruction in the agent’s configuration:
“The user's name is {{ full_name }}
, and their employee ID is {{ employee_id }}
. If the bill doesn’t include a date, use {{ frappe.utils.today() }}
as the current date.”
Looking ahead, we’re exploring support for other large language models. We’re also researching ways to fine-tune open-source models so they can integrate seamlessly with ERPNext and other Frappe apps without having to write complex instructions in the first place.
Workspaces
You can now create separate spaces on Raven with each space having its own set of channels.
This makes it easy to manage user permissions when you would like to have certain users only access channels in a given space, but not others. For example, you could create a space for your customers where your customers can interact on multiple channels, and still maintain a private space for your internal communication needs. If you’re in a multi-company setup, you could set a workspace per company so that employees belonging to that company can only access channels in their designated workspace. Speaking of companies, the Frappe HR integration now supports creating channels per department in their own distinct workspace based on the company.
With the workspace feature, we have also made a lot of improvements on performance. Since workspace or channel members don’t change often, these are always read from the cache - this not only makes network requests faster, but also consumes less compute resources.
Document Alerts
This was one of the most requested features by the community and we’re glad to announce that it’s finally here! Similar to the inbuilt notifications feature in Frappe, you can now set up notifications for when certain documents are created or modified. These notifications can be sent to either specific users or channels.
For example, we have set up a notification to send a message to the #finance
channel whenever an Expense Claim is created by an employee. These notifications can use Jinja to embed fields in the message content and automatically come up with a document preview in the chat with options to print or apply workflow actions directly from Raven. Since these messages are linked to the document, you would also be able to view the message on the document’s timeline in the Desk interface.
You can even set conditions for when notifications are sent. For instance, when an expense claim is approved, a direct message can be sent to the employee from the bot, notifying them of the update.
But what if you want to send a notification to a user but the document doesn’t have a “User” field? No problem! You can customize the recipient using Jinja. In the Expense Claim example, we used Jinja to fetch the user ID from the associated Employee record.
Customizable document previews
In addition to document alerts, you can now attach documents to your messages and share them with your team. Use the “Send a Raven” button in the Desk interface or directly from the chat input.
To make this feature even more powerful, you can customize which document fields are displayed in the chat preview. Simply navigate to Settings > Document Previews and select the fields you want to show. This works seamlessly with automated document alerts, ensuring your team sees only the most relevant information.
Message Action Builder
Ever needed to create a support ticket or project issue directly from a message? With Message Actions, you can do just that.
For example, if you have a workspace where your customers engage with your team, and you need a quick way to copy the message and create a support ticket, you can create a Message Action to map the message content to a support ticket in Frappe Helpdesk. Use Jinja to format values or fetch data, such as the customer ID from the sender’s user ID. Once set up, simply right-click on any message, select the Message Action, and a popup will appear with all the details pre-filled. Submit the form, and a support ticket is created instantly in Frappe Helpdesk.
This feature is highly customizable—you can create any DocType or even call an API to generate multiple documents or interact with external services.
Custom Emojis
Express yourself in more ways than ever with custom emojis. Simply upload an image/GIF on Raven, and use it across the app when reacting to messages.
More Layout Options
To enhance readability, users can now choose between different chat layouts. Whether you prefer a left-right layout or the traditional format, you can set your preference in Settings, and it will sync across both web and mobile.
More New Features
YouTube Embedding: Sharing a YouTube link now displays an embedded video player instead of a plain link preview.
Pinned Messages: You can now pin important messages in a channel for easy reference.
Embedded Timestamps: If you have users across multiple timezones, you can now send a message with embedded timestamps.
For example, you could type “Let’s meet tomorrow at 9AM” and click the timestamp button in the editor - this will automatically convert “9AM” to a timestamp. When users in a different timezone see your message, they would simply hover over “9AM” and see the time in their local timezone.
On the Radar
We’re building a new native mobile app! This project has been in the works for a long time. It’s built using React Native and frappe-react-sdk and is structured to share around 40% of the code that’s already there on the web app (we’ll share more on the tech stuff during Frappe Build!) We expect to release the app on the stores by March (subject to approval from Apple and Google 🙂 )
We’re also working on a push notification relay server tailored to Raven’s use case. This would also cater to users who are self hosting the app and cannot use Frappe Cloud’s push notification relay service.