Skip to content

feat: LC-1463 - AI Pathways MVP#964

Merged
gerardopar merged 134 commits intomainfrom
lc-1463-clean
Feb 20, 2026
Merged

feat: LC-1463 - AI Pathways MVP#964
gerardopar merged 134 commits intomainfrom
lc-1463-clean

Conversation

@gerardopar
Copy link
Copy Markdown
Collaborator

@gerardopar gerardopar commented Jan 28, 2026

Overview

USE THIS BACKEND PR

🎟 Relevant Jira Issues

📚 What is the context and goal of this PR?

This PR introduces AI Pathways MVP, a new feature that converts a learner’s credentials and AI insights into actionable career, course, and training pathways.

AI Pathways connects three layers:
• AI Insights (skills, occupations, careers, field of study)
• CareerOneStop (occupations, salaries, training programs)
• OpenSyllabus (granular, field-aligned coursework)

The result is a structured, explainable pathway from what the learner knows → what they should learn next → where that learning exists.

  1. AI-Driven Pathway Signals -> Queries AI Insights to identify
    • Strongest Area
    • Skill, job, occupation keywords
    • A single, aligned fieldOfStudy (from OpenSyllabus taxonomy)
    • Learning Pathways, when present, take precedence over Strongest Area insights.
    • If no reliable keywords exist, downstream querying is skipped.

  1. Career Resolution (CareerOneStop) -> Uses extracted keywords to query:
    • Occupations
    • Salary data
    • Training programs (1–4 year programs)
    • Career data provides the macro view of potential pathways.

  1. Course Resolution (OpenSyllabus)
    • AI Pathways attempts to resolve granular courses first:
    1. Extract schools from CareerOneStop training programs
    2. Query OpenSyllabus by school
    3. Filter courses by the AI-selected fieldOfStudy
      • If matching courses exist:
      • Display OpenSyllabus courses
      • If not:
      • Fall back to CareerOneStop training programs

  1. Precedence & Guardrails
    • Learning Pathways Strongest Area > AI Insights Strongest Area
    • Courses > Training Programs (when available)
    • No keywords → no downstream queries

  1. Adds AI Pathways UI -> /ai/pathways
    1. Courses or training programs (OpenSyllabus preferred, CareerOneStop fallback)
    2. Suggested AI pathway learning sessions
    3. Suggested careers with salary insights
    4. Relevant career and learning content videos

