Inspiration
Many students have access to thousands of opportunities and career help. They have access to so many opportunities to the point over 38% of students already involved in cocurriculars at Taylor University reported committing 15+ hours per week to them, and more hours lined up with higher burnout (Shelby Robbins, A Burning Issue, Taylor University, 2022). Students need a way to balance the activities they participate in with real, measurable outcomes that work towards their goals.
What it does
Nytinol takes in a student's GPA, Classes, Experiences ( internships, projects, certifications, clubs, research, and campus jobs ), goal industry to work at, goal job position, and a goal salary to then provide 3 ways to build towards the goals through 3 separate actionable tracks. Each step also comes back with a projected first-salary range, not a single number.
How we built it
The system is trained on the fabricated Navigating the Future: Career Pathways & Degree ROI dataset. Two gradient-boosted tree models score each possible next step, and a short search turns those scores into a plan.
We trained both models in LightGBM on snapshots taken at the start of each semester, before that semester's classes and activities were added in. GPA, credits, and skills are rebuilt forward from the transcript, so a student's row never contains their final GPA or anything else from the end of the degree. The classes of 2022 and earlier are the training set. The classes of 2023 and 2024 are used only to stop training when held-out error stops falling. The classes of 2025 and 2026 are scored once, at the end. A random split would have put classmates on both sides, since they share courses and employers, and every number would have looked better than it is.
Model A answers "would a student in this position plausibly do this next?" It is a learning-to-rank model trained with pointwise binary classification. Each training row is one student situation paired with one opportunity. The label is whether they actually took it. For each opportunity they did take, we also sampled five legal options they skipped and labeled those 0, and we kept at most two courses per semester so a full course load did not drown internships. During training, the goal features are filled from the job that graduate actually ended up in, because they never wrote a goal down. At request time, impossible options are removed first, such as a course whose prerequisites are unmet. Model A then scores each remaining option on its own. Sorting those scores is what ranks them. Scoring pairs, rather than a single list of opportunity ids, lets the model use how well that specific step fits that specific student.
Model B answers "where do students in this situation end up?" It never sees the user's goal. The same person contributes many snapshots, from early in the degree through graduation, and every snapshot is labeled with the one outcome they eventually reached. Given a snapshot of a student, it predicts the chance of each job family, including continuing education, still seeking, and military, the chance of each first-job industry, and a low, middle, and high first salary. Those salary heads are trained on the log of salary in 2026 dollars and converted back to dollars. Graduates whose outcome is unknown are left out. To judge a recommended step, the planner updates the student's record as if they had done it, runs Model B on that new record, and reads off the probabilities that match the goal they asked for. The difference from their current record is how much the step moves the goal.
An option has to be both realistic and useful. The search multiplies Model A's feasibility by how much Model B says the step moves the goal, keeps the best few, applies the winner to the student, and repeats. Three rounds of that produce the branching plan for the next three semesters.
On the held-out class, Model A placed the course a student actually took in its top three about 59% of the time, and the internship role about 61% of the time, roughly twice as often as ranking by what is most popular. Job-family accuracy rises from about 22% early in a degree to about 39% near the end, against an 18% majority-class baseline. Industry is much harder to predict from an academic record, so a recommended internship shows the role and the industry as two separate confidences.
This information is fed into a highly interactive node tree visualizer built on Next.JS React and hosted on Vercel where users can clearly see possible career pathways based on 3200 alumni entries, and 20,000 experience entries.
The visualizer allows users to drag nodes around and see what connects where, allowing them to see a tree of where each possible future experience or class could take them. In addition to making complex information easily digestible, the frontend software also calculates ROI for a 40-year career in that field, adjusted for each node in the possible future career path. This number is based on the projected salary from the AI models, and the amount of money spent on education as reported by the user.
The frontend project is also secured by industry standard auth provider Clerk, featuring a lightning fast onboarding flow. The application renders example data on first sign in, and allows users to easily edit or delete all information automatically added. There also exists the ability to reset to example data.
Challenges we ran into
Picking the Right Prediction Model Picking the model to predict activities took the longest time out of all the tasks. First we implemented a weighted search rank algorithm (SRA), but that acted as more of a mapping system, where each user would be matched to the closest alumni the algorithm could find in the dataset. This was not the goal. This is when we decided to pivot and build our own AI models to help predict next activities to progress towards preset goals.
Data Cleaning
There was a lot of data cleaning needing to be done. Although the dataset was already in a format in which data could have been trained, there were several NaN values that needed to be ridden of, and it was very compute intensive to clean all datasets. The harder trap was the literal string Not Applicable. It marks a field that does not apply, such as a seniority level on a certification. Dropping those rows deletes the internships, co-ops, and certifications, which are most of the actions worth recommending. Salaries also had to be converted to 2026 dollars so a 2015 paycheck can be compared with a 2026 one.
Building a Highly Reactive and Performant Node Editor Drawing freely movable nodes, panning, zooming, scrolling, and edge connections between dozens of nodes can be an extremely taxing and visually displeasing undertaking. Our solution bypasses these bottle-necks and produces a smooth and performant output.
Node Editors are Difficult to Edit With dozens of nodes to edit, our visualizer seemed daunting just to look at. Finding a node to edit could take quite some searching by panning around the viewport and reading each node. To simplify the process of editing, we built a sidebar with folders for each type of node, and the ability to right click and edit or delete any node. This allows us to keep the visualization benefit of clearly seeing career paths while also letting us see the same data in a standard list view and edit quickly.
Accomplishments that we're proud of
The recommendation provided by our models are backed by probabilities and data; they aren't just random guesses. On later graduating classes, the ranker recovered the next course and the next internship role about twice as often as recommending the most common option.
The response time is light-speed; the user experience is essentially seamless even though the AI model is locally hosted. A request does not wait on a remote language model. The tree models run in the API process.
What we learned
This was our first time training an AI model for a project. We very quickly learned that AI Model training isn't just giving the model data and praying it will recognize the right patterns; it required meticulous feature engineering and output engineering to make sure we get unbiased, accurate answers. A feature that includes the end of the degree makes a sophomore look like a graduate, and the accuracy looks excellent while the advice is useless. We also learned to report a weak prediction on its own. The industry head is close to a guess, so the product shows it beside the role instead of folding it into one confidence number.
What's next for Nytinol
Self-Learn algorithm We want to make the model self-sustainable; data obsolete to time should automatically be replaced by new graduate student data so the model can train itself and improve all the time. The split is already by graduation year, so a newer cohort can become the next training set and older labor-market years can be down-weighted.
Third party tool connections instead of recommending activities in a niche space, a connection to email, google calendar, and other tools will allow us to reference specific activities and allow us to recommend specific activities. Connecting a step to registration or Handshake would turn "take this internship next spring" into a dated action, and marking a step done would let the next plan start from the updated record.
Built With
- ci/cd
- fastapi
- next
- pandas
- postgresql
- python
- react
- typescript
- vercel


Log in or sign up for Devpost to join the conversation.