Front Door is a decentralised recruitment referral protocol using Web3 tools and technology to solve a Web2 human coordination problem with a huge size of prize.
For the job bounty to be released the funds need to be there in the first place. For this first version we will allow for a hiring company to deposit the funds from the moment of job creation up until candidate placement method request #8
Deposits:
We need to create a method to allow deposits up until the set bounty value (set at moment of job creation). As well as a required positive value deposit, the method can also take as input parameters: 1st month client fee refund percentage (as percentual int), 2nd month client fee refund percentage (as percentual int), 3nd month client fee refund percentage (as percentual int). Only allow the input parameters to be set if the method if requested by smart contract owner. In most cases and when hiring company is requesting this to deposit funds it will just be a transfer of value (in stable coin ex: DAI)
Note: do not allow deposits to sum higher then the initial set bounty value.
Withdrawals:
We need to create a method to transfer funds out to candidate, referrer and front-door. Withdrawals can be requested by these 3 entities at any given time after funds have been deposited by hiring company. Though it is only after the first month completion that the smart contract will allow for funds (bounty) draining. Also note that the both referrer, candidate and front-door will only be allowed to withdraw the amount equal to the percentage locked after first month (this would be 1-[1st month refund percent] after first month). Let's say that a client can be refunded 75% of the total bounty after first month then the total referrer and candidate payout will add to 25%.
The same will repeat for second and third month. After the third month and in case the candidate has not quit during the first 3 months then total bounty can be drained/withdrawn by referrer, candidate and front-door (owner).
Note the percentages in which the 3 payout entities will be payed is always:
candidate: 10%,
referrer: 65%
non winning referrers with interviewed candidates with weighed by interviewed counts (end of 3rd month) : 5% (split by all)
front-door: 20%
Cancelation:
We need to have a method that allows for a job to be canceled. This can happen if a candidate quits up until the end of the 3rd month, if for example the job was placed through another platform, the hiring company did not go ahead with the recruitment process etc. In such cases a hiring company should be allowed to cancel the job. That means a refund will happen and there will be a withdrawal according to the allowed percentage (check above) given the current point in time within the 3 month probation period. After this no cancelation should be possible. This method has jobId as input param. Only hiring company related to the given job should be allowed to request this method. If cancelation happens before first month the total bounty will be refunded back to hiring company. After that the refund percentage will be kept in smart contract and given to hiring company as credit on a next recruitment process/job.
Workflow:
For the job bounty to be released the funds need to be there in the first place. For this first version we will allow for a hiring company to deposit the funds from the moment of job creation up until candidate placement method request #8
Deposits:
We need to create a method to allow deposits up until the set bounty value (set at moment of job creation). As well as a required positive value deposit, the method can also take as input parameters: 1st month client fee refund percentage (as percentual int), 2nd month client fee refund percentage (as percentual int), 3nd month client fee refund percentage (as percentual int). Only allow the input parameters to be set if the method if requested by smart contract owner. In most cases and when hiring company is requesting this to deposit funds it will just be a transfer of value (in stable coin ex: DAI)
Note: do not allow deposits to sum higher then the initial set bounty value.
Withdrawals:
We need to create a method to transfer funds out to candidate, referrer and front-door. Withdrawals can be requested by these 3 entities at any given time after funds have been deposited by hiring company. Though it is only after the first month completion that the smart contract will allow for funds (bounty) draining. Also note that the both referrer, candidate and front-door will only be allowed to withdraw the amount equal to the percentage locked after first month (this would be 1-[1st month refund percent] after first month). Let's say that a client can be refunded 75% of the total bounty after first month then the total referrer and candidate payout will add to 25%. The same will repeat for second and third month. After the third month and in case the candidate has not quit during the first 3 months then total bounty can be drained/withdrawn by referrer, candidate and front-door (owner).
Note the percentages in which the 3 payout entities will be payed is always: candidate: 10%, referrer: 65% non winning referrers with interviewed candidates with weighed by interviewed counts (end of 3rd month) : 5% (split by all) front-door: 20%
Cancelation:
We need to have a method that allows for a job to be canceled. This can happen if a candidate quits up until the end of the 3rd month, if for example the job was placed through another platform, the hiring company did not go ahead with the recruitment process etc. In such cases a hiring company should be allowed to cancel the job. That means a refund will happen and there will be a withdrawal according to the allowed percentage (check above) given the current point in time within the 3 month probation period. After this no cancelation should be possible. This method has jobId as input param. Only hiring company related to the given job should be allowed to request this method. If cancelation happens before first month the total bounty will be refunded back to hiring company. After that the refund percentage will be kept in smart contract and given to hiring company as credit on a next recruitment process/job.