Closed SallyMcGrath closed 1 year ago
Hi Sally. I think we need more information. Is this an automated solution? And is there a data source available for trainees which includes their email that we could compare against the emails in Slack to identify them?
Maybe the trainee data is mixed with the volunteer data and needs to be separated for an automated solution to be created and this separation could be a deliverable in itself?
@kfklein15 I think this was your tender. Can you provide some extra details?
Hi @haroon-ali-dev , I am not sure I understand the question about this being automated? Are you referring to new or current trainees?
We have the current applicants' e-mail addresses. However, they might not be using the same one. So we need to be creative and think about a solution for this, which I can give you, but I was hoping to be given other options - since mine might not be the right way.
Nowadays, we have no differentiation on Slack for staff, trainees, volunteers, etc.
@kfklein15 Hi. By automated I meant if the identification of all the trainees is going to be done with software or manually where we are looking through data in spreadsheets and then manually changing the profile info in Slack.
I did have a possible solution in mind but I wasn't sure whether to discuss it first here or create a bid first. It's my first time dealing with tenders.
The solution I had in mind was a GitHub Actions cron job that runs daily/weekly. The Slack API is used to pull all users of the workspace. The Google Sheets API is used to pull a list of trainees from a spreadsheet. Their emails and names are checked and if they match then 'Trainee' is added to the Title field in the Slack profile of the user. But you're saying that the emails might not match so then maybe some names won't match either.
Another solution I was thinking of was manually sorting out all the information for current trainees then for new trainees use Zapier to trigger an action when a new user joins the workspace. The action for this trigger sends an email to that person asking them to add 'Trainee' to their profile if they are a trainee.
That would be a great solution, but it would mean we would have to have the correct e-mail addresses in a system somewhere (we will, but that's a bigger project)
Think about them as two steps, which is how I tried to make it clear on the tender: 1) New people identified: this means you no longer have the problem of not knowing anyone joining 2) A one-time job of cleaning/cleansing current people
@kfklein15
I hope my train of thought is going down the right route 😅.
@haroon-ali-dev
@kfklein15 I've looked around and wasn't able to find a way to allow the user to input anything for selecting roles when joining the workspace.
How about a Slack app that does two things:
This should enforce all new and current users to select a role.
Could you maybe give a hint about the solution you had in mind?
@haroon-ali-dev, I don't have a clear solution. But nowadays we have lots of fields on the Slack profile (check your's out). Could one of them be what we need? And could it be a a blocker - without setting this up you cannot join Slack?
@kfklein15 Yes we have many fields available in the profiles of Slack users and we can also add custom fields. But it looks like we can only do something with them after the user gets into the workspace. I've had a thorough look. There doesn't seem to be a way to prevent users from joining the workspace in relation to these fields at all.
It looks like we cannot do anything at the workspace joining part like adding fields for the user to fill in and telling them it's mandatory. Once they join, just takes you straight into the workspace.
But after users have joined, custom Slack apps can be used to run actions based on triggers such as new users joining, users joining channels, sending messages etc. The users can be sent options to click, their profiles can be changed based on those options. So a lot can be done with those fields after the user joins using custom Slack apps. So maybe we need to think about the solution in that realm.
I am a qualified supplier, and I am tendering for this work.
Manually editing Slack user profile data for current trainees. Developing a custom Slack app built with Node.js that will enforce the selecting of trainees on Slack for all new users, facilitating better organization and ensuring the preservation of important user distinctions, particularly for trainees.
15th December 2023
25th December
3rd January 2023
1st July 2024
Thank you, @haroon-ali-dev , for your tender submission.
The solution is good, but it is not achieving what I wanted, which is getting this information from the start. We have plenty of data. We ask our trainees or volunteers to add their profiles, but no one does it. And I am not sure that a bot will actually make people do it. Why do you think this would work?
I know you investigated quite a lot, but is there any other way we think we could do this from the start?
@kfklein15 I could not find a way to get the information before joining the workspace. Slack does not provide the ability to add custom fields to the workspace joining process which the user could use to select a role before they join. There doesn't seem to be a way to do this at all.
The reason why I think the solution would work is because the user will be prompted to give the information frequently on Slack. Surely every user reads their DMs. So when a Slack bot keeps sending them a DM to select a role, they will surely select because they want to stop getting the DMs. This is very different than posting a message in a channel and asking users to make sure that they select a role, or sending everyone an email, because a bot can keep doing it for us. Also, the bot will provide the roles to select within the DM itself instead of asking them to go into their profiles and do it which speeds up the process. Let's say in the end not every new user has selected a role, but I'm sure most will which should make the job of identifying users a lot easier for whoever has to do it.
I've been researching with Google, AI and also talking with one of my final project mentors and now I think there can't be a perfect solution to this, but only a solution which makes the job of identification easier.
Thanks, @haroon-ali-dev . What happens if someone has multiple roles - i.e. I have been a volunteer and now am a staff? We have trainees who have been volunteers and then staff. Could this be a smaller project if we focus only on identifying trainees right now?
@kfklein15 If someone has multiple roles then the options for selecting can be like:
That covers all options I think. Very simple instructions for selecting can be shown to the users by the Slack app. For example: "Please select an option that covers all your current roles and any roles you have had in the past."
Choosing to identify trainees only, with the Slack app won't make my solution/project smaller because the options for selecting other than 'Trainee' would just be part of the options list in the code so we're talking about removing just a few lines of code.
You could also go with not having any software solution at all and just do a manual edit for all current trainees. Then when the time comes near for deactivating inactive users, or some other need, you create a new tender for manual editing. And you keep repeating this.
Thanks, @haroon-ali-dev Doing it manually every year or 6 months means incorrect data for that period, which means we can never automate our offboarding process.
I am awarding this contract to @haroon-ali-dev pending these amends:
~ @kfklein15
🎉 Thank you.
@SallyMcGrath Does the code for the custom Slack app (or any code for any tender) need to be reviewed by volunteers? Do we need to create tests? Or is it that if the code works fine then that is enough?
@SallyMcGrath Also, is deploying the bot part of my work? Or do I hand the repo off to someone in dev ops and then they do it?
@kfklein15 @SallyMcGrath There is an issue with the manual-editing part.
I'm not sure now if manual editing can be done. What do you advise?
Thanks, @haroon-ali-dev, for looking into this another time. Let's remove the manual side from the tender and focus on the automated bot on welcome and when active again.
@kfklein15 I've removed the manual side from the tender. I think the next step is for me to sign a contract so I'm waiting to receive that from you.
Does the code for the custom Slack app (or any code for any tender) need to be reviewed by volunteers? I suggest you get a review by asking the community. Do your work in public. Do we need to create tests? Yes you need to write tests. Or is it that if the code works fine then that is enough? Tests please. 😄
@SallyMcGrath Thank you for answering those questions.
There was another question in my post about deployment which you answered in a session so I'll put that here:
Do we (the suppliers) do the deployment? Or do we hand it off to someone at CYF to deploy? Paraphrasing: "The suppliers do the deployment by getting access to the services that CYF use such as Netlify/AWS etc. The supplier should ask in devops channel in Slack about where we should deploy the code and get guidance. This is a paid deliverable."
@haroon-ali-dev, as per your point above, I am adding the following to the tender:
Deliverable £50 Deployment of the system into CYF infrastructure
Definition of Done Deployment is done by using the services that CYF uses, such as Netlify/AWS, etc, using the DevOps channel in Slack for guidance and approval
Let me know if you have any queries.
@kfklein15 thank you, I've added the deliverable to my bid.
@haroon-ali-dev , as discussed, the phrase to identify this should be: "Am/Was a CYF Trainee". Thanks.
https://docs.google.com/document/d/1YYGO4VW1oXKLVZRmQ5rqdOG37tvVxAaODpzmpxCjsMI/
Submit your bids by commenting on this issue. You can see a template bid here https://docs.google.com/document/d/1_ZYRPX4JnDdY1F_C1CVyq99YPuV33eDs1Lk5A0wOBOE/edit#heading=h.tqtjzcfetl58
UPDATE:
We will leave this tender open until
OCTOBER 24 2023 23:00 UTC
and then give our decision by
OCTOBER 27 2023 23:00 UTC