CodeYourFuture / Tenders

CYF Procurement
https://cyf-tenders.netlify.app/
Creative Commons Attribution 4.0 International
4 stars 2 forks source link

Tender: Identify Trainees on Slack #2

Closed SallyMcGrath closed 1 year ago

SallyMcGrath commented 1 year ago

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

haroon-ali-dev commented 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?

SallyMcGrath commented 1 year ago

@kfklein15 I think this was your tender. Can you provide some extra details?

kfklein15 commented 1 year ago

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.

haroon-ali-dev commented 1 year ago

@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.

kfklein15 commented 1 year ago

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

haroon-ali-dev commented 1 year ago

@kfklein15

  1. This is now making me think about something happening in a Slack app.
  2. With this I'm thinking along the lines of looking through Slack data and finding out who is who and manually changing their profile because why would software be built for that if it's going to run only once.

I hope my train of thought is going down the right route 😅.

kfklein15 commented 1 year ago

@haroon-ali-dev

  1. I would be even simpler: how do you not let people into Slack WITHOUT this information? It should be a barrier, not an afterthought.
  2. Agree.
haroon-ali-dev commented 1 year ago

@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?

kfklein15 commented 1 year ago

@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?

haroon-ali-dev commented 1 year ago

@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.

haroon-ali-dev commented 1 year ago

Qualified Supplier

Declaration

I am a qualified supplier, and I am tendering for this work.

Portfolio

Contact Details

Proposal

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.

Components

1. Manual Profile Data Modification

2. Custom Slack App - User On-boarding

3. Custom Slack App - Role Validation

Benefits

Deliverables

Considerations

kfklein15 commented 1 year ago

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?

haroon-ali-dev commented 1 year ago

@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.

kfklein15 commented 1 year ago

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?

haroon-ali-dev commented 1 year ago

@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.

kfklein15 commented 1 year ago

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.

kfklein15 commented 1 year ago

🤝 Contract Awarded

I am awarding this contract to @haroon-ali-dev pending these amends:

  1. Only trainees should be identified, not staff and volunteers
  2. The "Manually edit Slack data to identify all current trainees" deliverable to be kept at the original price of £100
  3. Please schedule transition in the New Year so it doesn't get lost in the Christmas holidays

~ @kfklein15

👣 Next steps

  1. Finalise your proposal with any amends.
  2. Book a call with @kfklein15 , link in my Slack Profile

🎉 Thank you.

haroon-ali-dev commented 1 year ago

@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?

kfklein15 commented 1 year ago

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.

haroon-ali-dev commented 1 year ago

@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.

SallyMcGrath commented 1 year ago

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. 😄

haroon-ali-dev commented 1 year ago

@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."

kfklein15 commented 1 year ago

@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.

haroon-ali-dev commented 1 year ago

@kfklein15 thank you, I've added the deliverable to my bid.

kfklein15 commented 11 months ago

@haroon-ali-dev , as discussed, the phrase to identify this should be: "Am/Was a CYF Trainee". Thanks.