Restspace use cases
Treasury management
Email members when paid
Gnosis Safe transaction event triggers sending an email to DAO members when they get paid.
Variations
- Also send email showing total payment to payment manager.
Buy on price threshold
Hourly trigger reads token price API and triggers a stored transaction to buy a coin with treasury funds when its price falls to a threshold
Variations
- Sell a coin when the price reaches a threshold.
- Send an SMS to alert someone when this happens.
Financial report
Monthly trigger reads treasury transactions, transforms data, sends to a template to format report which is created as a page in Notion and emailed to Executive SubDAO.
Variations
- Create the report as a PDF.
Coordinape payments
A timed trigger set up to activate at the end of a Coordinape epoch sends an email to the Coordinape administrator with a link. The link points to a form hosted on Restspace which allows upload of the Coordinape CSV of allocations. When uploaded, the CSV is processed to calculate USDC payment amounts and loaded into Gnosis Safe’s transaction queue. Multisig signatories are emailed to inform them they need to sign off the transaction.
Monthly payments
Monthly trigger reads data specifying a list of regular payments then creates transactions in the transaction queue for these in Gnosis Safe, and informs via email all signatories that need to sign them.
Variations
- Inform signatories by SMS.
Voting triggers
SMS on voting complete
3 Hourly trigger checks votes on a proposal and sends SMS to proposer when votes attain quorum.
Variations
- Email number of votes made whether or not at quorum.
Notify proposal creation
Hourly trigger checks Notion for creation of draft proposals and emails proposal coordinator when one is created.
Auto SubDAO budget proposal
Hourly trigger checks Notion for creation of budget documents for SubDAOs, reads document, extracts funding requirement data and creates a proposal for that funding.
Proposal withdrawal
An automatically generated form for proposal withdrawal is hosted on the Restspace domain. Submission of the form creates an email sent to the proposal coordinator including the reasons for withdrawal. If the proposal coordinator approves the withdrawal, they click a link in the email which fires an HTTP request trigger which tells the voting API to withdraw the proposal from the system.
Membership information
User info in Discord
A user context command is added to the Restspace bot in the DAO’s Discord which requests information from Sobol on a DAO user. When this is triggered, the Sobol API is called to retrieve this information, it is transformed via a template and returned as a response to the Discord webhook to show the Sobol information to the Discord user.
User analytics
A weekly trigger makes requests to group and member information APIs in Sobol to gather analytics information on the current structure and membership of the DAO which is stored in a database. This time series data is exposed via a Restspace API and can be shown in a front end which displays it graphically.
User information form
A command is created in the Restspace bot in the DAO’s Discord which asks a user for their wallet address. The Discord service in Restspace then triggers sending this information to Sobol and and an internal store mapping Discord id / wallet address for use in other workflows.
Discord welcome DM
A webhook is added to the Restspace bot in the DAO’s Discord to trigger when a user becomes a guild member. The trigger fetches the text from a Notion page which is the welcome and orientation information for a new user, formats this into a DM and sends this DM to the user.
Bounty management
Create bounty
Restspace hosts an automatic form page which when posted, saves data on a Bounty into a database service, then puts the full database of bounties through a template and updates the content of a Notion page listing all bounties, as well as posting the details to a Discord channel.
Claim bounty process
The Restspace Discord bot is set up to send all messages in a Claim Bounty channel to Restspace. The arriving message triggers an email to the Bounty Manager. It contains a link which the Bounty Manager can click to assign the Bounty to the applicant via the HTTP trigger in the next item.
Assign bounty link
An HTTP trigger includes the data of the applicant and the bounty, and uses this to update the Bounty database. It also DMs the new bounty holder with the link to enter their wallet address, email and other details through an automatic form hosted by Restspace.
Bounty holder details
An automatic form for bounty holder details is hosted on Restspace and when posted, these details are sent to the user database.
Bounty holder payment
On bounty holder payment dates, a trigger fires which pulls active bounties, payment rate and holder details from the bounty database, and uses this to create a multisig transaction in Gnosis Safe for each payment, then emails the list of links for these transactions to all the multisig signatories for them to sign the transactions.
Access management
Remove disallowed roles
Hourly trigger reads Discord API to find all users with a role for accessing a private area. For each of these users, an internal map is used to read the user’s wallet address. The wallet addresses are used to query a Chain Service to determine whether they fulfil criteria for access e.g. ownership of an NFT. Those which do not now fulfil the criteria have the role removed via the Discord API.
Add allowed roles
A command in Discord is set up which when activated, causes the Discord service to trigger a process. The user’s wallet address is retrieved from an internal map and used to query a Chain Service to determine whether they fulfil criteria for access, e.g. ownership of an NFT. If they do, they have a role to access a private area added via the Discord API.
Discord
Time recording
Clock-on / clock-off commands are created in Discord which cause the Discord component to trigger saving start and end time for the user.
Meeting attendance
10 minute trigger reads the Discord channels in a Guild, and for each voice channel, records the users in the channel in a data store.
Guest pass command
Create a command in Discord available only to those with Full Member role which causes the Discord service to trigger adding a Guest Member role to the user.