An AI agent watches the shared L&D inbox. When a learning path request arrives, it reads what the requester needs, matches it to the courses and learning paths already in TalentLMS, and drafts a reply with the recommendation and a completion timeline. A person on the L&D team reviews, edits and approves it. Nothing reaches the requester without that approval.
Who feels it. Requesters across the business who ask L&D for a learning path for themselves or their team, and wait. The L&D team, who answer each request by hand between everything else they own.
What it costs. Each request takes one to two hours of someone's attention: read the email, work out the real need, search the TalentLMS catalogue, pick courses, estimate a completion timeline and write the reply. When nobody is free, the requester waits up to 24 hours. The work is the same shape every time, and it is the kind of work people do least consistently when they are busy.
Why now. The catalogue already lives in TalentLMS and the requests already land in one shared inbox. Both ends have an API, so the agent can sit between them without changing how requesters ask or how L&D runs TalentLMS.
X-API-Key header and a version date in X-API-Version to https://<your-domain>.talentlms.com/api/v2. The limit is 200 calls per 5 seconds, far more than this needs.| Need | Endpoint | Used for |
|---|---|---|
| The course catalogue | GET /courses, GET /courses/:id | Name, description, category and status of every course: what the agent matches against. |
| Course custom fields | GET /course-fields | Where an estimated duration, level or audience lives if the team records one (see open questions). |
| Categories | GET /categories | Grouping courses by skill area so a match can be explained. |
| Learning paths | GET /learning-paths, GET /learning-paths/:id | Existing curated paths. The agent prefers an existing path to building one from loose courses. Needs the Grow plan or above. |
| Enrolment (phase 2) | POST /enrollments, POST /learning-paths/enrollments | After approval, optionally enrol the learners so the reply can say "you are already enrolled". |
The agent only needs to read the catalogue to match a request. It does not need to talk to TalentLMS on every request, so there are two options.
| Option A: one-time load into Supabase (recommended to start) | Option B: live sync from the API | |
|---|---|---|
| How | Pull every course, category and learning path once, through the API or an export from TalentLMS. Load it into Supabase tables, with the embeddings beside it. The agent reads only Supabase. | A nightly job calls the TalentLMS API and updates the same Supabase tables. |
| Good | The simplest build. No standing API key or job to watch. L&D can fix descriptions and add estimated hours in Supabase without touching TalentLMS. Matching is fast and cheap. | Always current. New or retired courses show up the next morning without anyone remembering to do it. |
| Watch out | It goes stale. A course added in TalentLMS is invisible to the agent until someone runs the load again. Reviewers will catch it, but they should not have to. | One more moving part: a key, a job, and an alert if it fails. |
| Keeping it fresh | Re-run the same load whenever the catalogue changes, or monthly. It replaces the rows, so running it twice does no harm. | Automatic. |
| Enrolment | Either way, enrolling learners on approval (phase 2) writes to TalentLMS and needs the API key. A recommend-only service can run on Option A with no live connection to TalentLMS at all. | |
Recommendation. Start with Option A. The catalogue changes slowly, and a one-time load proves the matching on real data with the least build. Because the load script and the nightly job write the same tables, moving to Option B later just means running that script on a schedule. Nothing else changes.
| Data | Exists today | New |
|---|---|---|
| The shared L&D inbox | Yes. Mail system to confirm. | Read and reply-as access for the agent: Microsoft Graph (Microsoft 365) or the Gmail API (Google Workspace), scoped to that one mailbox. |
| A catalogue index | No. TalentLMS search is by keyword. | Courses, paths, descriptions and categories in Supabase (loaded once or synced nightly, see above), with a text embedding per item, so "help my team run better 1-1s" finds a course titled "Coaching conversations". |
| Course duration | Unconfirmed in the API response. | If TalentLMS does not return one, a custom course field ("estimated hours") filled once by L&D. The timeline is only as good as this number. |
| The request record | No. Lives only in email threads. | One row per request: requester, extracted needs, matches, draft, reviewer, decision, timestamps. This is also the audit trail and the ROI measure. |
| Reply templates | In people's heads and sent mail. | Ten past replies the team is proud of, used as examples for tone and structure. |
Six steps. The agent does the first four and the last one. A person owns step five.
Click a request on the left. Tick or untick courses and the timeline and draft update. The data is made up; the catalogue tab shows what the agent reads from TalentLMS.
| Measure | Today | Target | Read from |
|---|---|---|---|
| Time from request to reply | 1 to 24 hours | Under 2 business hours, 9 in 10 requests | Request record: received and sent timestamps |
| Team time per request | 1 to 2 hours | Under 10 minutes of review | Request record: review opened to approved |
| Drafts approved with light or no edits | n/a | 8 in 10 | Edit distance between draft and sent reply |
| Requests the agent misses or misfiles | n/a | Under 1 in 20 | Weekly spot check of the inbox against the queue |
| Catalogue gaps found | Not tracked | Every unmatched need listed | Gap list, reviewed monthly by L&D |
The return. Most of one to two hours per request goes back to the L&D team, requesters get answers the same morning, and recommendations become consistent because they come from the whole catalogue rather than what one person remembers. The gap list is a by-product: a record of what the business asks for that TalentLMS does not yet have.
| Piece | What it does | Done when |
|---|---|---|
| 1. Catalogue load | Loads courses, categories, custom fields and learning paths from TalentLMS into Supabase once (Option A) and indexes them. Running it again refreshes the tables. A schedule turns it into Option B. | The Supabase row count matches the catalogue in TalentLMS, and a plain-English search returns sensible courses. |
| 2. Inbox reader | Reads new threads in the shared inbox, sorts requests from everything else, extracts the need. | Run against the last 30 real requests, it sorts at least 19 in 20 correctly. |
| 3. Matcher and drafter | Matches needs to paths and courses, builds the timeline, writes the draft in the team's voice. | L&D rates drafts for those 30 past requests and would send 8 in 10 with light edits. |
| 4. Review screen and send | The screen in the prototype. Approve sends in thread from the shared inbox; everything is logged. | A reviewer approves a live request end to end, and the requester gets it in the original thread. |
| 5. Enrolment (optional) | On approval, enrols the named learners through the TalentLMS API. | The learner sees the path in TalentLMS straight after approval. |
Before building, an Administrator creates the API key and we confirm the exact response fields of /courses against your account. The endpoint list above comes from TalentLMS's help centre and public mirrors of its API specification; field-level detail has not yet been checked against a live account.