I developed a Chrome extension that collects data directly from open pages on Freelancehunt.
The extension identifies the type of page and extracts information from HTML and DOM.
Which pages are processed:
project page;
correspondence with the client;
bidding page;
own project application;
blocks with portfolio and similar works.
What data is collected:
From the project:
project ID;
title;
description;
budget;
budget type;
publication date;
status;
link to the project.
From the correspondence:
dialog ID;
client's name;
client's profile;
first incoming message;
date of the first response;
last activity;
related project.
From the own bid:
application ID;
response text;
price;
deadline;
submission date;
links to the portfolio;
link to a similar project.
How the parser works:
Freelancehunt page
→ determine the type of page
→ search for necessary DOM elements
→ extract text and attributes
→ normalize data
→ check mandatory fields
→ transfer data to CRM
For stability, the following are implemented:
multiple backup CSS selectors;
waiting for dynamic elements to load;
MutationObserver;
project compliance check;
diagnosis of missed fields;
protection against re-capture;
sequence: correspondence → project → bid.
As a result, ordinary Freelancehunt pages are transformed into structured lead cards in a separate CRM.
The extension identifies the type of page and extracts information from HTML and DOM.
Which pages are processed:
project page;
correspondence with the client;
bidding page;
own project application;
blocks with portfolio and similar works.
What data is collected:
From the project:
project ID;
title;
description;
budget;
budget type;
publication date;
status;
link to the project.
From the correspondence:
dialog ID;
client's name;
client's profile;
first incoming message;
date of the first response;
last activity;
related project.
From the own bid:
application ID;
response text;
price;
deadline;
submission date;
links to the portfolio;
link to a similar project.
How the parser works:
Freelancehunt page
→ determine the type of page
→ search for necessary DOM elements
→ extract text and attributes
→ normalize data
→ check mandatory fields
→ transfer data to CRM
For stability, the following are implemented:
multiple backup CSS selectors;
waiting for dynamic elements to load;
MutationObserver;
project compliance check;
diagnosis of missed fields;
protection against re-capture;
sequence: correspondence → project → bid.
As a result, ordinary Freelancehunt pages are transformed into structured lead cards in a separate CRM.