Collect & normalize
Feed records align into a shared shape; duplicates collapse.
A useful result, even when nobody is watching.
Make inconsistent job feeds usable for repeatable analysis.
Normalize and deduplicate before aggregating dated samples.
A configured n8n workflow with JSON, Markdown and PDF report history.
Follow the connections as you scroll, or select a stage to see what happens there.
Feed records align into a shared shape; duplicates collapse.
Bounded skill matching and compensation processing produce sample-level summaries.
A scheduled runner writes JSON, Markdown and PDF reports into history.
Workflow & analytics engineering
Automation + Data / analytics + Backend
Scheduled workflow · report artifacts
Different feeds represent the same job differently. Useful aggregation needs normalization, deduplication, explicit salary handling and a record of what each run produced.
Source lanes feed an n8n workflow. Records are normalized and deduplicated, bounded token rules identify skills, and Python aggregation computes sample-level trends and compensation summaries. Report generation writes JSON, Markdown and PDF artifacts with historical outputs.
The repository holds a configured scheduled workflow and generated report history. Report contents are dated samples; they are not a representative labor-market survey or evidence that the scheduler has run continuously.
The primary interface is the recurring workflow and its outputs, rather than a hosted application dashboard.
Deduplication and consistent fields precede skill and salary analysis, making the input assumptions easier to inspect.
Generated artifacts and dated archives expose what a run actually processed. Small samples remain small samples.