Note: This PR does not include [https://welibrary.atlassian.net/browse/LC-1503](Session Landing Page & Passport Tweaks)


🥴 TL; RL:

💡 Feature Breakdown (screenshots & videos encouraged!)

Ai pathways
https://www.loom.com/share/2ed5f6803da94969b25fce444892aa97

Public Facing Route for pathways
https://www.loom.com/share/981a575033af48e69e8e0561a9abf149

Empty Placeholder

pathways-empty-placeholder

Suggested Courses

courses

Suggested Sessions

sessions

Suggested Careers

careers

Suggested Content

suggested-content

🛠 Important tradeoffs made:

🔍 Types of Changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Chore (refactor, documentation update, etc)

💳 Does This Create Any New Technical Debt? ( If yes, please describe and add JIRA TODOs )

  • No
  • Yes

Testing

🔬 How Can Someone QA This?

Requirements: BE

  1. Start the backend locally
    • bun dev
  2. run qdrant from the backend directory
    • docker compose up -d qdrant

Recommend: FE

  1. make sure you have consented to the chatGPT contract
  2. To keep credentials in sync on LCA , set the role to developer
    • manually sync your credentials
    • go to the admin tools -> "sync all credentials to contracts"

View the video for testing instructions

📱 🖥 Which devices would you like help testing on?

🧪 Code Coverage

Documentation

📝 Documentation Checklist

User-Facing Docs (docs/docs.learncard.com)

  • Tutorial — New capability that users need to learn (docs/tutorials/)
  • How-To Guide — New workflow or integration (docs/how-to-guides/)
  • Reference — New/changed API, config, or SDK method (docs/sdks/)
  • Concept — New mental model or architecture explanation (docs/core-concepts/)
  • App Flows — Changes to LearnCard App or ScoutPass user flows (docs/apps/)

Internal/AI Docs

  • CLAUDE.md — New pattern, flow, or context that AI assistants need
  • Code comments/JSDoc — Complex logic that needs inline explanation

Visual Documentation

  • Mermaid diagram — Complex flow, state machine, or architecture

💭 Documentation Notes

✅ PR Checklist

  • Related to a Jira issue (create one if not)
  • My code follows style guidelines (eslint / prettier)
  • I have manually tested common end-2-end cases
  • I have reviewed my code
  • I have commented my code, particularly where ambiguous
  • New and existing unit tests pass locally with my changes
  • I have completed the Documentation Checklist above (or explained why N/A)

🚀 Ready to squash-and-merge?:

  • Code is backwards compatible
  • There is not a "Do Not Merge" label on this PR
  • I have thoughtfully considered the security implications of this change.
  • This change does not expose new public facing endpoints that do not have authentication

✨ PR Description

Purpose: Add AI Pathways MVP feature to enable users to explore personalized career recommendations, training programs, and learning content based on their AI-generated insights and skills.

Main changes:

  • Implemented comprehensive AI Pathways feature with career exploration, course recommendations, training programs, and educational content discovery using CareerOneStop and OpenSyllabus APIs
  • Added new routing structure for AI Pathways pages including main pathways view and discovery search functionality with corresponding navigation menu entries
  • Integrated backend API endpoints for fetching occupation details, salary data, training programs, and video content with centralized LEARNCARD_AI_URL constant

Generated by LinearB AI and added by gitStream.
AI-generated content may contain inaccuracies. Please verify before using.
💡 Tip: You can customize your AI Description using Guidelines Learn how

@smurflo2
Copy link
Copy Markdown
Collaborator

Should have a box shadow. Enter should trigger search.

image

@smurflo2
Copy link
Copy Markdown
Collaborator

smurflo2 commented Feb 19, 2026

@gerardopar As in a user without testing instructions should be able to get past this screen. Or at least have instructions on how to do so.
Right now it's telling users "Complete all the Build My LearnCard things and this will display pathways" which doesn't seem to actually be true. If users need to sync their creds with ChatGPT then it should tell them that and preferably have a button on this page to do so.
I didn't actually try switching to dev role + running sync creds with contracts with this account (I assume that would work), this is more about how real users would know what to do and what path forward they would have.
Does that make sense? Or am I missing something?

the chatGPT part + syncing creds part is only true for testing dev

essentially what needs to happens on prod (happy path)

  • user joins
  • user is automatically consented to the ai learn card backend
  • user completes build my learn card on ( onboarding || pathways page)
  • (^^ if any credentials exist , we should sync at this point^^)
  • ai insights should have been generated
  • recommendations should render

so likely credentials are not being synced

I logged in on an incognito browser using a brand new 64 character seed. A modal popped up with a vague error saying there was an problem signing in after I filled out my profile information and clicked create, but eventually all the modals closed and I was logged in and I did indeed have a LCN account. No AI Pathways. Added resume + transcript. Still nothing. Turns out I wasn't successfully auto-consented to the LC AI / Open AI contracts. Consented to those. Came back, still no pathways. Synced demo school, deleted and re-uploaded resume, still nothing. Dead end.

Perhaps notably, this account's role is learner

I have a bunch of these 500s in the console from useAiInsightCredential.ts:30

details: "No credentials found for analysis"
error: "Failed to generate AI insights"

So

  1. Happy path seems to be broken (doesn't need to be fixed in this PR)
  2. I still believe we should tell people they need to be consented to the OpenAI contract if we detect that they're not here in case 1) they're older accounts 2) something went wrong on the happy path 3) they intentionally disconnected from the contract.
  3. IMO we should probably tell them that they need some credentials in their wallet too (could even do it conditionally if we can programmatically detect that they don't have enough or w/e). What we have here already sort of covers this, but isn't very explicit. What we have now makes it seem like uploading all 4 of transcript/resume/diploma/certificate are the required steps here and people may not have access to all of those things, and that's not actually what unlocks this anyway.

Seed is e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 if you want to investigate that account specifically.
image

smurflo2

This comment was marked as resolved.

@goblincore
Copy link
Copy Markdown
Collaborator

@gerardopar hmm there seems there is an unrelated issue happening - like for me when I sync contracts it doesn't seem to be adding/syncing credentials to my wallet :o curious if that is happening for you too

goblincore

This comment was marked as resolved.

@gerardopar
Copy link
Copy Markdown
Collaborator Author

This is working for me as shown in the loom now! one thing i noticed looking at the files changed in thei PR: If you look at the Podfile changes in this PR it seems they are downgrading the capacitor packages from 8 to 7 which is weird - should look into what is going on there to make sure as i dont think that should change:

Image

@goblincore oh interesting, yeah let me make sure my pods are in sync 😯

@goblincore
Copy link
Copy Markdown
Collaborator

@gerardopar I think this PR looks good to go except for like the podfile native plugin version changes - like there are still version changes and could potentially mean some kind of incompatibility and lead to runtime errors and crashes in the native app since we cant live update the native plugins)...i suppose im trying to avoid native plugin updates as that would seem to imply we would need to also change the capgo update channel version.

Screenshot 2026-02-20 at 1 29 00 PM

@gerardopar gerardopar merged commit 6115dbb into main Feb 20, 2026
17 checks passed
@gerardopar gerardopar deleted the lc-1463-clean branch February 20, 2026 18:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants