Data Scientist/Engineer

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Any

SALARY

$925.00-$1,750.00 per month

HOURS PER WEEK

38

DATE UPDATED

Jun 20, 2026

JOB OVERVIEW

Data Engineer
Praxis Partners Limited | Technology | Mid-Senior

About the role
Praxis runs data ingestion, transformation, and extraction across client engagements and internal operations. You will build and run the pipelines we depend on, and operate all data work on our locally hosted security infrastructure. The result is one accountable function for data movement and integrity.

This starts as a contract engagement with a defined path to part-time and full-time as scope grows. You report to the Head of Technology.

Reporting line and setup
Reports to: Head of Technology
Function: Technology
Location: Remote
Work pattern: Contract | Scope for Full-Time for the right candidate
Entity: Praxis Partners Limited

What you will do
Data ingestion, transformation, and extraction across client and internal operations as a single accountable function.
Build and run ETL and ELT pipelines on Google Cloud, including BigQuery, Cloud Run, and supporting Google DevOps tooling.
Operate data work on the locally hosted, internal security infrastructure and framework, and keep it running.
Manage compute capability so pipelines and processing meet delivery needs.
Maintain data integrity across sources, with monitoring and checks that catch problems before delivery does.
Support client engagements with reliable, repeatable data movement that delivery teams can depend on.

What you bring
5+ years in data engineering.
Built and operated ETL and ELT pipelines on Google Cloud architecture.
Hands-on with BigQuery, Cloud Run, and Google DevOps tooling.
Comfortable running data operations on self-hosted infrastructure, with attention to security.
Strong SQL and at least one scripting language for pipeline work.
Works to standards on data handling, given the client-facing nature of the role.


Bonus points
Experience with Supabase or comparable Postgres-backed platforms.
Google Cloud Professional Data Engineer certification.
Worked across both client delivery and internal operations.
Experience standing up a data function where none existed.

What we offer
Ownership of a function the business does not currently hold in one place.
Direct work with the Head of Technology, short reporting lines, fast decisions.
Tools provided day one: Google Cloud Platform, ETL and ELT tooling, the locally hosted security framework.

Terms
NDA required
IP and work product assigned to Praxis Partners Limited.
Probation 3 months. Notice 4 weeks either party. Performance review quarterly.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0182
Total Execution Time  0.0195
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,502,616 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Data-ScientistEngineer-1672962
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0126 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0011   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1672962
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 931912
 LIMIT 1 
0.0009   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1672962
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-08-09',ej.date_added) duration_daysDATEDIFF('2026-08-09',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-08-09',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1672962' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1672962 
0.0007   UPDATE employer_jobs SET hit_counts '***Jun-20-2026=197***Jun-21-2026=135***Jun-22-2026=70***Jun-23-2026=28***Jun-24-2026=31***Jun-25-2026=24***Jun-26-2026=13***Jun-27-2026=12***Jun-28-2026=10***Jun-29-2026=21***Jun-30-2026=18***Jul-01-2026=8***Jul-02-2026=10***Jul-03-2026=18***Jul-04-2026=12***Jul-05-2026=8***Jul-06-2026=17***Jul-07-2026=10***Jul-08-2026=14***Jul-09-2026=9***Jul-10-2026=11***Jul-11-2026=6***Jul-12-2026=11***Jul-13-2026=11***Jul-14-2026=5***Jul-15-2026=9***Jul-16-2026=12***Jul-17-2026=5***Jul-18-2026=1***Jul-19-2026=7***Jul-20-2026=6***Jul-21-2026=13***Jul-22-2026=6***Jul-23-2026=3***Jul-24-2026=5***Jul-25-2026=9***Jul-26-2026=19***Jul-27-2026=23***Jul-28-2026=18***Jul-29-2026=16***Jul-30-2026=18***Jul-31-2026=20***Aug-01-2026=15***Aug-02-2026=18***Aug-03-2026=18***Aug-04-2026=13***Aug-05-2026=15***Aug-06-2026=10***Aug-07-2026=21***Aug-08-2026=21***Aug-09-2026=1' WHERE job_id'1672962'  
0.0005   UPDATE employer_jobs SET monthly_hits '***Jun-2026=559***Jul-2026=340***Aug-2026=132' WHERE job_id'1672962'  
0.0013   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1672962' AND status LIKE 'sent%' ORDER BY id DESC  
0.0002   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1672962 
0.0046   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '931912'
AND `date_added` >= '2022-06-08' 
0.0007   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)