Deliverable 1 - sidarragac/JobJourney GitHub Wiki

1. Introduction

1.1. Purpose

JobJourney is for those who dont have an idea of how to start their professional career or how to continue it to reach their dream job. The main objective of this project is to show all these people that are lost in their proffesional path the best possible way to get the job of their dreams, providing them the tools and the required information to start and advance in their careers, helping them achieve their goals and realize their professional dreams. JobJourney guides its users to achieve a successful career path by suggesting optimal jobs on the way to his dream job

1.2. Scope

The scope of the JobJourney web application is to guide individuals in their professional development by providing personalized, structured career roadmaps. The platform will cater to two main user groups: individuals seeking to advance or start their careers and companies looking to identify potential candidates for job positions. The application will feature functionalities such as user profile management, roadmap generation (with job suggestions and study material recommendations), and progress tracking, along with the ability to visualize other users' career journeys.

1.3. Product Overview

1.3.1. Product Perspective

The JobJourney web application is a service looking to provide well structured roadmaps for people and a solution to companies during the analisys process. Due to that, it is a standalone service, meaning that it doesn't rely on any larger system. The product will only require the availability of internet and the mentioned third party resources (APIs and OAuth applications.).

1.3.2. Product Functions

The web application will:

  1. Create roadmaps based in user's goal with generative artificial intelligence.
  2. Provide an interface to look for other roadmaps and users.
  3. Show statistics for companies about user interests using filters.
  4. Show roadmaps related to the intereset brought by the user.

1.3.3. User Characteristics

We have found two main target groups:

  1. People in general that:
    • Wants to start a carreer.
    • Already has a profession, but wants to improve in certain topics.
    • Already has a profession, but wants to learn a new topic in another area of knowledge.
  2. Companies that:
    • Want to analyze what areas of knowledge people are interest in for different regions.
    • Are looking for prospects to occupy a position in the company.

1.3.4. Limitations

  • The LLM used has a price per token presented. If the web application runs out of credits, the model will stop providing responses.
  • The response given by the LLM might be long, which could lead to low load rate of the page for a user when requesting a new roadmap.
  • The user is able to write any kind of objectives which can cause that some of them are not related to the selected interest. This will affect the filtering system behaviour, causing it to show roadmaps with unrelated content.
  • The web application does not have a evaluation system to verify that the user have learned the proposed topics. This means, the user might have completed a roadmap, but does not has the concepts.
  • To ensure a good connection between the third party services, the web application must have a stable internet connection.

1.4 Definitions

TERM DEFINITION
API Application Programming Interface: Protocol with a set of rules, used to communicate applications among each other.
Interest Set of areas of knowledge that highlight what the objective of a roadmap is.
LLM Large Language Model: Area of the artificial intelligence trained to understand and generate human language.
OAuth Open Authorization: Standart protocol that allows users to grant third-party application access to their data on a service.
Objective Specific and measurable goal that an user aims to achieve.
Prompt The request sent to the LLM composed by specific information provided by the user.
Roadmap Strategic plan that outlines the steps needed to achieve a specific objective.
UI User Interface: Space where the user is given the tools to interact with the functionalities of the web application.

2. References

  1. Young people are struggling to find career information (2023)
  2. AI at work. What employees expect (2024)
  3. Why is it so hard for students to go back to university (2024)
  4. DJANGO documentation (V5.1)
  5. JINJA (for html) documentation (V3.1)
  6. OpenAI API documentation
  7. Google OAuth documentation (2.0)

3. Specific Requirements

