colorstackorg/oyster

Opportunities 💰

Opened this issue · 0 comments

Context/Problem

Currently, we have a Slack channel called #opportunities where members share different opportunities that they find. Multiple members have expressed how critical following this channel has been in their job search and overall ColorStack experience. It's very nice to just drop an opportunity quickly in this channel, but naturally this can get pretty overwhelming in a chat environment. There's no way to just find opportunities that you are looking for, you have to go 1-by-1 through each opportunity and decipher whether or not the opportunity is relevant/meaningful to you. Slack's search functionality is not ideal for this use case. This means that keeping up w/ opportunities can be very time consuming and overwhelming.

Additionally, these messages are very unstructured: sometimes it's a link to a job posting, sometimes it's a link to a LinkedIn post that has the job posting, sometimes it's multiple links, sometimes it has additional context and sometimes it doesn't. The benefit of lack of structure w/ this is it is very easy to quickly share an opportunity w/o additional constraints. That said, this puts the onus on the reader to have to click through the opportunity to find the details they're looking for (ultimately to know if they care about the opportunity).

We want to build something that makes finding opportunities easier.

Description

The solution will be to automatically create opportunities found in the #opportunities and introduce some structure/context to them with tags, ensuring that opportunities are easily filterable. We also want members to be able to save the opportunities they care about, so they will be able to bookmark opportunities they care about.

An opportunity will consist of the following fields:

  • Date Posted
  • Description: An AI-generated summary of the opportunity.
  • Expiration Date: Date that the opportunity is no longer relevant.
  • Posted By: The ColorStack member who posted the opportunity.
  • Slack Message: The message that the opportunity was created from.
  • Tags: Filterable tags associated w/ the opportunity (ie: Internship, New Grad, Summer '25, etc).
  • Title: An AI-generated title for the opportunity.

Acceptance Criteria

  • When an opportunity is posted in #opportunities or #opportunities-full-time, it will create an opportunity in our database. This should use AI to grab the company associated w/ the opportunity as well as generate a title/description.
  • After the opportunity is created, it should be put in a pending state.
  • To get an opportunity from pending to ready, a member needs to paste the content inside of the link (or LinkedIn post) and AI will use that content to automatically add tags to the opportunity. It should choose from existing tags if possible.
  • After the opportunity is created, it should send a Slack notification to the person who posted it asking them to do the above.
  • There should be a top-level Opportunities tab in the Member Profile.
  • A member can view opportunities posted.
  • A member can bookmark opportunities that they want to save.
  • For each bookmark that an opportunity gets, the original poster should get 10 points.
  • When a member views an opportunity, that will be stored in the database.
  • A member can search and filter opportunities, including:
    • By Company
    • By Tag
    • "Bookmarked"
    • "Seen"
    • "Not Yet Seen"
  • A member can free-text search opportunities, which will match against:
    • Company
    • Description
    • Slack Message
    • Tags
    • Title
  • When an opportunity is clicked on, it should show the full details of the opportunity including the Slack message that the opportunity was created from.
  • An opportunity can be edited at any time after creation by anyone in the community.
  • When an opportunity gets edited, we should store them as a "contributor" to the opportunity and show them in the opportunity table. We should also store a log in Mixpanel such that we know who did what.
  • In the companies page, we should show the # of open opportunities in the card.
  • In the individual company page, we should list all of the open opportunities in the page.

Future Ideas

  • A member can add an opportunity from the Member Profile directly.
  • Show "trending" opportunities based on either views or bookmarks.