LLM course: Upload issue for certificate

Hi team,
I’m experiencing an issue when trying to upload my course completion certificate to LinkedIn. The upload keeps failing with an error.
I believe the problem is related to a recent change in the certificate URL structure.

This only happens with LLM course

1 Like

Hmm… A minor bug of the course space…?


What’s likely happening

You are running into a Hugging Face certificate hosting + LinkedIn “Add to Profile” integration bug, not a “your account” problem.

There are two separate “hops” in the Hugging Face flow:

  1. Hugging Face generates a certificate image/PDF (locally inside the quiz Space).
  2. The Space then uploads the certificate image to a Hugging Face dataset repo and constructs a public credential URL (certUrl).
  3. The Space builds a LinkedIn Add-to-Profile URL (linkedin.com/profile/add?...) that includes certUrl plus metadata like issue month/year.

If step 2 fails (certificate cannot be uploaded or the generated URL points to the wrong place), the credential URL becomes invalid or generic, and LinkedIn may reject the flow or you end up with a wrong/empty certification record.

This exact “certificate upload failed” pattern is visible in Hugging Face course Spaces, including reports by learners. (Hugging Face)


Why it only happens with the LLM course unit (common root cause)

The LLM course certificate quiz Space appears to be duplicated from another course Space, and it still contains hardcoded or mismatched configuration.

In the LLM course unit_3 quiz Space:

  • The Space is explicitly shown as “Duplicated from mcp-course/unit_3_quiz”. (Hugging Face)
  • Its app.py still defaults to pulling quiz data from another course unless environment variables override it:
    EXAM_DATASET_ID = ... "agents-course/unit_1_quiz" and COURSE_TITLE = ... "Fundamentals of MCP". (Hugging Face)
  • The upload routine uses repo_id="mcp-course/certificates" (not the huggingface-course certificates dataset), which matches the suspicion posted by users (“uploading to the wrong dataset”). (Hugging Face)

So your “recent change in certificate URL structure” instinct is plausible, but the more precise diagnosis is:

  • The LLM course Space is generating or uploading certificates using the wrong repo path and legacy LinkedIn parameters, so the resulting URL/metadata doesn’t validate cleanly.

Main causes (ranked) and what they look like

Cause 1: The certificate upload step fails, so the credential URL is missing or wrong

The Space code uploads to a dataset repo and returns a URL like:

https://huggingface.co/datasets/.../resolve/main/certificates/<user>/<date>.png

In the LLM unit_3 quiz Space code, the upload target is set to mcp-course/certificates. (Hugging Face)
Users have reported this exact mismatch (“uploading certificates to the wrong dataset”). (Hugging Face)

Symptoms

  • You see a warning like “Certificate upload failed, but you still passed!” (this message exists in the same codebase pattern used by HF course Spaces). (Hugging Face)
  • The LinkedIn button still appears, but the credential URL behind it may be generic, wrong-course, or non-existent.

Why LinkedIn then fails
LinkedIn’s certification entry can require a valid issue date and may validate the URL format or at least choke on malformed parameters. If the certUrl is broken or points somewhere unexpected, you can get an error.


Cause 2: The LinkedIn Add-to-Profile URL is built with invalid/legacy parameters

LinkedIn’s “Add to Profile” parameter schema matters. The LinkedIn microsite documentation explicitly says:

  • Use either organizationId or organizationName, not both. (LinkedIn)

But the HF Space builds params containing both:

  • "organizationName": "Hugging Face" and "organizationId": CERTIFYING_ORG_LINKEDIN_ID (Hugging Face)

Also, the Space uses a suspicious parameter name:

  • "organizationIdissueYear": str(current_year) (Hugging Face)

Other HF course repos have commits explicitly changing organizationIdissueYear -> issueYear when generating the LinkedIn button, which strongly suggests the old key was wrong in practice. (Hugging Face)

