1 Summary
- How do people sign in?
- Emailed one-time code, magic link, Google, or Microsoft. RCRAReady stores no passwords.
- §3.1
- Is access role-based?
- Yes. Admin, Operator, and Viewer, granted per organization or per facility.
- §3.2
- Is AI used on our data?
- Only to draft waste profiles. A person reviews every draft before it is used.
- §8
2 Hosting and infrastructure
2.1 Where your data lives
Application data and uploaded files are stored on AWS in the United States (US East region). The database keeps copies across multiple availability zones, so losing one data center does not lose data or take the service offline. The web app is served through Cloudflare.
2.2 Backups and recovery
- The production database is backed up continuously through AWS Backup, with a daily backup as a fallback.
- Stored files are versioned. Overwriting or deleting a file keeps the earlier version.
- Automatic safeguards stop any release that would replace the database or file storage.
2.3 Monitoring
- Automated alarms cover application errors, performance, and delivery of email and SMS alerts.
- A separate check confirms that deadline alerts are running. If they stop, we find out before you miss one.
- An automated test signs in to the live app after every release and on a regular schedule.
3 Sign-in and access control
3.1 Sign-in without passwords
People sign in with a code sent to their work email, a magic link, or a Google or Microsoft account. Password sign-in is switched off, so there are no RCRAReady passwords to reuse, phish, or leak.
- Emailed sign-in codes and links are single-use and expire after 10 minutes.
- Google and Microsoft sign-in tokens are encrypted before they are stored.
- Sign-in activity is recorded in a separate authentication log.
3.2 Roles
There are three roles. Each can be granted for the whole organization or for specific facilities, so a contractor at one site sees only that site.
| Capability | Viewer | Operator | Admin |
|---|---|---|---|
| View records, dashboards, and audit history | |||
| Log containers, inspections, shipments, and issues | |||
| Bulk import records and manage SMS alerts | |||
| Manage facility settings and members | |||
| Archive or transfer facilities | |||
| Manage billing and add facilities |
3.3 How permission checks are enforced
Every permission decision goes through one central policy, and the build fails if code checks access any other way. Automated tests check that one organization's data and alerts never reach another organization.
3.4 Access to production
- Production is isolated from development and testing environments.
- Multi-factor authentication is required on every account that can reach production systems.
- Deployments and services reach AWS and the database with short-lived credentials, not stored keys or passwords.
- Policy prohibits using production customer data in development or test environments.
4 Encryption and data protection
4.1 In transit
The app accepts TLS 1.2 and 1.3 only, and uses HSTS so browsers never fall back to plain HTTP. A strict Content Security Policy limits which scripts can run and prevents the app from being embedded in other sites.
4.2 At rest
- Database storage is encrypted with AES-256 through AWS KMS, with automatic key rotation.
- Stored files are encrypted with AES-256 server-side encryption.
- If you connect EPA RCRAInfo, your API credentials are encrypted a second time by the application before they are stored.
5 Audit trail and record integrity
For EHS teams, security includes whether the record will hold up in front of an inspector. This section covers how history is protected from edits, including edits by us.
5.1 Append-only, enforced by the database
An audit log is only as trustworthy as the guarantee that nobody can edit it. In RCRAReady that guarantee is a database permission, not a policy. The access the application runs with can add audit entries and read them, but the database refuses any attempt to change or delete them, so neither the app nor a bug in it can rewrite history.
5.2 What each event records
Each change to a container, inspection, shipment, profile, or setting writes an event with who made it, their role at the time, when, where it came from (web, import, scheduled job, or webhook), and a snapshot of the record and facility after the change.
- Occurred
- 2026-09-08 14:02:11 CDT
- Actor
- Dana R. · Operator
- Source
- web
- Facility
- North Plant · OHD000000000
- Event
- Accumulation start date set
- Record
- Container C-2291 · Spent solvent blend
- Snapshot
- Container state after the change
5.3 Deadlines you can reproduce
Accumulation deadlines and generator status are calculated by fixed rules, not AI, so the same inputs always produce the same dates. Build checks stop those rules from depending on server clocks or time zones. The app shows the inputs and regulation behind each date.
5.4 How the rules are tested
Alongside ordinary tests, the core rules (generator category, accumulation limits, and deadlines) have property-based tests. Instead of checking a few hand-picked examples, each test generates hundreds of random waste quantities, containers, and dates, and checks that rules like these hold for every one:
- Generator category matches an independent implementation of the federal thresholds in 40 CFR 262.13.
- Adding hazardous waste can never make a generator category less strict.
- Splitting, reordering, or changing the units of the same waste never changes totals, category, or limits.
- Missing information never produces a later deadline than the exact one.
6 How changes reach production
Every change to the application and its infrastructure passes the same gates in order, and any failure stops the release. The suite includes more than 3,500 automated tests.
- 1
Automated checks
Linting, type checks, and unit tests, then a full production build.
- 2
Integration tests
Data-access and API tests run against a real database, not a mock.
- 3
Staging release
The release goes to a separate staging environment first, where the deadline-alert pipeline is checked end to end.
- 4
End-to-end tests
Browser tests walk through sign-in, containers, inspections, shipments, billing, and offline use.
- 5
Production release and live check
Safeguards stop any deploy that would replace stored data. After release, an automated test signs in to the live app.
7 Subprocessors
These are the companies that process customer data for RCRAReady, current as of . If you need notice before this list changes, we can put that in your DPA.
- Amazon Web Services United States (US East)
- What it does for us
- Hosting, database, file storage, background jobs, and email delivery (SES)
- Customer data it handles
- All application data and uploaded files
- Cloudflare Global edge network
- What it does for us
- Serves the web app, terminates TLS, and provides page-view analytics
- Customer data it handles
- All web traffic to the app passes through it
- Twilio United States
- What it does for us
- SMS deadline and compliance alerts
- Customer data it handles
- Mobile numbers of people who opt in, and alert text
- Stripe United States
- What it does for us
- Subscriptions, invoices, and payments
- Customer data it handles
- Billing contacts and payment details. Card numbers go to Stripe directly and never reach our servers.
- Google (Gemini API) Google-managed
- What it does for us
- Optional AI drafting of waste profiles
- Customer data it handles
- Documents you choose to upload for extraction, and public EPA manifest records
- Microsoft Clarity Microsoft-managed
- What it does for us
- Product analytics and session replay in the web app, used to find usability problems
- Customer data it handles
- Clicks, scrolling, page views, and session recordings, with Clarity's masking applied
| Provider | What it does for us | Customer data it handles | Location |
|---|---|---|---|
| Amazon Web Services | Hosting, database, file storage, background jobs, and email delivery (SES) | All application data and uploaded files | United States (US East) |
| Cloudflare | Serves the web app, terminates TLS, and provides page-view analytics | All web traffic to the app passes through it | Global edge network |
| Twilio | SMS deadline and compliance alerts | Mobile numbers of people who opt in, and alert text | United States |
| Stripe | Subscriptions, invoices, and payments | Billing contacts and payment details. Card numbers go to Stripe directly and never reach our servers. | United States |
| Google (Gemini API) | Optional AI drafting of waste profiles | Documents you choose to upload for extraction, and public EPA manifest records | Google-managed |
| Microsoft Clarity | Product analytics and session replay in the web app, used to find usability problems | Clicks, scrolling, page views, and session recordings, with Clarity's masking applied | Microsoft-managed |
RCRAReady does not sell customer data or share it for advertising. The marketing website's analytics are covered in the Privacy Policy.
8 Use of AI
AI is used in two places, both for setting up waste profiles, and both produce drafts that a person reviews and approves before they are used.
- Document extraction. If you upload an SDS, lab report, or vendor profile and ask RCRAReady to read it, the document is sent to Google's Gemini API to draft profile fields. It's optional. If you don't use it, no documents are sent.
- Starter profiles. Suggested profiles come from your facility's public EPA e-Manifest history, not from records you've entered.
- AI does not calculate deadlines, generator status, or alerts, and it never changes a record on its own.
9 Ownership, privacy, and deletion
- You own the data you put into RCRAReady. We use it to run, secure, and support the service, as set out in the Terms of Use.
- If a subscription lapses, the account becomes read-only. You can still view and export records. Past-due accounts keep full access while payment is retried.
- The personal data we hold is limited to names, work email addresses, mobile numbers for people who opt in to SMS, and sign-in details such as IP address and browser.
- People can delete their own account in settings. Organization data can be deleted on request, and access, correction, or deletion requests go to hello@rcraready.com.
10 Incidents and vulnerability reports
- If we confirm a breach that affects your data, we notify you within 72 hours of confirming it, and keep you updated as we learn more.
- To report a vulnerability, email security@rcraready.com with steps to reproduce. Reports go straight to the engineers who build RCRAReady.
11 What we don't have yet
Your reviewers will ask about these, so here they are up front, with what we offer in the meantime. We'll update this section as each one changes.
- SOC 2 Type II or ISO 27001 report
- In the meantime A third-party audit costs more than a company our size can justify today. We share our detailed security overview privately, complete your questionnaire, and sign a DPA.
- SAML single sign-on and SCIM provisioning
- In the meantime Sign-in with Google Workspace or Microsoft Entra ID accounts. Admins add and remove people per organization or per facility.
- Customer-managed encryption keys
- In the meantime AWS KMS-managed keys with automatic rotation for the database, and AES-256 encryption for stored files.
- Hosting outside the United States
- In the meantime All application data is stored in the AWS US East (Ohio) region.
12 Review documents and contacts
- Privacy Policy What we collect, how we use it, and your choices. Public
- Terms of Use Service terms, data ownership, and customer responsibilities. Public
- Data Processing Agreement Our DPA, or a review of yours, for larger rollouts. On request
- Security questionnaire Send it in whatever format your team uses. We fill it in. On request
- Detailed security overview Architecture, access model, monitoring, and release controls, shared privately with your security team. A walkthrough call is available too. On request
- Subprocessor list Every provider that processes customer data, and what it handles. Section 7