Automation Engineer (Python) - US medical practice, long-term, $1,800-2,600/mo

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

TYPE OF WORK

Full Time

SALARY

$2,000/mo ($1,800-$2,600 DOE)

HOURS PER WEEK

40

DATE UPDATED

Sep 3, 2026

JOB OVERVIEW

We are a small physician-owned pain management practice in New York. We run our own document pipeline: providers fill in patient visit forms, Python and Node scripts turn them into clinical notes, and browser automation files them into our EMR. It runs nightly on a Mac and in Google Cloud.

It mostly works. When it doesn't, it usually fails silently - a job reports success and the output is empty. Your job is to own that pipeline and make it honest.

WHAT YOU WILL ACTUALLY DO
- Maintain a Python and Node.js codebase plus six scheduled jobs on macOS launchd and Google Cloud Scheduler
- Read the nightly audit output every morning and work the exceptions
- Write a failing test for a defect before you fix it
- Improve the monitoring so that a job which ran but did not work is visible without a human noticing
- Occasionally join a call with the doctor and explain what broke, in plain English

YOU MUST HAVE
- Real Python. Not "I have used Python" - you can debug code you have never seen before, written by someone else
- Comfort in a terminal: git, cron or launchd, log files, ssh
- Enough JavaScript to maintain a Playwright or Puppeteer browser automation script
- The habit of checking that a thing worked, rather than that it ran
- Reliable power and internet, and a machine you can work on for eight hours

NICE TO HAVE
Google Cloud (Functions, Scheduler, Storage). PDF form tooling. Any exposure to US healthcare.

HOURS AND PAY
40 hours a week, of which 4 must overlap 9am-1pm New York time. The rest you schedule yourself.
$1,800-$2,600 per month depending on what you demonstrate, paid twice monthly, plus 13th month pay in December. Reviewed at six months.
This is long-term. We are not looking for project work and we are not looking for an agency.

ABOUT THE DATA
This role handles US patient health information. You will be trained on HIPAA, you will sign a confidentiality agreement, and you will be given your own named logins. You will never be asked to share an account or to use someone else's.

HOW TO APPLY - read this part carefully, it is the first test.

Start your application with these two lines, exactly, each on its own line:

PIPELINE-2026
LEDGER

Then answer these three, numbered, in this order:

1. A link to code you have written that I can read - GitHub, GitLab, a gist, anything. If you cannot share code, instead describe in five sentences the hardest bug you have ever found in someone else's code, and how you found it.

2. A script runs every night, exits with status 0, and writes an empty file. There is nothing in the logs. Name the three things you would check first, in order.

3. If our workday starts at 9:00 AM in New York, what time is that where you are, today? Would your answer be the same in January? Explain in one sentence.

Applications that do not follow this format are not read. That is not a trick - it is the job. Following an instruction exactly, every time, is most of this work.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0152
Total Execution Time  0.0167
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,489,352 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Automation-Engineer-Python-US-medical-practice-long-term-1800-2600mo-1722982
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0073 seconds)  (Hide)
0.0005   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0005   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1722982
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 971690
 LIMIT 1 
0.0010   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1722982
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-09-11',ej.date_added) duration_daysDATEDIFF('2026-09-11',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-09-11',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1722982' 
0.0004   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1722982 
0.0007   UPDATE employer_jobs SET hit_counts '***Sep-03-2026=621***Sep-04-2026=138***Sep-05-2026=32***Sep-11-2026=1' WHERE job_id'1722982'  
0.0009   UPDATE employer_jobs SET monthly_hits '***Sep-2026=791' WHERE job_id'1722982'  
0.0008   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1722982' AND status LIKE 'sent%' ORDER BY id DESC  
0.0004   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1722982 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '971690'
AND `date_added` >= '2022-06-08' 
0.0004   select from teasers 
0.0004   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)