Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions Documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,89 @@ All scripts use .NET 10 [file-based apps](https://devblogs.microsoft.com/dotnet/
- Go to **Actions → Update README from LinkedIn → Run workflow**
- Or wait for the weekly schedule (every Monday at 06:00 UTC)

## Workflows

### Base recurring workflow (single source of truth)

`/.github/workflows/update-readme.yml`

- **Trigger**: Weekly schedule (`0 6 * * 1`) + manual `workflow_dispatch`
- **Purpose**: Keep your LinkedIn profile as the canonical source, then regenerate:
- `README.md`
- `artifacts/europass_cv.xml`
- `artifacts/Francesco_Belacca_CV.pdf` (with embedded Europass XML attachment)
- `artifacts/profile/*.svg` stats cards
- **Result**: Your GitHub profile README and CV assets stay continuously aligned with the same data source.

### Manually triggered custom CV workflows (role-tailored)

The repository also includes manual workflows that generate role-specific CV packages:

- `/.github/workflows/generate-cv-cloud-sre.yml`
- `/.github/workflows/generate-cv-cloud-devops.yml`
- `/.github/workflows/generate-cv-cloud-swdev.yml`

How they work:
1. `src/tailor_readme.sh` calls **GitHub Models** (`openai/gpt-4.1`) to rewrite selected sections of the base README for the target role.
2. `src/generate_role_pdf.sh` renders a role-specific PDF and embeds the same Europass XML.
3. Outputs are committed under `artifacts/<role>/`.

This gives you:
- one canonical profile dataset for consistency,
- one baseline recurring CV pipeline,
- and multiple role-specific CV variants on demand.

## LinkedIn API and token guide (researched references)

This project uses LinkedIn’s **Member Data Portability (Member) API**:

- Official API guide:
https://learn.microsoft.com/en-us/linkedin/dma/member-data-portability/member-data-portability-member/
- LinkedIn API docs entrypoint:
https://learn.microsoft.com/en-us/linkedin/

Official authentication/token references:

- Getting access to LinkedIn APIs:
https://learn.microsoft.com/en-us/linkedin/shared/authentication/getting-access
- OAuth overview:
https://learn.microsoft.com/en-us/linkedin/shared/authentication/authentication
- 3-legged OAuth flow:
https://learn.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow

In practice for this repo, token creation is done in **LinkedIn Developer Portal → Docs and tools → OAuth Token Tools** with the scope `r_dma_portability_self_serve`.

### Why this is available to Europeans (EU/EEA context)

The portability capability is tied to compliance with the **EU Digital Markets Act (DMA)**, which introduces data portability obligations for designated gatekeepers in the EU. LinkedIn’s Member Data Portability product is designed around these regulatory requirements, which is why availability is region-scoped to European users rather than globally.

Reference:
- EU Digital Markets Act (Regulation (EU) 2022/1925):
https://eur-lex.europa.eu/eli/reg/2022/1925/oj

## Copy-ready LinkedIn post (high engagement)

> 🚀 I just open-sourced my LinkedIn → GitHub automation pipeline:
> **https://github.com/macel94/macel94**
>
> I wanted my professional profile to have a **single source of truth**.
> So I built a workflow that turns my LinkedIn profile data into:
> - ✅ an always up-to-date GitHub `README.md`
> - ✅ a generated CV PDF
> - ✅ a standards-based **Europass XML** embedded into the PDF
>
> Why this matters:
> - No more copy/paste drift between LinkedIn, GitHub, and CV versions
> - Recruiters and collaborators always see fresh information
> - Anyone can fork the repo and adapt it to keep their own portfolio + CV in sync
>
> Bonus: I also added manual workflows for **role-tailored CVs** (SRE, DevOps, Cloud Software Developer) powered by GitHub Models.
>
> If you want your GitHub profile and CV to auto-maintain themselves, this repo is plug-and-play.
> Happy to hear feedback or ideas for the next iteration 👇
>
> #opensource #github #linkedin #automation #devops #sre #cloud #dotnet #career #europass

## Local Development

Requires [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) or later.
Expand Down