Symptoms

  • LinkedIn opens but does not populate fields correctly.
  • LinkedIn shows a generic error after clicking the button.
  • Issue year appears missing or LinkedIn refuses to save.

Cause 3: LinkedIn changed how Add-to-Profile works (no more autofill)

LinkedIn explicitly states they changed Add-to-Profile:

  • It no longer autofills certification/degree information.
  • Providers should use a static URL, and users must enter details manually. (LinkedIn)

This change can make HF’s button feel “broken” even when it technically works, because the old expectation was prefilled fields.

Important nuance
This change usually causes “no autofill,” not “upload fails.” But it increases confusion and makes parameter bugs more visible.


Cause 4: You are “uploading” the PDF/image to LinkedIn (Featured/Media) and LinkedIn rejects the file

If by “upload” you mean attaching the certificate PDF/image as a file on LinkedIn:

  • LinkedIn can fail on file size, browser issues, adblockers, or transient upload bugs.

But your “only LLM course” detail strongly points back to the LLM certificate hosting/link being the differentiator, not LinkedIn file upload limits.


Solutions and workarounds (what actually works)

Workaround A (most reliable): Add it manually on LinkedIn, ignore the Add-to-Profile button

LinkedIn fully supports manual entry in Licenses & certifications. (LinkedIn)

What to do

  1. Go to your LinkedIn profile.

  2. Add profile section → Recommended → Add licenses & certifications. (LinkedIn)

  3. Fill in:

    • Name: “Hugging Face LLM Course – Chapter 3 Quiz” (or the official unit title)
    • Issuing organization: Hugging Face (select from dropdown if available)
    • Issue date: month/year you passed
    • Credential URL: use a stable URL you control (see Workaround B/C)
  4. Save.

This bypasses all the fragile URL query-string behavior.


Workaround B: Use a stable credential URL that is definitely public

If the HF Space upload is failing, you still can make a credential URL:

Options:

  • Host the certificate image/PDF on a public page you control (GitHub repo release asset, personal site, public Google Drive link set to “Anyone with link,” etc).
  • Or upload the image to a public Hugging Face repo you own and use a resolve/main/... link.

Then paste that URL into LinkedIn as the Credential URL.

Why this works: LinkedIn mainly needs a stable reference URL. You do not need LinkedIn autofill at all. LinkedIn’s own guidance emphasizes manual entry now. (LinkedIn)


Workaround C: Fix the LinkedIn URL yourself (quick test)

If you want to keep using the HF “Add to Profile” button, do a controlled experiment:

  1. Click the HF button.

  2. Copy the resulting LinkedIn URL from your browser address bar.

  3. Edit it so it follows LinkedIn’s current parameter expectations:

    • Keep name=...

    • Use only one of:

      • organizationId=... or
      • organizationName=Hugging%20Face ([LinkedIn][3])
    • Ensure you have issueYear=YYYY and issueMonth=M

    • Keep certUrl=... URL-encoded

If your edited URL works, you’ve proven the issue is bad parameters, not your LinkedIn account.


Workaround D: Report it where HF actually tracks it

HF course pages explicitly direct users to open a discussion if the quiz/cert has issues. (Hugging Face)
The LLM unit_3 quiz Space already has relevant threads like “Certificate upload failed.” (Hugging Face)

When reporting, include:

  • The LinkedIn error text
  • Whether you saw “Certificate upload failed…”
  • The certUrl you got (redact your username if you want)
  • A note that repo_id="mcp-course/certificates" and organizationIdissueYear appear in the Space code (Hugging Face)

This is the kind of bug HF staff can fix quickly because it’s configuration/code in the Space.


How to isolate the issue (tight debugging checklist)

Step 1: Identify where the failure occurs

A. Failure happens on Hugging Face page

  • You see “Uploading your certificate…” then a warning/failure.
  • That is a Hugging Face upload-to-dataset failure (step 2). (Hugging Face)

B. Failure happens on LinkedIn

  • HF shows the button fine.
  • LinkedIn opens, then errors on save or shows a red banner.

