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.0007
Controller Execution Time ( Jobseekers / Job )  0.0126
Total Execution Time  0.0139
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,499,120 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.0067 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1755023
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 1010799
 LIMIT 1 
0.0003   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.0004   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.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1755023 
0.0018   UPDATE employer_jobs SET hit_counts = '***Oct-23-2026=1323***Oct-24-2026=82***Oct-25-2026=10' WHERE job_id= '1755023'  
0.0007   UPDATE employer_jobs SET monthly_hits = '***Oct-2026=1415' WHERE job_id= '1755023'  
0.0004   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1755023' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1755023 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '1010799'
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)