Inspiration The inspiration for PathStep stemmed from the observation that young individuals often struggle to navigate the complexities of the job market, especially when seeking their first internships or part-time roles. Traditional job platforms can be overwhelming and lack personalized guidance tailored to their unique needs, such as age restrictions, education levels, and specific skill sets. We wanted to create a supportive environment where youth could not only find relevant opportunities but also grow and learn from their experiences, fostering confidence and practical skills for their future careers.

What it does PathStep is a Youth Job Applier application designed to connect young users with suitable job opportunities, primarily focusing on internships and entry-level positions. It allows users to create a detailed profile, including their age, education level, location, and job preferences. Based on these inputs, the application recommends relevant jobs from a loaded dataset (like the Indeed Data Science Jobs list). A key feature is the "Report Job Experience" section, where users can provide feedback on jobs they've engaged with. This feedback includes a satisfaction rating, hours worked, duration, and insights into strengths gained or weaknesses identified. The system uses this feedback to track user progress (leveling up) and to flag jobs that receive consistently low satisfaction, ensuring that unsatisfactory opportunities are no longer recommended to other users.

How we built it PathStep was built using Java Swing for the graphical user interface, providing a desktop application experience. The backend logic is structured into several interconnected classes:

User: Manages user profiles and their evolving experience levels.

Job: Represents job opportunities, now including a flag for unsatisfactory listings.

JobApplication: Tracks details of individual job applications.

JobLoader: Handles the ingestion of job data, either from a CSV file (like the Indeed dataset) or a hardcoded dummy set for examples. It intelligently parses job titles and descriptions to infer relevant keywords, age ranges, and education requirements.

JobRecommender: Implements the core recommendation logic, filtering jobs based on user profile criteria (age, location, education) and selected preferences. It also excludes flagged jobs.

ExperienceManager: Processes user feedback from job experiences. This class is crucial for updating the user's level, appending identified strengths and weaknesses to their resume profile, and critically, flagging jobs that receive low satisfaction ratings.

The GUI utilizes GridBagLayout for flexible and appealing layout management, and incorporates custom color schemes and emoji icons for an engaging user experience.

Challenges we ran into One significant challenge was accurately parsing and interpreting the diverse data from the CSV file, particularly the "Salary" and "Short Description" fields, to extract meaningful numerical data and relevant keywords. Handling various formats and ensuring robust error handling during CSV traversal was complex. Another hurdle was designing a flexible yet effective job recommendation algorithm that could balance user preferences with inferred job requirements (like education levels for data science roles) and dynamically adapt to user feedback by flagging unsatisfactory opportunities. Ensuring the GUI's responsiveness and visual appeal across different screen sizes while maintaining a clean layout also required careful attention to GridBagLayout constraints and component sizing.

Accomplishments that we're proud of We are proud of creating an intuitive and user-friendly interface that simplifies job searching for young individuals. The intelligent job recommendation system, which dynamically filters based on detailed user profiles and job attributes, is a key accomplishment. The implementation of the feedback loop, allowing users to report on their experiences and influencing future recommendations (including flagging low-satisfaction jobs), adds a unique and valuable dimension to the application. The ability to automatically append strengths and weaknesses to a user's profile based on their reported experiences is also a significant step towards personalized career development.

What we learned Through this project, we gained deeper insights into Java Swing GUI development, particularly the power and flexibility of GridBagLayout for complex layouts. We learned the importance of robust data parsing and inference when working with real-world, often inconsistent, datasets. Developing a dynamic recommendation engine highlighted the need for careful consideration of filtering criteria and how different attributes interact. Furthermore, integrating a feedback system emphasized the value of user-generated content in improving the overall utility and relevance of an application.

What's next for PathStep For PathStep, the next steps could include:

Persistent Storage: Implementing a database (e.g., SQLite or a simple file-based system) to save user profiles and job flagging status, so data persists between sessions.

Enhanced Keyword Matching: Incorporating more advanced natural language processing (NLP) techniques for keyword extraction and matching to improve recommendation accuracy.

User Account Management: Adding user login/registration features.

Job Application Tracking: Allowing users to track the status of their applications (Applied, Interviewed, Rejected, Hired).

Skill Development Suggestions: Based on identified weaknesses or desired job types, suggesting relevant online courses or learning resources.

Networking Features: Integrating simple ways for users to connect with mentors or other youth in similar job fields.

Visualizations: Adding charts or graphs to visualize user progress, job market trends, or satisfaction ratings.

Built With

Share this project:

Updates