The platform was built to process and distribute jewelry product data from multiple suppliers with different schemas, SKU conventions, and update cycles. Input data can come from files or external APIs, with individual imports ranging from tens of thousands to several hundred thousand records.
Rather than forcing all supplier data into a single fixed schema, the platform supports independent processed data versions and configurable output structures, allowing the same source data to serve different downstream use cases such as custom backends, e-commerce integrations, and interactive product experiences.
At a high level, the backend is separated into two main responsibilities:
A business application layer manages workspaces, members, pricing, supplier configuration, payments, access, and process metadata.
A dedicated data-processing layer handles ingestion, transformation, and flexible supplier datasets.
The two backend services communicate asynchronously through RabbitMQ, while PostgreSQL stores business and processing metadata and MongoDB stores processed dataset versions.
Processed data can be previewed, validated, and exported before a newer version is activated, reducing the risk of a synchronization run immediately affecting the dataset currently consumed by a client.
