Python Backend Engineer – FastAPI, OpenCV/YOLO, IoT Device Integration
Worldwide
About the role We run a backend service that turns customer files (PDFs, PostScript, images) into rendered output for a fleet of IoT devices in the field. A FastAPI service ingests the files, runs a YOLO detector to find and crop the relevant region, validates the content, then serves the rendered output to devices over mutual TLS backed by our own private certificate authority. A small admin console (Dash) handles operator login, device blocklists, job history, and hot-swapping the detection model. The whole thing runs in Docker and is moving from a single host to EKS. Small system, real consequences: a bad response means a failed job on real hardware, not just a red pixel on a dashboard. What you'll do - Own the API — upload, job submission, chunked result download, health/status endpoints, and the failure behavior behind each one - Improve the detection pipeline — YOLO inference, OpenCV pre/post-processing, content-validation heuristics, PDF and PostScript rasterization - Make it horizontally scalable — replace the in-memory job store with durable shared state so we can run more than one replica - Build the test suite that doesn't exist yet — unit tests for the vision pipeline, contract tests for the device-facing API, fixtures cut from real samples - Harden the device trust chain — certificate issuance and rotation, pinning constraints imposed by firmware, secrets in AWS Secrets Manager - Support the firmware team — binary framing on the wire, OTA manifests, version and rollback behavior across two separate device fleets - Help move us to EKS alongside the platform engineers, without an outage What you need - Production Python, 4+ years — Python 3.11+ idioms, type hints, packaging, dependency hygiene - FastAPI or equivalent async framework, plus real ASGI deployment experience (not just a dev server on a laptop) - Practical OpenCV and Pillow — contours, thresholding, morphology, affine transforms, color space handling - Applied deep learning, not research — PyTorch or Ultralytics YOLO in production: loading weights, batching, CPU vs GPU tradeoffs, latency budgets - Image and document formats in anger — PDF rasterization, DPI and bit-depth conversion, 1-bit dithering for device output - Docker beyond a copied template — multi-stage builds, entrypoints, healthchecks, Compose - TLS fundamentals — chains, CA vs leaf, SANs, key usage extensions, client certificates - Testing discipline — you write pytest as you go, not after someone asks - Linux ops literacy — systemd, journald, log rotation, and comfort debugging a box over SSH Nice to have - IoT or embedded backends — constrained clients, flaky links, resumable/chunked transfers, OTA update flows - ESP32 or ESP-IDF familiarity, or experience owning a firmware-to-server contract end to end - AWS — EC2, ECR, Secrets Manager, ALB, EKS - Device-specific output encoding formats and domain quirks - Model lifecycle — retraining a detector on new input samples, versioning weights, safe rollout/rollback - Security instincts around authentication, rate limiting, and validating untrusted uploads - Dash, Plotly, or similar internal tooling UI experience Known rough edges (we're telling you up front — fixing these is a large part of the first six months) No test suite In-memory job store Single replica How we work Small team with direct access to the hardware and firmware engineers. Code review on every change. Infrastructure lives in the repo next to the service — the person who writes the change is the person who ships it and watches it land. Full disclosure of the hardware and business specifics will happen after an NDA is signed with shortlisted candidates.
- More than 30 hrs/weekHourly
- 1-3 monthsDuration
- ExpertExperience Level
- Remote Job
- Ongoing projectProject Type
Skills and Expertise
Activity on this job
- Proposals:50+
- Last viewed by client:4 days ago
- Interviewing:0
- Invites sent:0
- Unanswered invites:0
About the client
- CanadaScarborough3:29 AM
- $24K total spent26 hires, 0 active
- 1,877 hours
- Tech & ITMid-sized company (10-99 people)
Explore similar jobs on Upwork
How it works
Create your free profileHighlight your skills and experience, show your portfolio, and set your ideal pay rate.
Work the way you wantApply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
Get paid securelyFrom contract to payment, we help you work safely and get paid securely.
About Upwork
- 4.9/5(Average rating of clients by professionals)
- G2 2021#1 freelance platform
- 49,000+Signed contract every week
- $2.3BFreelancers earned on Upwork in 2020
Find the best freelance jobs
Growing your career is as easy as creating a free profile and finding work like this that fits your skills.
Trusted by