3.1. External Interfaces

  1. User management:
    • Description of purpose: Allows user/company to login, register or edit their account.
    • Source of input or destination of output: User/Company.
    • Valid range, accuracy and/or tolerance: Specific password validation as follows: At least one capital letter, one symbol, one number and more than 8 characters.
    • Units of measure: N/A.
    • Timing: Required when there's a new user/company, when a user/company wants to use any of our service or when a user/company wants to edit their profile details.
    • Relationships to other inputs/outputs: Information used for filtering roadmaps.
    • Screen formats/organization: In the login part there will be a principal box in which there will be 2 boxes where you will be able to enter the username and password, a button below this for submit, also below this there will be an option for forgotten password. On the other hand in the registration form there will be 4 boxes where you will be able to enter the name, email, confirm email and password, below a confirmation button and below this other methods for easier registration from other applications.
    • Window formats/organization: Both forms will be in the middle of the screen
    • Data formats: Strings and email format for email cell.
    • Command formats: /authentication.
    • End messages: Completed process confirmation.
  2. Roadmap management:
    • Description of purpose: Allows the user to manage their roadmaps. Specify the requirements for the creations of the roadmap and visualize the created roadmaps.
    • Source of input or destination of output: Input from the user is send for the OpenAI API interface. Output is given as a well styled interface displaying the roadmaps.
    • Valid range, accuracy and/or tolerance: High tolerance, there's no validation amongst the information introduced by the user.
    • Units of measure: N/A.
    • Timing: Displayed when the user wants to visualize, create or update a roadmap.
    • Relationships to other inputs/outputs: N/A.
    • Screen formats/organization: The screen format for roadmap creation has the text fields to add the interest, objective and expected salary. The eiditon of the roadmap will be similar screen, but it will ask the user for the specific step to modify and the reason why he want's to change it. Finally, each roadman will have kind of a timeline, where each checkpoint is shown, with it's resources, job suggestions, and the option to mark as a completed.
    • Window formats/organization: The whole screen will be used to display the roadmaps of the user. On each of them, the user will find the options to either enter the roadmap, or edit it. In the lower corner, there will be an option to create a new roadmap.
    • Data formats: Strings and JSON objects.
    • Command formats: /roadmap.
    • End messages: Completed process confirmation or roadmap display.
  3. Roadmap filter:
    • Description of purpose: Filter roadmap based on user's interests.
    • Source of input or destination of output: Given user information on register.
    • Valid range, accuracy and/or tolerance: Should select one of the interest listed if want to filter using a different interest.
    • Units of measure: N/A.
    • Timing: Displayed when the user is on the analytics section.
    • Relationships to other inputs/outputs: Related to the user input when registering.
    • Screen formats/organization: Will consist of a text entry box where the user will enter their interests that he want to search for and to the right there will be a button to send the request.
    • Window formats/organization: This search bar will be located at the top of the page.
    • Data formats: Strings.
    • Command formats: /analytics
    • End messages: None.
  4. OpenAI API:
    • Description of purpose: Used to generate responses used to display the roadmaps to the user, and apply requested changes on roadmaps.
    • Source of input or destination of output: Input from the given information of the user at the roadmap management interface. It's output is used to display the roadmap on the roadmap management interface.
    • Valid range, accuracy and/or tolerance: Accuracy depends on the database of the used LLM and it's last update.
    • Units of measure: Tokens.
    • Timing: Used when there's a request to create or update a roadmap.
    • Relationships to other inputs/outputs: N/A.
    • Screen formats/organization: N/A.
    • Window formats/organization: N/A.
    • Data formats: JSON Object.
    • Command formats: /roadmapGenerator
    • End messages: N/A.
  5. Google OAuth:
    • Description of purpose: Provide another possibility to register and login for the users.
    • Source of input or destination of output: Output is used to fill out some information that is requested when the users logs in.
    • Valid range, accuracy and/or tolerance: Requires validation of missings cells.
    • Units of measure: N/A.
    • Timing: Displayed when the user/company request to login with Google.
    • Relationships to other inputs/outputs: N/A.
    • Screen formats/organization: Below the submit button in the registration/login form there will be a button where you can sign up/ sign in with a google account
    • Window formats/organization: As the registration form will be in the center of the screen, this one will also be in the center, below the whole form
    • Data formats: User Token (JSON object)
    • Command formats: N/A.
    • End messages: Successful register/login.

3.2. Functions

# Requirement
FR01 If there's a new user, The JobJourney web application shall provide the user with the ability to register using a form.
FR02 The JobJourney web application should provide the user with the ability to login in their account to access their process in roadmaps.
FR03 The roadmap system shall provide the user with the ability to register their specific interests and objectives.
FR04 The roadmap system shall use LLM models to create a roadmap based on the given objectives and interest of the user.
FR05 The roadmap system should add to the roadmap job suggestions the user can take on each step.
FR06 The roadmap system should provide the user with the ability to mark a step as a completed.
FR07 The roadmap system could provide the user with the ability to request updates on some steps of the roadmaps.
FR08 The data-analisys system should display by areas of interest, the roadmap completion of other users if and only if they are similar to the user's interest.
FR09 The roadmap system could bring recommendations based on every specific goal.
FR10 The data-analisys system should allow to visualize other users roadmaps and progress by filtering some pre-established categories.
FR11 The roadmap system could provide the user with the ability to build different roadmaps that shows different ways to reach the same goal.
FR12 The JobJourney web application should bring the user categories to distinguish the the different roadmaps the users request.
FR13 The JobJourney web application could be able to use the Google OAuth tool to register and log in.
FR14 The roadmap system could use webscrapping tecniques to bring information regarding the user's proposed goal.
FR15 The roadmap system could allow the user to clone other users roadmap in order to complete it themselves.
NFR1 The JobJourney web application should be user-friendly, creating a simple UI that explicitly shows where is the user standing at and implementing well labeled buttons.
NFR2 The JobJourney web application should be fast preventing the usage of large animations or heavy files.
NFR3 The JobJourney web application should guarantee that the password created by the user is secure by verifying that it has at least one capital letter, one symbol, one number and more than 8 characters.
NFR4 The roadmap system should allow the user to visualize the progress of a roadmap.

