Run cohort analysis from Slack
Ask the cohort question in the channel and receive a focused analytical cut.
Trigger
Channel Message Received
Triggered when a message is posted in a Slack channel (public, private, or multi-party IM). Does NOT match direct messages.
Action
Execute Code
Execute python code in a sandbox and return any result, stdout, stderr, and error. use /home/user folder to write/read files. try to not use plt.show() as the code is executed remotely. use files for image/chart output instead.
Why this helps
Cohort questions require data work that is easy to postpone.
- Answers retention questions faster
- Keeps the requested cut explicit
- Supports repeatable cohort logic
Setup
Build it in a few focused steps.
- 1Connect Slackbot and Codeinterpreter once in Notis.
- 2Create an automation for cohort analysis requests.
- 3Tell Notis to use the named dataset, define cohorts from the available dates, and return retention or revenue tables with assumptions.
- 4Pick Channel Message Received as the trigger and choose a report channel.
- 5Test with one real cohort question.
Questions about this workflow
What if cohort dates are unavailable?
Notis should identify the missing date fields and ask for them in the report.
Can it compare multiple cohorts?
Yes, specify the cohort groups and comparison window in the Slack request.
When this happens · Trigger
Do this · Action
Supported Triggers and Actions
Notis builds workflows that link Slackbot to Codeinterpreter. A trigger fires from one place; an action lands in another.
Slackbot triggers
Codeinterpreter actions
Recurring trigger
Notis starts this workflow on a schedule, such as daily, weekly, or during business hours.
Create Sandbox
Create a sandbox to execute python code in a jupyter notebook cell. this is useful for agents to communicate, execute code, see output, read files, write files, etc. it's like you own personal computer, but in the cloud. use /home/user folder to write/read files.
Webhook trigger
Notis starts this workflow when an external tool or custom backend sends an HTTP request.
Execute Code
Execute python code in a sandbox and return any result, stdout, stderr, and error. use /home/user folder to write/read files. try to not use plt.show() as the code is executed remotely. use files for image/chart output instead.
New Channel Created Trigger
Triggered when a new channel is created in Slack.
Get File
Get a file from the sandbox and returns the file. the files should be read from /home/user folder.
Channel Message Received
Triggered when a message is posted in a Slack channel (public, private, or multi-party IM). Does NOT match direct messages.
Run Terminal Command
Run a command in the terminal and returns the stdout, stderr, and error code. use /home/user folder to write/read files.
Direct Message Received
Triggered when a new direct message (DM) is sent to a user in Slack. Catches all DMs across all DM channels.
Upload File
Upload a file to the sandbox environment. the files should be uploaded to the /home/user folder.
Message Reaction Added
Triggered when a reaction is added to a message in Slack. Supports optional filtering by channel and emoji name.
Message Reaction Removed
Triggered when a reaction is removed from a message in Slack. Supports optional filtering by channel and emoji name.
Reaction Added Trigger
DEPRECATED: use `SLACK_MESSAGE_REACTION_ADDED` instead. Triggered when a reaction is added to a message in Slack.
Connect any two apps with Notis in the middle.
Slackbot and Codeinterpreter, or any other combination from 1,000+ integrations.
When this happens · Trigger
Do this · Action
Save your first hour today.
7-day trial of any paid plan, with 20$ of usage included.
No card. Works with personal or business Codeinterpreter.