New Workflows
This page is a source of mockups for some prototypical features.
Â
Evergreen Bounties
What is it?
- As a user, I want to be able to create a bounty once and have it available for an indefinite period for claimants. This is because I want my bounty to be a recurring task that doesnât change often.
Proposed Workflows
- Creator starts the bounty create process
- Provides bounty details
- Passes optional flag âMake this bounty evergreen?â
- In the web UI: provide an explanation or tooltip
- In the discord bot, simply provide a flag
- Assuming from here the flag is selected
- When the bounty is claimed:
- Check the existence of the flag
- When claimed, do not claim the original bounty, instead POST a new bounty directly to In Progress with the following data:
- Indicate evergreen with a boolean flag
- Indicate parent or child
- If parent: list child Ids
- If child, list parent Id
- Add a message to the âBounty Claimedâ notification
- â...as you marked this bounty as evergreen it will stay on the board as Open. Weâve created a separate bounty automatically for you and <user> to collab on - LFG! <bountyId>â
// parent
evergreen: true,
isParent: true,
children: [
0x3445, 0x54949, 0xffff,
]
// child
evergreen: true,
isParent: false,
parentId: 0x457ABC
Â
- The creator at any time should be able to Remove or Edit the evergreen bounty
- Fields should be restricted, it should not be possible to edit away the evergreen status
- Child evergreen bounties should not be editable (which is fine because theyâre not in the Open state)
- Deleting the parent should move it to a
Closed
state, we should make it clear that any active children will still be running
Dev Estimates
Depends on:
- Ability to edit/delete bounties (API Auth)
Other than that the technical tasks are:
- Add evergreen fields to bounties schema (S)
- Add evergreen flag to bounty create workflow (XS)
- Add the evergreen check in the bounty claim workflow (XS)
- Trigger the bounty create functionality if an evergreen bounty is claimed (M)
- Amend user messaging on discord if evergreen bounty detected (S)
- Integrate Edit evergreen features into discord and Web UI (M)
- Add evergreen tests - API (S)
- Add evergreen tests - Discord (L)*
Â
Overall, we see this piece of work as small-medium T shirt size. Itâs not a hugely complicated piece, but would ideally be placed to work behind the API instead of having 2 implementations.
Â
*Test suite yet to be defined on the discord bot, should be quick on the API front
Â
Updated Bot Flow (1/21/2022)
Â
After starting development, a few nuances became apparent. Here is an updated proposal for the bot flow:
Create Bounty
Bounty Board Channel:
/
Bounty Bot DM with Creator: Asks for description, requirements, and due date as before. Then asks to publish:
chkaloon#6313: 918717913702227988
MyBounty
(10 claims available)
My description
Bounty Id
61eb155956901849af649f4a
Criteria
My Criteria
Reward Status Deadline
1500 BANK Open Saturday, October 29, 2022
Created by
chkaloon#6313
đ - publish | â - delete | Please reply within 60 minutesâ˘Today at 11:19 AM
Â
After publish, this appears in Bounty Board Channel:
chkaloon#6313: 918717913702227988
MyBounty
(10 claims available)
My description
Bounty Id
61eb155956901849af649f4a
Criteria
My Criteria
Reward Status Deadline
1500 BANK Open Saturday, October 29, 2022
Created by
chkaloon#6313
đ´ - claim | â - delete â˘Today at 11:19 AM
Â
Claim Bounty
Bounty Board Channel:
Claimant claims by reacting to claim flag. Bounty remains on Bounty Board. Note that number remaining changes:
chkaloon#6313: 918717913702227988
MyBounty
(9 claims available)
My description
Bounty Id
61eb155956901849af649f4a
Criteria
My Criteria
Reward Status Deadline
1500 BANK Open Saturday, October 29, 2022
Created by
chkaloon#6313
đ´ - claim | â - delete â˘Today at 11:19 AM
Â
Bounty Bot DM with Claimant:
chkaloon#6313: 918717913702227988
MyBounty
My description
Bounty Id
61eb155956901849af649f4a
Criteria
My Criteria
Reward Status Deadline
1500 BANK In Progress Saturday, October 29, 2022
Created by Claimed By
chkaloon#6313 BobSmith#4324
đŽ - submit | đ - help â˘Today at 11:19 AM
Â
Bounty Bot DM with Creator:
Your bounty has been claimed by @BobSmith https://test-bountyboard.bankless.community/61eb156a56901849af649f4b
Since you marked your original bounty as evergreen, it will stay on the board as Open. https://test-bountyboard.bankless.community/61eb155956901849af649f4a
Remaining Flow
The rest of the flow is similar:
- Submit and Completed actions are taken in DMs with the Bounty Bot.
- All that remains on the Bounty Board are open bounties. Once a bounty is claimed or all available claims of an evergreen bounty are exhausted, it is removed from the Bounty Board channel.
Multi-Apply Bounties
Â
What is it?
- As a user, I want to be able to have multiple people apply for my bounty before it is moved into a âclaimedâ state. This is because users are prone to spamming the claim button and I want to give the right person for the job time to apply for the bounty.
Proposed Workflows
- Bounty creator adds the flag
allow multiple people to apply for this bounty?
- Iâd argue this should be default.
- The claim button then doesnât move the bounty from Open â In Progress, instead, the user is prompted to add a message to the creator (either Discord DMs or Web UI)
- The creator receives a notification that â[they] have a new claimant (total X claimant(s)), here is what <user> wrote:
I love you
â
- The creator should be able to âview claimantsâ when looking at the bounty, which will pull up:
- Discord: could or should potentially just direct the user to the web UI
- UI: list of options, just click a button to confirm
- Once confirmed, move selected claimant to the âclaimedâ and progress the flow as normal.
Data Model
- For backwards compatibility, we add fields to the schema:
claimants: Array<Claimant extends DiscordUser { message: string }>;
allowMultipleClaims: boolean;
- Claimants will appear if
allowMultipleClaims
is set totrue
- Claimants will contain the user details, and the message they sen
Dev Estimates
If we need a UI to select from a list of claimants, thatâs probably the largest piece of work here, unless we have a flow in discord where the creator can @ the user, the rest of the flow is as normal. Iâd say itâs probably on par with the above, maybe slightly easier depending on the progression of the frontend.
Tasks are:
- Add claimants to the schema (S)
- Add a prompt for the user to add a message when claiming (S)
- Add the message alongside the claimant in an array and update the schema (S)
- Amend the frontend to show the claimants and messages (M)
- Allow creators to select a claimant from this list (S)
- Once selected, move one of the claimants into âclaimed byâ (S)
Â
IOUs
What is it?
- A way for project managers to quickly note a bit of good work done and a planned reward amount.
- Puts together a private list of virtual IOUs. List is private to the owner, but a future phase may allow for notifying the subject
- Need a way to resolve the IOUs - delete? Mark done?
Bot commands:
Create an IOU: [*TWE could do /bounty create or /bounty create-iou, but both of those add more friction. Want it to be quick]. Do we need to DM them for a description or is title enough?
/iou description: <what it is for> owed-to: <user> reward: <bank>
List unresolved IOUs:
/iou list list-type: unpaid
List resolved IOUs (to see how I rewarded previous work):
/iou list list-type: paid
Resolve an IOU:
/iou paid iou-id: <id> note: <optional note>
Delete an IOU:
/iou delete iou-id: <id> note: <optional note>
Â
When an IOU is created, it is DMâd to the creator as a card. Reactions of âPaidâ and âDeleteâ will be added.
The /bounty list command wonât add reactions to keep the number of messages down.
Data Model Changes:
iou: boolean
resolution_note: text
owedTo: user
Â
Other considerations
- Need to handle messaging correctly (discordMessageId and other message objects)
- Validate /bounty commands to prevent invalid commands and options for IOUs (claim/submitted/apply/assign )
- Need to handle lack of a due date?