3.3. Usability Requirements

# Requirement
UR01 The system should allow users to access any main section in no more than three clicks from the homepage. Menus must be intuitive and logically organized, using clear and easy-to-understand language.
UR02 An average user should be able to complete common tasks, such as registering on the platform or making a purchase, in less than 5 minutes. The steps required should be minimized and the process simplified as much as possible.
UR03 All buttons, menus, and interface elements must maintain a consistent design and behavior across all sections of the system. This includes the consistent use of colors, typography, and labels to avoid confusion and improve memorability.
UR04 If a user makes a mistake, the system must provide a clear and instructive error message that explains what went wrong and how to fix it. Additionally, forms should allow for error correction without requiring the user to re-enter all information.
UR05 he system must be accessible and functional in the most popular web browsers and on mobile devices. It should also comply with WCAG 2.1 level AA accessibility guidelines, including support for assistive technologies such as screen readers, and allow for navigation using only the keyboard.

3.4. Performance Requirements

# Requirement
PR01 The AI-powered roadmap generation should process user inputs and generate personalized paths within 3-5 seconds.
PR02 The web application must be optimized to handle complex data processing tasks (like AI-driven analysis and roadmap generation) while keeping CPU, memory, and bandwith usage below 75% to avoid server overload and ensure consistent performance.
PR03 As the platform is expected to serve both individuals and companies, it must efficiently handle growing numbers of users without performance degradation. It should be able to support at least 10,000 concurrent users during peak times, ensuring seamless interactions and analysis for each user.
PR04 The system must be capable of executing complex queries, such as searching for users' journeys or matching candidates to job requirements, in under 1 second. This ensures that the application remains responsive even when dealing with large datasets.
PR05 The web application must ensure an uptime of 99.9% to support users' continuous career development and companies' recruitment processes.

3.5 Logic Database Requirements

# Requirement Types of information used Frequency of use Accesing capabilities Data entities and their relationships Integrity Constraints Data retention requirements
LDR01 The web application shall enable users to create and manage their profiles. Name, last name, email, country, password (Strings). High for reads during login; medium for writes during profile updates. Users can access and update their profiles; administrators have full access. User (Entity), it's related to one or many interest and to one or several roadmaps. Email must be unique and not yet used; Password must follow security criteria set by our web application and stored securely. Data must be kept until the user request to delete an account.
LDR02 The web application shall enable companies to create and manage their profiles. Name, email, country, aras of interest, password (Strings). Moderate: Used only when the company is logged in looking at the analisys our web application provides. Comapines can access and update their profiles; administrators have full access. Company (Entity), related to one or many interest. Email must be unique and not yet used; Password must follow security criteria set by our web application and stored securely. The name field must be large enough to receive the full name of the company. The name field must be different to the username field. Data must be kept until the user request to delete an account.
LDR03 The JobJourney web application shall allow users to generate and modify personalized career roadmaps. Roadmap Name (String), Checkpoints (String), Completion Status (integer). High for both reads and writes (frequent updates, roadmap creation/modification). Users can create, view, and edit their roadmaps; administrators can manage all roadmaps. Roadmap (Entity) related to User. Checkpoints cannot be null. Roadmaps information per user must be kept until it's user account is deleted.
LDR04 The JobJourney web application shall maintain a record of job searches made by companies. Job Title (String), Company Name (String), Search Date (Date) High for writes (logging each job search); moderate to high for reads (analysis and matching) Users can view their search history and match results; administrators can analyze aggregate data Job title and company name should be valid entries. Will only keep track of the last 10 searches.
LDR05 The Roadmap system shall keep a database of areas of interest. ID (Integer), Area of interest Name (String) High, used for the analytics system Managed by administrator. Users can select interest to tag their roadmaps, and companies to declare they area of knowledge. Interest (Entity), related to user, roadmap and company. The interest must express what area of knowledge is trying to identify. Interest won't be deleted, but can be updated whenever there's a better definition. All entities related to the modified interest, will receive the respective update on cascade.

3.6 Desing Constraints

# Requirement
DC01 The JobJourney web application shall be developed using HTML, CSS, JS, Python and Django and related libraries.
DC02 The JobJourney web application must be developed using Bootstrap to ensure that the design is responsive and adapts properly to different screen sizes on mobile devices, tablets, and desktops.
DC03 The data analysis system should be implemented using the Pandas and Matplolib libraries.
DC04 The JobJourney web application must use MySQL as the primary database management system.
DC05 The JobJourney web application shall integrate with the OpenAI API for providing advanced language processing features. This integration is required to create the roadmaps that are the main objective of this web application

4. Video

JobJorney - Deliverable 1 video

⚠️ **GitHub.com Fallback** ⚠️