PYTHON / DJANGO DEVELOPER — AUTO PARTS DATA PLATFORM

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

TYPE OF WORK

Any

SALARY

will negotiate

HOURS PER WEEK

TBD

DATE UPDATED

Oct 23, 2026

JOB OVERVIEW

ABOUT THE PROJECT

AftermarketScout is a B2B platform for the US automotive aftermarket. Auto
parts shops and retailers use it to search a unified catalog of millions of
parts, check live inventory and pricing across dozens of distributors, and
push products and orders into their own stores and shop-management systems.

The backend is a Django application (Python 3.11, PostgreSQL, Redis,
Meilisearch, Docker) with roughly 30 live distributor integrations and data
pipelines that ingest, normalize, and de-duplicate millions of part records.
It is a real production system with paying customers, not a greenfield toy
project.

WHAT YOU WILL ACTUALLY WORK ON

- Building and maintaining integrations with parts distributors: REST and
SOAP APIs, SFTP/CSV and XML feeds, EDI X12 order documents, and a few
sites that need careful HTTP scraping with sessions, cookies, and proxies.
- Data pipelines: ingesting supplier catalogs, normalizing part numbers,
matching parts across suppliers, cleaning up duplicates, backfilling
images and specs.
- Vehicle fitment work (ACES/VCdb-style data) so a shop searching for their
truck gets the right parts.
- REST API endpoints for the web frontend, plus Meilisearch index work for
catalog search and filtering.
- Writing the one-off and scheduled Django management commands that run
these jobs, and making them restartable and safe to re-run.
- Debugging production issues: a supplier changes their feed, a sync drifts,
a query gets slow. You will be expected to dig in and find the cause.

REQUIREMENTS

- 3+ years of professional Python, with at least 2 years on Django.
- Strong SQL and PostgreSQL: you can read a slow query, add the right index,
and know why a join over millions of rows is a bad idea.
- Real experience consuming third-party APIs and messy data feeds, including
pagination, rate limits, retries, and partial failures.
- Comfortable with Git, code review, and Docker.
- You write tests for logic that matters and you check your own work before
saying it is done.
- Able to read an existing large codebase and follow its patterns instead of
rewriting things your own way.
- Written English good enough to explain a tricky data problem in Slack
clearly. Most of our communication is written.
- Reliable internet and your own computer.

NICE TO HAVE (NOT REQUIRED)

- Automotive, e-commerce, ERP, or marketplace/catalog data experience.
- Meilisearch, Elasticsearch, or other search engine experience.
- Playwright/Selenium or other scraping experience against sites with bot
protection.
- EDI (X12 850/855/856/810) exposure.
- Experience working alongside AI coding tools day to day.

HOW WE WORK

- Fully remote, paid monthly.
- Core overlap: you should be reachable for at least 4 hours between
9:00 AM and 6:00 PM Philippine time; the rest of your hours are flexible.
- Written-first: clear tickets, short async updates, one call a week if
needed.
- I care about correctness over speed. This system touches real inventory
and real orders, so "it ran without an error" is not the same as "it is
right." Say when you are unsure instead of guessing.
- Long-term role. If this works out, it is ongoing work, not a one-off
project.

HOW TO APPLY

Please do not send a generic application. I read every one that follows
these instructions and ignore the rest.

Start your message with the word SPARKPLUG so I know you read this post.

Then answer these four questions:

Also include:
- A link to your GitHub, GitLab, or any code you can share.
- Your years with Python and with Django.
- Your expected monthly rate in USD and your available hours per week.

Shortlisted applicants get a short paid test task (around 2-3 hours, paid
regardless of outcome) on a small, isolated piece of real work.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0029
Controller Execution Time ( Jobseekers / Job )  0.0275
Total Execution Time  0.0311
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,489,088 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/PYTHON-DJANGO-DEVELOPER-AUTO-PARTS-DATA-PLATFORM-1755023
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0138 seconds)  (Hide)
0.0026   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0013   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1755023
 LIMIT 1 
0.0017   SELECT *
FROM `employers`
WHERE `employer_id` = 1010799
 LIMIT 1 
0.0006   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1755023
AND `misc`.`id` IS NULL 
0.0005   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-10-25',ej.date_added) duration_days, DATEDIFF('2026-10-25',e.rebill_date) duration_rebill, ej.*, e.deactivate FROM employers e, employer_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-10-25',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1755023' 
0.0009   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1755023 
0.0007   UPDATE employer_jobs SET hit_counts = '***Oct-23-2026=1323***Oct-24-2026=82***Oct-25-2026=11' WHERE job_id= '1755023'  
0.0009   UPDATE employer_jobs SET monthly_hits = '***Oct-2026=1416' WHERE job_id= '1755023'  
0.0007   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1755023' AND status LIKE 'sent%' ORDER BY id DESC  
0.0012   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1755023 
0.0005   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '1010799'
AND `date_added` >= '2022-06-08' 
0.0009   select * from teasers 
0.0014   SELECT * FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)