This project consists of two simple Node.js scripts designed to process collections of job-related JSON files:
- Merges all JSON files in a specified folder into a single
merged.jsonfile. - Reads the merged JSON data, removes duplicates, optionally filters jobs by different criteria (e.g., budget, applicants, client verification), and produces two outputs:
merged.json-summary.json: A concise summary of each job.- Aggregated skill statistics printed to the excel file.
The goal is to streamline the process of combining raw job feeds and generating useful summary reports and statistics for further analysis.
- Node.js (v14 or later)
- npm (comes bundled with Node.js)
-
Clone or download this repository:
-
Install dependencies:
npm install
-
Input folder for JSON files
- In
mergeJson.js, set theinputFolderconstant to the directory containing your individual JSON files.
- In
-
Filtering options
- In
jobfeed.js, several filtering steps are commented out by default. You can enable or adjust these sections to refine which jobs are processed:- Remove jobs of a specific type (e.g.,
FIXED). - Filter out low-paying jobs under a certain hourly rate.
- Include only jobs from payment-verified clients.
- Exclude jobs with too many applicants.
- Focus on specific keywords in title/description.
- Remove jobs of a specific type (e.g.,
- In
Run the merge script to combine all .json files from the configured folder into merged.json:
node mergeJson.jsOutput: merged.json containing the concatenated array of job objects.
With your new merged.json in place, process the job feed:
node jobfeed.jsOutputs:
merged.json-summary.json– a trimmed-down version of each job with key fields (title, skills, client reviews/spent, hourly rates, applicants, duration, etc.).- Console output showing:
- Number of jobs read and de-duplicated.
- Earliest and latest job dates and total days span.
- A sorted list of skill-based statistics (count per day, average rates, applicant counts, duration, and verification ratios).
├── mergeJson.js # Script to merge JSON files
├── jobfeed.js # Script to summarize and analyze merged data
├── merged.json # Auto-generated merged data file
├── merged.json-summary.json # Auto-generated summary file
├── statistic.csv # (Optional) CSV with additional statistics
├── package.json # Project metadata and dependencies
└── package-lock.json # Locked dependency tree
-
Additional filters: Uncomment and customize the filtering logic in
jobfeed.jsto match specific criteria (e.g., budget ranges, skill keywords, client history). -
Export options: Modify the script to output aggregated data in other formats (CSV, Excel) using libraries like
json2csvorxlsx. -
Visualization: Integrate a charting library (e.g., Chart.js) to generate visual reports of skill demand and job trends.
This project doesn't support the collecting source JSON file. So You must collect it on Upwork.com manually.
Here's a screenshot how to collect JSON file on Upwork.com
Copy JSON data and paste it to the file in #json folder.
Happy coding!
