Each company is separate
Every record in the database carries the company it belongs to, and the database itself enforces that boundary with row-level security policies. The separation is not a filter in the app that could be forgotten; it is a rule the database applies to every query.