Privacy principles

Five principles, no surprises

Doxzo's privacy model is deliberately simple: give access to the least, keep it for the shortest time, and remove it automatically.

Minimum access

Only the people who need a document for a specific job can reach it.

Vendor scope

A vendor can only access jobs where the job's vendorId matches their own record.

Customer scope

A customer can only access their own jobs. There is no shared document library.

Minimum storage

Documents exist only for the duration of a print job.

Temporary by default

The storage object is the document's only resting place, and it is removed on completion or expiry.

No permanent vault

There is no permanent document store. History keeps metadata only, never the file bytes.

Minimum information

Only the metadata required for the workflow is retained.

Metadata only in the database

PostgreSQL stores filename, MIME type, size, settings, status, hashed code, and timestamps, never document bytes.

No derived identifiers

Internal object IDs are generated server-side, and user filenames are never used as storage paths.

Automatic deletion

Cleanup does not depend on someone remembering.

Server-side worker

A cleanup worker scans for expired and final-state jobs and deletes their storage objects.

No browser required

Deletion happens on the backend even if no customer or vendor opens the app again.

Auditable actions

Every state change is constrained and recorded.

Server-enforced state machine

The frontend can never set an arbitrary status. Transitions follow a fixed, authorized flow.

Minimal audit trail

Print job events record the lifecycle so actions can be traced without retaining the document.

What privacy can't mean here

An honest boundary keeps the promise meaningful.

Printing requires the document to reach the printer

Doxzo does not claim the vendor never receives the document. Its privacy guarantee is about minimizing exposure: temporary access, scoped authorization, and automatic deletion.