← All projects

SIMS: Custom Odoo Inventory System

Archived

A shelved but substantial inventory system for a repair shop: assets, jobs, logistics, labels, photos, and who's allowed to touch what.

OdooPythonERPPostgreSQLOWL

At a glance

  • Outcome: A repair shop’s real work, from assets and the jobs that move them to shipments, purchasing, labels and photos, modeled properly inside Odoo instead of spreadsheets and manual steps.
  • Status: Archived. The modernization push was cut for scope and time.
  • Role: Started as a team effort; I carried the bulk of the build.
  • Stack & libraries: Python and Odoo 19 with the OWL front-end framework, PostgreSQL, QR/label generation, S3-compatible photo storage, deployed via Odoo.sh.
  • Source: Private employer tooling; this page is the case study.
  • What outlasted it: The label-printing integration, which I extracted into Repair Shop Automation.
  • Limitations: Never reached production. It’s here as evidence of data-model work at scale, not as a shipped system.

Overview

SIMS is a suite of custom Odoo 19 modules I built to replace the legacy inventory web app the shop was stuck with. It models the real work of a medical-equipment refurbisher (assets and the jobs that move them through repair, shipments and receipts, purchase orders, label printing, and photo workflows) as a proper data model inside Odoo, not a pile of spreadsheets and manual steps.

What I built

  • sims core, the inventory system itself: assets, models, locations, repair jobs, logistics (shipments/receipts/POs), printing, and reporting, with cron jobs, sequence generation, and a full set of record-level security and portal rules.
  • testbed_tracker: warehouse test-bed systems, a compatibility matrix, and gap analysis over saleable-unit counts.
  • compat_data: admin-curated compatibility ingestion with a staged review and approval-only write path.
  • incentivision: employee incentives, bounties, awards, and a small storefront with approvals.
  • org_groups: a seniority- and department-based permission hierarchy that the rest of the suite routes its access rules through.
  • mail_ext and ui_components: a messaging-menu history tab and shared OWL backend primitives.
  • A Xero bridge for syncing accounting data out of the system.

Built in Python and Odoo’s OWL front-end framework, on PostgreSQL, with QR/label generation (qrcode, Pillow) and S3-compatible photo storage (boto3), and deployed through Odoo.sh.

Status

Shelved. It started as a team effort, and I ended up carrying the bulk of the build myself. I cared a lot about getting the data model right. When the broader modernization push was cut for scope and time, the suite was shelved. The one piece that lived on is the label-printing integration, which I extracted and grew into my Repair Shop Automation tooling.