PieceWrkPieceWrk
Private beta

Your data stays inside your company. So does your margin.

Read this before payroll goes into a new system. Below is exactly how company data stays separated, how price visibility works, how accounts and roles are checked, where the data lives, and which certifications we don’t have yet.

Data isolation

One company’s data, kept to one company.

PieceWrk runs many companies on one set of servers. Payroll, customer records, selections, photos: all of it carries a company_id, and every table that holds it has Postgres row level security turned on. A request for a job costing number is checked against the company tied to the person asking, inside the database, before a single row comes back.

Two checks, not one

  • The API checks your role and your company before it even queries the database.
  • Postgres checks your company_id again, independently, through a row level security policy on the table itself.
  • If either check disagrees with what you’re asking for, the row does not come back.

A mistake in one layer doesn’t hand your data to another company by itself. Both layers would have to fail together.

Price privacy

The same rule keeps your margin from your own crew.

Selections are where a builder, a homeowner, a sub, and a supplier normally end up in four separate email threads, because putting everyone in one place usually means putting your markup on the table too. PieceWrk stores the supplier order, the install labor, your markup, and the customer price as separate values on the same line item. A database constraint blocks any homeowner or designer share from ever carrying a sub’s raw cost. That field simply cannot be set for those two audiences.

It isn’t a setting that can be left unchecked. It’s the shape of the record.

Accounts and access

Every request carries a token, and the token has a role.

PieceWrk authenticates through Supabase. Signing in issues a JSON Web Token, and every API request is verified against it before anything runs. What that account is allowed to do after that depends on its role, checked again on the server, not just on which buttons the app happens to show.

Deactivate someone’s profile and that check fails on their very next request, not just their next login attempt.

Who sees what

  • Owner, Admin, Manager, HR: Full visibility into the company data it takes to run the business.
  • Employee: Their own work, logged from the field, on the phone or the web.
  • Subcontractor: The jobs they’re assigned to, not the rest of the company’s records.
  • Customer: No login at all. A token link opens the portal for their job, and nothing else.

Hosting and encryption

Two vendors, not a dozen.

Your data lives in Supabase: the Postgres database, authentication, and file storage all run there. The application itself, the web app and the API, runs on Vercel. Traffic to both runs over HTTPS, and data at rest in the database is encrypted by the underlying infrastructure. PieceWrk doesn’t run its own servers for any of that, on purpose. It’s two vendors whose whole job is exactly this.

AI and your photos

Photos get analyzed. Job walk video does not.

Photos you upload may be sent to an AI provider to check image quality, screen for unsafe content, and help categorize the work shown. Job walk video recordings are not sent to any AI provider. The providers involved work under contract as service providers: they don’t get to use your information for their own purposes, and none of it is used to train their models.

Where we stand

What we don’t claim.

PieceWrk doesn’t hold SOC 2, ISO 27001, HIPAA, or PCI certification. We haven’t run an independent penetration test, we don’t have a bug bounty program, and we don’t publish an uptime SLA. None of that exists today. If your company needs one of those before it can sign on, tell us, and we’ll tell you plainly where that leaves things rather than promise a badge we don’t have.

Report a problem

Found a security issue, or need something from us in writing for your own review? Email us directly.

security@piecewrk.com

For the complete subprocessor list and the app’s own Privacy Policy, see the links above.

FAQ

Common questions.

Can one company using PieceWrk see another company’s data?
No. Every table that holds company data carries a company_id, and Postgres row level security policies scope every read and write to the company tied to your session. That check runs inside the database itself, underneath the application code, not only inside it.
Who can see what a job actually costs?
Depends on the number. On selections, the supplier order, the install labor, your markup, and the customer price are stored as separate values on the same record, and a database constraint blocks any homeowner or designer share from ever carrying a sub’s raw cost. See how it works on the Selections page.
Are photos or job walk video sent to an AI provider?
Photos you upload may be analyzed by an AI provider to check image quality, screen for unsafe content, and help categorize the work shown. Job walk video recordings are not sent to any AI provider. None of it is used to train a provider’s models.
Do you have SOC 2, ISO 27001, or another certification?
Not today. PieceWrk doesn’t hold a formal security certification, hasn’t run an independent penetration test, and doesn’t publish an uptime SLA. If your company needs one of those before it can sign on, tell us. We’d rather say that plainly now than after payroll is already on the system.
What happens to someone’s access when they leave the crew?
Deactivating a profile is checked on the very next API request, not only at the login screen. A deactivated account stops passing that check immediately, on web and on mobile.
Private beta

Bring us a real question about your setup.

If there’s something specific your insurer, your bank, or your own gut wants answered before payroll goes in, ask it directly. We’d rather answer once than have you guess.