Different root causes. Don’t mix them.


Step 2: Validate the credential URL (certUrl) independently

If you can extract the certUrl value from the LinkedIn link:

  1. Paste certUrl into a new incognito window.
  2. Confirm it loads without login.
  3. Confirm it is the expected certificate image.

If it 404s or redirects oddly, LinkedIn will be unreliable.

Given the Space’s upload target mismatch (repo_id="mcp-course/certificates"), a broken certUrl is very plausible. (Hugging Face)


Step 3: Check for parameter violations in the LinkedIn URL

Compare your LinkedIn URL against LinkedIn’s own rules:

  • Are both organizationId and organizationName present? That’s explicitly disallowed. (LinkedIn)
  • Do you have a normal issueYear field, or something odd like organizationIdissueYear? The Space code uses the odd key. (Hugging Face)
  • Is your issue date missing? LinkedIn commonly expects it.

If you find these mismatches, you’ve isolated the problem to URL construction.


Step 4: Cross-check with LinkedIn’s current behavior expectations

Even if everything is “correct,” you should not expect autofill anymore. LinkedIn confirms the Add-to-Profile flow no longer autofills and uses a static URL approach. (LinkedIn)

So the correct “passing condition” is:

  • The button opens LinkedIn’s form.
  • You can manually enter details and save.

Step 5: Test the same flow with a clean Add-to-Profile URL

Use LinkedIn’s own Add-to-Profile microsite as a reference. It documents the expected fields and formats. (LinkedIn)

If a microsite-generated link works but the HF-generated link fails, the culprit is confirmed: HF link generation.


If I were in your case, what I would do (practical sequence)

  1. Stop trying to “make the button work” first. I would get the credential onto my profile via manual entry so the outcome is achieved today. LinkedIn supports manual Licenses & certifications entry directly. (LinkedIn)

  2. I would host the certificate at a stable public URL I control (or at least can guarantee is public), and paste that into LinkedIn as the credential URL.

  3. Then I would do the isolation steps:

    • Extract certUrl from the HF LinkedIn link and test it in incognito.
    • Inspect parameters for organizationId + organizationName conflict and the weird organizationIdissueYear.
  4. Finally, I would post a minimal reproducible bug report in the HF Space discussion:

    • “LLM course unit_3_quiz: LinkedIn Add-to-Profile fails”
    • Include the evidence that the Space is duplicated and still references mcp-course/certificates and organizationIdissueYear. (Hugging Face)

That sequence gives you both:

  • A working LinkedIn profile entry now.
  • A clean technical report that can lead to a real fix.

High-quality references (worth reading / using)

LinkedIn official docs

Hugging Face course-specific evidence

Evidence that organizationIdissueYear was a real bug in other HF courses

  • HF commit explicitly changing organizationIdissueYear -> issueYear (shows this is a known integration pitfall): (Hugging Face)

Short summary

  • The LLM certificate Space likely has miswired upload target and legacy LinkedIn parameters, so LinkedIn fails or the credential URL is wrong. (Hugging Face)
  • LinkedIn also changed Add-to-Profile so autofill no longer happens, which increases confusion. (LinkedIn)
  • Fastest fix: add the certification manually on LinkedIn and use a stable public credential URL. (LinkedIn)
  • Isolation: test certUrl in incognito, then verify the LinkedIn URL does not violate organizationId vs organizationName and uses a valid issue year field. (LinkedIn)
1 Like

Thanks I will try one of these then :+1:

1 Like

I noticed this too — the LLM course certificates changed URL structure recently, and LinkedIn’s upload tool doesn’t parse it correctly. A workaround that sometimes works is to download the certificate locally as a PDF and upload it manually rather than using the direct URL. Also, when you submit a ticket to LinkedIn, include both the old and new URL formats if possible; it helps them pinpoint the issue faster.

2 Likes

@burtenshaw just in case