RFC: User Stories for DAO Job Board

Question: How do I allow angelgomez.eth to edit this post?

This was also written in Notion, so some links doesn’t work as expected (e.g. move to a section “Creating an Organization” when clicking on a link). You can find the original Notion page that we wrote here: RFC: User Stories for DAO Job Board

:mag: Overview

A job board to connect web3 talent with web3 opportunities. Everyone has the freedom to do all sorts of things in the job board, everyone can create job/gig postings, everyone can apply to job/gig postings, everyone can be a part of an organization, and whatnot.

:bulb: Potentially gets rid of unnecessary overhead (i.e. changing profiles, signing up with other wallets when they decide they want to hire people, or when they decide they wanna look for gigs, etc.)

:briefcase: The Motive

Finding meaningful work, giving people new opportunities, and helping organizations find the talent they need.

:bulb: User Stories

A high-level overview of all the app’s features.

:bulb: This helps define an MVP by excluding the listed user stories ****to cover in a certain Milestone.

  • Below, you’ll find our user stories explaining WHAT we pretend the app to deliver in the short and long term.

    :truck: On-Boarding

    Everything is described from the perspective of a new user. This should be as user-friendly as possible to reduce any overhead that could cause people to get annoyed.

    In fact, we’re thinking of letting people Create Jobs/Gigs without having to create a profile (even though it is helpful). Also, people can

    • I want to sign up using my wallet
      (i.e. Sign in with Metamask :fox_face:)
    • I want to select what I wanna do in the app:
      1. "I want to look for people to hire for a job"

        • I want to get asked if I want to create an organization or request to join an existing organization that I may be a part of

        :bulb: Requires existing organization members to vote on accepting a join request for a new member, this creates consensus in the organization that the person that they know the person that wants to join the organization

        • I want to skip ahead and set up my profile instead.
        • I want to setup my profile
        • I want to skip setting up my profile and do it later.
        • I want my wallet address/ENS to be in the URL
      2. "I want to find jobs & gigs"

        • I want to setup my profile
        • I want to skip setting up my profile and do it later
        • I want a job list (relevant to my profile)
        • I want a gig list (relevant to my profile)
        • I want my wallet address/ENS to be in the URL

    :rocket: Main Flow

    • I want to create job/gig postings

    • I want to filter jobs depending on my profile’s keywords.

    • I want to find jobs from a list.

    • I want to apply for jobs

    • I want to apply for gigs

    • I want to view all my job applications and filter them by status, so I can keep track of them and would know the next step

      :bulb: These status names are not yet finalized, if you can come up with a better name or better set of statuses please don’t hesitate to suggest.

      • I want to get notified when my job application status has been updated and click a link to redirect to the page
    • I want to view all my gig applications and filter them by status, so I can keep track of them and would know the next step

      • I want to get notified when my gig application status has been updated and click a link to redirect to the page
    • I want to see a roadmap page for the app so that I will know what to expect that gets shipped sometime in the future

      • I want to get notified by subscribing to a newsletter to get updates whenever a certain set of features or Milestone is shipped
    • I want to view a list of job applications that have applied to my created job posting

      • I want to update the status of their job application whenever I want to let them know if we want to move things forward
      • I want to get notified when someone have sent a job application
    • I want to view a list of gig applications that have applied to my created gig posting

      • I want to update the status of their gig application whenever I want to let them know if we want to move things forward
      • I want to get notified when someone have sent a gig application

    :computer: Setup Profile

    • Username (it will let people choose their own username they can be found within the site)

    • Optional: add email ****(allow people to

    • Optional: add an avatar (from file or link)

    • Optional: add Bio (a brief description of the user within 50-100 words)

    • Optional: Add Status (e.g. “Looking for developers”, “Looking for designers”, “Looking for smart contract auditors”)

      :bulb: These statuses will depend on the user’s specific needs (Looking for a Job/Gig or Looking for People, Just Looking Around, Not Available, etc.)

    • I want to add social media links & various external links

    • I want to select POAPs & Completion NFTs to be featured on my profile card

      :bulb: POAPs & Completion NFTs can be automatically attached to the profile and allow them to select which ones they want to feature while also allowing everyone to view all of their POAPs & Completion NFTs.

    • I want to add my experience as a professional

    • I want to add my education (college, courses, boot camps, etc.)

    • I want to add projects I’ve worked on in the past (personal projects, work projects, hackathons, etc.)

    :bank: Creating an Organization

    • I want to upload or use an existing URL for a logo that represents our organization
    • I want to upload or use an existing URL for a cover photo for our organization that gets displayed on the organization details page
    • I want to name my organization
    • I want to write a brief description for our organization
    • I want to identify my organization as a DAO, a company, a small team
    • I want to add social media links & various external links
    • I want to add certain members by their wallet addresses, they do not have to be signed up in the app but just their wallet address would suffice

    :briefcase: Creating a Job/Gig Posting

    • Job Posting
      • I want to identify the target position for this job posting, so that
      • I want to write up a brief description for this job posting
      • I want to write detailed information for this job posting (using WYSIWYG)
      • I want to select up to 10 keywords that are relevant to the position & responsibilities
        (e.g. backend, smart contract, infrastructure, oracle, frontend)
      • I want to add compensation details
      • I want to indicate the type of opportunity
        (e.g. Full Time, Part Time, Contract)
      • I want to add a link that points to a website where we originally have the job posting for our organization
      • I want to receive applications directly on the job board (helps separate job-board and DAO candidates from the rest)
      • I want to to HIGHLIGHT my job post (stands out from others) by paying a small fee
    • Gig Posting
      • I want to identify the target position for this gig posting
      • I want to write up a brief description for this gig posting
      • I want to write detailed information for this gig posting (using WYSIWYG)
      • I want to select up to 5 keywords that are relevant to the position & responsibilities
        (e.g. backend, smart contract, infrastructure, oracle, frontend)
      • I want to reward people who help me in these gigs with crypto
      • I want to deposit crypto on user selection (optional)
      • I want to pay people directly for helping me with a gig (optional)

:hammer_and_wrench: How to make this possible

Even though we already have a prototype and some front-end + back-end code working, there’s still a lot of work to do before we release an MVP. The process will consist of a few key steps.

1. Define the MVP features

What do we want the application to look like in its first iteration? Here are some ideas:

  • :fox_face: Wallet Login

    The Sign Up button will work as the registering method for the site. Using the wallet address as the core piece of data for each user, we will build profiles (like OpenSea). This keeps people from having to remember user/passwords + helps maintain a cleaner profile.

  • :scroll: Create Profile Form

    This form contains everything the user needs and may want to add to stand out. This includes several pieces of data like:

    • PFP
    • Name
    • Username
    • Professional Title
    • Description
    • Status
    • Profile keywords
    • Website
    • Links (Github, Twitter, Behance, etc.)
    • Location
    • Projects
    • Education
    • Experience

    :bulb: NOTE: All these inputs will be optional. If users decide, they can use their wallet address as the only piece of public data about themselves (NOT RECOMMENDED)

  • 🧑🏻‍💻 User Profile

    This is what users will see when they look through people’s profiles. Each profile will contain all the information entered in the create profile form (above).

    :bulb: NOTE: The profile page should be as clear as possible about a user’s skills and worth.
    - The PFP, name, and professional title will be the first few things to show, then followed by a description and profile keywords
    - It should HIGHLIGHT people’s projects (like a portfolio)
    - It should show EXPERIENCE and EDUCATION below everything else
    - Also, each profile page will have an URL using their wallet address with which they signed up (e.g. [job-board.com/u/0x13j2m32m1](http://job-board.com/u/0x13j2m32m1) which would change if the wallet is matched to an ENS name, in which case the profile link will look like this job-board.com/u/ensname.eth)

  • :spiral_notepad: User Profile List

    This page will contain every developer, marketer, designer, etc. signed up on the site. Here’s what it should include:

    • A list of users with their name + professional title + keywords related to their skills/experience
    • A button on each profile item with something like See Profile or Learn More that links to the user profile.
    • A floating modal for the filter fixed to the page that travels with the user as they scroll down
      • this modal will include a filtering input where recruiters and other professionals can search for specific keywords or people’s names.
      • several select/radio options to filter through people depending on their location and other information
  • :scroll: Job Posting Form

    Makes it possible for users to create jobs. This form will be a 3-step form that consists of:

    • Basics

      • Title (required)

      • Description (required)

        :bulb: Maybe it would be necessary to break down the description into different parts, like the following:
        - Overview = brief description of the job
        - Responsibilities = what the job entails and what the candidate will likely work on
        - Requirements = what the organization/recruiter is looking for on each candidate

      • Job Position (Marketing, Engineering, Customer Support, etc.)

      • Type of Job (Full Time, Part Time, Contract, etc.)

      • Job Keywords (required)

        :bulb: This one will define the categories in which the job post will appear within the site. After clicking the Select Keywords button, a modal will show that will allow recruiters to show the categories, skills, and keywords related to each job post (Blockchain, Solidity, EtherJS, Hardhat, Social Media, etc.)

    • Details (Optional)

      • Salary (either Crypto or Fiat and let people choose between different currencies like ETH, BTC, DAI, USDT, USD, EUR, GBR, etc.)
      • Compensation (Equity in percentages and bonuses like stipends, etc.)
      • Location (defaults to remote if left blank)

      :bulb: NOTE: All these Details will be optional. If the person decide to keep them secret, that’s possible. However, it’s encouraged to fill everything to increase the quality of candidates.

    • Summary

      People will get the opportunity to REVIEW the data entered in the previous 2 steps (Basics and Details)

      • It will show a list of Basics where people can review the Title, Description, Position, Type, and Keywords.
      • It will show a list of Details where people can review the Salary, Compensation, and Location
      • It will have an input where recruiters can add their own email or job post link for candidates to apply**.**
  • :page_facing_up: Job Page

    This is what users will see when they click on a job post. Each job post will contain the information entered in the create profile form (above).

    • Each job page should have a form for Seekers to apply. Job seekers can add their resume/CV to their application as well as any links related to the job.
    • Each job page should have an Application List of candidates (only Recruiters will see this list) where they can choose from. This will help reduce competition from other places + give an easier way for recruiters to sort through candidates.

    :bulb: NOTE: Each job page should be as clear as possible with information about the position. Also, it should show stuff like:
    - Keywords below the job title (for friendlier categorization and UI)
    - The PFP and name of the user who posted the job (later, we will add the avatar/name of the organization)
    - Also, each job page will have an URL starting with the recruiter’s address or organization name + the job post title (e.g. job-board.com/jobs/username/marketing-manager)

  • :spiral_notepad: Job List

    This page should contain every job posted on the site, organized by the date of posting.

    • A list of jobs with a title + position + type of job + location per job item entered in the form above
    • A button on each job item with something like See More or Apply that links to the job.
    • Each USER will have jobs curated for their profile (jobs with keywords related to their profile higher up the list)
    • A floating modal for the filter fixed to the page that travels with the user as they scroll down
      • this modal will include a filtering input where job seekers can search for specific keywords related to each job
      • several select/radio options to filter through jobs depending on the Position, Type of Job, Location, and Salary range.

2. Get Designs for Current MVP Features (from the #design-guild)

Once we have the MVP defined (user stories with possible features later), it would be great to send EVERYTHING to the design guild so they can start working on the designs. This would make it easier for them to develop a practical design system + mockups for each page talked about above.

So far @jazza.eth from the design guild showed interest in helping with the job board design system.

Before we proceed with the front-end development, it would be great to have:

  • A design system (typography, shadows, colors, etc.) (Important)
  • Mockups for the MVP Features described above (Wallet Login, Job and Profile Forms, Users and Job lists, User and Job pages) (Important)

:bulb: NOTE: Because the MVP will be simple at first, we don’t need a complex design system or mockups. For the MVP, we want to focus on the best user experience possible.

3. Start Development

With the designs and mockups ready, we can start developing the front-end pages as given by the #design-guild. However, it would be ideal to tackle the development in an organized way, which makes it easy to achieve our goals for the MVP faster and more efficiently. Here’s what’s proposed:

  • Select a group of developers to work on the MVP (limited spots to 3-10 people to avoid clogging the repo). Then proceed with this:
    • Assign a mockup per developer so they can translate them into code
    • Assign developers the creation of routes to connect with the database
    • Assign developers the connection of these routes with the front-end
    • Assign developers the task of testing routes + front-end components
    • Test everything to prepare for the MVP launch

4. Launch MVP

Once the pages are hooked up with the database and everything works as expected, it’ll be time for the MVP to be finally launched. We expect to launch the MVP only to DevDAO members at first, so people looking for devs can post their job opportunities and developers can apply.

Once the MVP is launched, we’ll start the next steps in development:

  • Iterate and fix bugs
  • Scale the site if necessary
  • Plan new features (Gigs Page, Gigs List, smart contract functionality(?) and Organizations) with RFC and User Stories
  • Repeat the same Design + Development process
  • Launch the new features

PS: carlomigueldy.eth & angelgomez.eth wrote this first RFC for the Job Board project if anyone might want to ask questions etc.

GitHub repo http://github.com/DEVeloper-DAO/DAO-job-board

9 Likes

Hey Carlo and Angel thank you for breaking down the job board RFC. And great work to the team with the MVP it’s coming out splendidly. I wanted to mention that the User Profile could be augmented with the addition of the work we are doing in #proof-of-competence. I also think @shawnmitchell.eth would be of great help on how we can put these two ideas together, as he has experience as a hiring manager for a web2 company.

5 Likes

@carlomigueldy.eth @angel and co, epic work on the detail of this RFC. Love it. Sorry I’m slow replying.

Don’t think there is much value of me commenting on the individual stories that have been created so will just share some thoughts on the overall picture and the plan to launch :slight_smile:

Lots of this is probably out of scope of the MVP but though it worth sharing !

We expect to launch the MVP only to DevDAO members at first, so people looking for devs can post their job opportunities and developers can apply.

This sound like the right approach. We’re lucky that we have ~4000 members in the discord sever and ~ 5500 holders of our genesis NFT. That’s a pretty big alpha/beta testing group that gives us an advantage when prototyping new product. We can move really fast internally even if the UX isn’t perfect and iterate and improve as we go :heart:

Have you thought about how this is going to work? How are we going to only allow D_D members access to the applicant side of this first whilst also allowing anyone inside or outside the org to post up jobs/gigs?

One of the major things lacking in the crypto job world at the moment is well curated profiles of companies so job seekers can filter what companies are right for them and have the info they need to make a decision as to whether to apply or not on the job board, rather than having to go and do loads of their own research.

Would recommend signing up to https://otta.com/ and looking at the curated profiles they create for companies, this board has exploded in the UK for tech as it saves job seekers the trouble of having to do so much research into companies of their own backs. Their applicant UX for tracking jobs is really neat too.

On the same point, worth thinking about the info we’re collecting re what job seekers are looking for (may have missed this). For example, what kind of role are they looking for (front-end, full stack), what skills do they have (node, solidity etc.) etc. etc.

The data collected about companies posting jobs and applicants looking for jobs and the matching algorithm for connecting these two user together is key to a successful job board.

There is a lot of scope of what could be done here but to get it right would really require some user research on what new and existing web3 devs really care about. Luckily we have loads of those so if we can engage someone with good user research experience it could make a huge difference to a final product. Imagine we also have people in the community who have built matching algo’s in the past :slight_smile:

Probs not a process you want to do before this MVP but something it’s important to think about soon as will be harder to introduce this well at a later stage.

Onboarding companies

The two sided marketplace challenge is a hard one. We’re lucky that we have dev’s who we can use to beta test it before it goes public but where are the jobs going to come from?

Mentioned about scraping before, this is how Otta and crypto currency jobs first got get jobs onto their platforms and I’d strongly recommended considering the same approach.

If not scraping then maybe the conversation path for companies posting jobs happens on the main developer DAO website so you don’t have to try and build/promote another website (this is very hard/competitive in job seeking).


Hope these comments are useful! (might not be so much for the MVP :eyes: ) but launch internally and iterate sounds like a great shout.

4 Likes

afaik there’s no way to do that

I really love how much time and effort went into this RFC and defining all of the user stories in it. I know that stepping back and going through the RFC process has been immensely helpful already, and I’m glad to see how much more progress yall have achieved with this RFC guiding you.

One thing I definitely want to emphasize with user stories is the importance of the so that part of the user story:

“As a [persona], I [want to], [so that].”

Persona focuses us on a specific type of user, want to tells us what they want to achieve, and so that tells us why.

That why piece is so important because in understanding their motivations for wanting something, we can provide more creative solutions to their problems.

If a user asks us for a bicycle, we can give them a bicycle and know we’ve given them what they asked for.

If a user asks us for a bicycle so that they can ride it up ten flights of stairs, maybe what they really need from us is an elevator.

2 Likes

Happy to jump in on this.

3 Likes

What will power this notification system? Will this be email or push or both for MVP.

1 Like

Maybe we can source a lot of info about the organization by linking with LinkedIn API for Post MVP. Saves the user from filling in all that info

1 Like

Very awesome thank you so much for your feedback and sharing those Kemps they are helpful :palms_up_together:!

Hello with-heart thank you for reading and the feedback!

The thing about the User Story format is that we went from having a persona to removing it, it was due to the fact that we will allow users to do everything in the app freely and as it was described too. But however at the time I am writing this comment-reply I am actually realizing that the persona would’ve been useful to give a perspective to certain actions. I’ll be updating that so it becomes clearer for whoever reads it

I am thinking about email notifications when writing that. Both would be great too

Hello cwong thank you so much for reading it and for your feedback on this!

Yeah that would be very interesting, looking forward to how we can put these pieces together @shawnmitchell.eth @cwong we would be very happy to get some help for this

1 Like

Hey Kemp! These are all awesome points you’re making here so GREATLY APPRECIATED!

As for your concerns/ideas:

Have you thought about how this is going to work? How are we going to only allow D_D members access to the applicant side of this first whilst also allowing anyone inside or outside the org to post up jobs/gigs?

So far, we’ll only share the website in the Discord so everyone who’s interested in finding jobs and posting jobs can sign up. Of course, we aren’t going to limit access to anyone else unless necessary.

As the sign-up is through wallet (Metamask for now) we may limit sign-ups to people who indeed belong to the DAO (by checking they own a genesis NFT) If it gets out of control. This shouldn’t be much work (we already use this to authenticate in the Discord and for POAPs/voting).

One of the major things lacking in the crypto job world at the moment is well curated profiles of companies so job seekers can filter what companies are right for them and have the info they need to make a decision as to whether to apply or not on the job board, rather than having to go and do loads of their own research.

We are planning to allow people to create organizations (which could be companies, DAOs, startups, etc.) where they add EVERYTHING there’s to know about these organizations. This should include the market they’re operating in, year founded, number of employees, etc.

Apart from that, we’re also adding links to each organization’s social profiles and webpage.

But like you said, this would be saved for later, as we don’t want to clog the MVP (instead start with simple user-to-user job posts and gigs) then hop on allowing people to create organizations if they need.

OF COURSE, we’ll have to rethink this feature before launching it (we may come back to pick your brain regarding this).

There is a lot of scope of what could be done here but to get it right would really require some user research on what new and existing web3 devs really care about. Luckily we have loads of those so if we can engage someone with good user research experience it could make a huge difference to a final product. Imagine we also have people in the community who have built matching algo’s in the past :slight_smile:

This is completely true and we’re following your advice. User research will be essential + a quality sorting/search mechanism (we’re already working on this btw)

The two sided marketplace challenge is a hard one. We’re lucky that we have dev’s who we can use to beta test it before it goes public but where are the jobs going to come from?

At first, we want people who post on the #jobs-and-gigs section in the Discord to try the website. There are TONS of jobs being posted every week there, so it’d be awesome to capture some of those opportunities.

The thing about a job board like this is to capture real opportunities from PEOPLE. Instead of scraping standard opportunities that may not really be helpful to job seekers who want to transition into valuable experiences (plus, capture opportunities coming from people within the DAO)

In fact, we’re also discussing an application list where we’re allowing recruiters/job creators to choose people directly from the site (so they can see profiles and get resumes/CVs without going through their emails or company’s posts) and have a sorted list of job seekers coming from the DAO.

Having said that, this is a difficult problem to tackle and you’re right about the competition. But we also have a huge advantage that other sites don’t have - we are over 8,000 devs (some of them entrepreneurs and belong to web3 companies already), + we have strong social-media game within our troops. So, if need be, I’m sure we won’t struggle to find companies/startups to try our job board with a well-thought strategy (or am I wrong to think this?)