Full-Stack Python Developer — Automation, Scraping & AI

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

TYPE OF WORK

Full Time

SALARY

$6-10/hour

HOURS PER WEEK

40

DATE UPDATED

Jul 11, 2026

JOB OVERVIEW

We're a real estate company that runs on a lot of custom software, and we're building more of it continuously. We're looking for an experienced software developer to take ownership of a real, running production system — not a no-code tinkerer. If you've built and shipped backend services in Python, wrangled Postgres by hand, deployed with Docker, and can reverse-engineer a stubborn government web portal, keep reading. If your experience is mostly drag-and-drop automation tools, this role isn't the right fit.

The Role
This is a long-term role, not a one-off gig. Your first job is to finish a project that's already in progress — an existing production codebase with a Python backend, a fleet of web scrapers, LLM-powered research pipelines, and the workflow automation that ties it all together. From there, there's a long runway of new software to build. We're growing our custom tooling continuously and want someone who'll grow with it.

This is a builder-owner role. You'll own features from idea to deployment and be responsible for code that runs every day. The person who built the current system set a high bar — we need someone who can read that codebase, understand why it's built the way it is, and improve it without breaking it.

A Great Environment to Build In
You won't be working in a vacuum. Our team is technical, so you'll work directly with people who understand the code and the system. It's a fluid, collaborative setup — you'll be able to get started right away, get your questions answered quickly, and get the support you need to move fast. No waiting days for someone non-technical to unblock you.

What You'll Work On
A Python (FastAPI) REST backend with a PostgreSQL database — raw SQL, no ORM crutches
Web scrapers against county portals, court records, and public data sources — including JS-rendered sites and anti-bot systems
AI-assisted research and enrichment pipelines (property, legal, and public records)
Document generation, structured data extraction, and routing workflows
Integrations between our custom CRM and external data sources
Workflow automations (n8n) and the job queues that feed the scrapers


Must-Have (we can't train these)
Strong Python (3.11+) — years of it, in production, not tutorials
PostgreSQL and hand-written SQL — comfortable without an ORM
Docker / docker-compose — everything runs in containers, staging and prod
Git with a disciplined branch/deploy workflow (local ? staging ? prod)
REST APIs, webhooks, JSON — you can read docs and integrate anything
Web scraping fundamentals — requests/httpx, BeautifulSoup, HTTP sessions and cookies, and the patience to reverse-engineer messy legacy portals


Strongly Preferred
Playwright (Python) for JS-rendered sites and browser automation
Redis or similar for job queues; concurrency patterns (thread pools, FOR UPDATE SKIP LOCKED)
LLM APIs in real systems (Anthropic/Claude, OpenAI) — used in production, not just prompting a chatbot
n8n or comparable workflow automation
Experience with anti-bot / CAPTCHA handling, proxies, or headless-display setups


Nice to Have
React 19 + TypeScript + Vite + Tailwind (we have a frontend you may touch)
GIS basics — geopandas/shapely, shapefile/GeoJSON
JWT / RBAC auth, nginx, Cloudflare
pytest + GitHub Actions CI


Schedule & Flexibility
You'll mainly work on Philippine time. All we ask is a small daily overlap with US business hours — roughly 1 to 3 hours — which for most people means a few hours in the evening to sync, ask questions, and stay aligned. The rest of your day is yours to structure around your life.

This role rewards independent work. Once you're up to speed, you'll be trusted to run with things on your own schedule, with the team available during the overlap window whenever you need input or unblocking.

Pay for Results
Beyond your base pay, we offer significant bonuses for shipping projects and hitting milestones. If you're the kind of builder who moves fast and gets things across the finish line, there's real upside here — we'd rather reward completed, working software than count hours.

You'll Thrive Here If You
Have shipped and maintained production software that other people depend on
Debug independently, read source when docs fall short, and flag problems early
Care about doing things the right way, but ship pragmatically
Communicate clearly and don't need to be micromanaged


How to Apply
Tell us about a backend or scraping system you built and personally shipped — what it did, the stack, and one hard technical problem you solved. Links to code (GitHub, etc.) get bumped to the top of the pile.

Please note: this is a software engineering role. Applications describing only no-code / drag-and-drop automation experience won't be a fit.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0235
Total Execution Time  0.0248
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,512,456 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Full-Stack-Python-Developer-Automation-Scraping-AI-1687133
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0157 seconds)  (Hide)
0.0009   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0010   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1687133
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 806757
 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` = 1687133
AND `misc`.`idIS NULL 
0.0010   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-07-12',ej.date_added) duration_daysDATEDIFF('2026-07-12',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-07-12',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1687133' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1687133 
0.0012   UPDATE employer_jobs SET hit_counts '***Jul-11-2026=543***Jul-12-2026=2' WHERE job_id'1687133'  
0.0011   UPDATE employer_jobs SET monthly_hits '***Jul-2026=545' WHERE job_id'1687133'  
0.0010   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1687133' AND status LIKE 'sent%' ORDER BY id DESC  
0.0009   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1687133 
0.0043   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '806757'
AND `date_added` >= '2022-06-08' 
0.0009   select from teasers 
0.0008   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)