Skip to main content
Trust

Security you can verify.

ProposalForge is Protected B aligned. Its application runtime, database, file storage, AI processing and document text extraction run in Canadian regions in Montreal. This page states what is in place, what is planned, and how to request the evidence.

Posture

Posture summary

Protected B aligned

Controls designed to support Protected B work. ProposalForge has not been formally assessed, and it is not certified or authorized by a Government of Canada department or by any other body. The control matrix in the pack shows what is in place and what is planned.

Data location

The database, authentication and file storage run on Supabase in AWS ca-central-1 (Montreal). The application runtime, AI processing and document text extraction run on Google Cloud in northamerica-northeast1 (Montreal), which also holds the daily backup copy of uploaded files. The subprocessor list below names the providers outside the Canadian regions and what each receives.

AI in Canada

AI features use Google Vertex AI in the Montreal region, called from the application runtime in Montreal. ProposalForge sends customer content to no other AI provider.

Encryption

TLS 1.2 or higher in transit, with HSTS; plain HTTP is redirected to HTTPS. AES-256 at rest on the database, file storage and secret store, with keys managed by the providers.

Sign-in and access

Role-based access from read-only viewer to organization administrator. For privileged roles, multi-factor authentication is required to sign in to the web application, and again before privileged actions such as team, token and administration changes. API tokens are scoped, shown once and stored only as a hash.

Tenant isolation

Row-level security on the tables that hold customer data, keyed to your organization, for every request made with a signed-in user's session. Private storage buckets with per-organization folders and matching access policies. Server-side work that uses a privileged database connection relies on the application's organization and role checks.

Controls

Control domains

One line per CCCS Medium Cloud Control Profile family. The gated pack carries the full matrix with control identifiers, implementation status and available evidence.

Access control

Role-based access from read-only viewer to organization administrator. Row-level security keyed to your organization on the tables that hold customer data, application checks on privileged server-side work, and rate-limited sign-in.

Audit and accountability

Create, update, delete, export, approval, settings, access-control and multi-factor events are logged with the user, action, time and outcome. Records are kept in the Canadian database for at least one year (a floor the database enforces); your administrator can set a longer period.

Security assessment and authorization

Automated security testing during development and in the build pipeline. ProposalForge has not been formally assessed and holds no authorization to operate from a Government of Canada department. An external penetration test is planned; the Testing section below gives its target quarter.

Configuration management

The container image and the build pipeline are defined as code and version-controlled, and each release records its build identity. Security headers on application responses, and required configuration is validated at startup.

Contingency planning

Daily database backups, kept for 7 days by the database provider; point in time recovery is not enabled. Uploaded files are not included in the database backups; they are copied daily to a private, versioned backup bucket in Montreal, where replaced or deleted versions are kept for 30 days. Generated exports are not backed up. Recovery point objective for the database: 24 hours. Recovery time objective: 4 hours.

Identification and authentication

For privileged roles, multi-factor authentication is required to sign in to the web application, and again before privileged actions such as team, token and administration changes. Passwords are stored as salted hashes, sessions use short-lived access tokens, and API tokens are scoped and stored only as a hash.

Incident response

A written plan with four severity levels. Customers are notified within 72 hours of ProposalForge confirming a breach affecting their data.

Physical and environmental protection

Provided by the data-centre operators in the Montreal region, which hold SOC 2 reports and ISO 27001 certification.

Planning

The security architecture and data flows are documented in the pack and summarized in the diagram on this page.

Risk assessment

Weekly dependency update proposals, secret scanning on every push to the code repository, a dependency audit before each pack edition, and a container scan that stops a deployment on a critical finding that has a fix available.

System and services acquisition

Providers are assessed for region, certifications and the data they may receive; the result is the subprocessor list on this page. The build pipeline runs type checking, linting and a container scan before a release is deployed.

System and communications protection

TLS 1.2 or higher, with HSTS. Private document storage buckets, application secrets in a managed secret store, and AES-256 encryption at rest for the database and file storage in Canadian regions.

System and information integrity

Weekly dependency update proposals, health checks, cloud monitoring (the service's health-check, error-rate, resource and edge-throttling alerts notify the team by email), and a deployment gate that refuses a revision that fails its readiness check.

Providers

Subprocessors

The providers that store or receive data from the ProposalForge service, what each does, where it is located, and the data it receives. Updated 2026-09-25.

Customer content means content held in the application: uploaded documents, proposals and library records, including the text taken from them for AI processing. A provider marked as receiving customer content stores or processes it. Email that someone chooses to send to our company addresses is not customer content in this sense; the list shows where that email is held.

ProviderServiceLocationPurposeData categoriesAssurance
Supabase, Inc.
Receives customer content
Managed PostgreSQL database, authentication and file storageMontreal, Canada (AWS ca-central-1). Supabase serves its API through Cloudflare's network, its own provider.Application database, user accounts and sessions, private storage for uploaded documents and generated exports, and the audit log
  • Account data (names, email addresses, roles and sessions)
  • Customer content (application records, uploaded documents and generated exports)
  • Audit records (kept for at least one year)
SOC 2 Type II, ISO 27001
Google Cloud (Google LLC)
Receives customer content
Cloud Run, Vertex AI, Document AI, Cloud Storage, Cloud Tasks, Cloud Scheduler, Cloud Logging, Artifact Registry, Secret Manager, and the HTTPS load balancer with Cloud CDNMontreal, Canada (northamerica-northeast1). Application logs written before 25 September 2026 were held in a global Google Cloud location and are deleted by 25 October 2026. Not all Secret Manager secrets are region-restricted. Requests enter through Google's global HTTPS load balancer, where TLS ends at the edge location nearest the user, and Cloud CDN keeps copies of public pages at Google's edge locations.Application runtime, AI processing, document text extraction and its temporary staging, the daily backup copy of uploaded files, background jobs, application logs, container images and API credentials
  • Customer content during processing (AI prompts and responses, and text extraction from uploaded solicitation documents)
  • Solicitation documents staged for text extraction (deleted within one day)
  • Backup copies of uploaded files (copied daily; replaced or deleted versions kept for 30 days from the next daily run; files in a large deletion held back by a safety check are kept until an operator removes them, then for 30 days, as for any other deletion)
  • Application logs kept for 30 days (can include user identifiers, record titles, file names and excerpts of AI output of up to 1,000 characters)
  • API credentials and connection strings (no customer content)
SOC 2, ISO 27001, ISO 27017, ISO 27018
Resend (Plus Five Five, Inc.)
No customer content
Email deliveryUnited StatesSends application email: invitations, reminders, notifications, digests and account notices
  • Recipient email addresses
  • Fixed subject lines (some with a short ticket or request reference) and fixed message wording, with a link back to the application
  • Reply-to address on staff notifications about website enquiries, sign-ups, support tickets and evidence pack requests (the email address of the person who wrote in, signed up or made the request)
SOC 2 Type II
Google Workspace (Google LLC)
No customer content
Company emailUnited States (global infrastructure)Hosts ProposalForge's own mailboxes, including the contact, security and support escalation addresses
  • Messages that customers, prospects and security researchers send to our company email addresses (contact, security and support escalation; they may include any information the sender chooses to share)
  • Staff notifications from the application (fixed wording and links; those about website enquiries, sign-ups, support tickets and evidence pack requests also carry, as the reply-to, the email address of the person who wrote in, signed up or made the request)
SOC 2, ISO 27001, ISO 27017, ISO 27018
Stripe, Inc.
No customer content
Subscription billing and payment processingUnited States (global infrastructure)Plan subscriptions, invoices and card payments
  • Billing contact email address and name
  • Organization identifier
  • Subscription and invoice details
  • Card details with the billing address and any tax number (entered on Stripe's own pages)
PCI Service Provider Level 1, SOC 2 Type II
Upstash, Inc.
No customer content
Managed RedisCanada, Germany and the United States (a global database with replicas in AWS ca-central-1, eu-central-1 and us-east-2)Rate limiting and a cache of public open-government data and rendered public pages of the website
  • Rate-limit counters (keyed by IP address, user identifier or a hashed email address)
  • Rate-limit usage records (the same identifiers)
  • Cached public open-government data and rendered public pages of the website
None listed
Google Analytics and Google Ads (Google LLC)
No customer content
Marketing site analytics and advertising measurementUnited StatesPage views, interactions and conversions on the public pages, including the sign-in, sign-up and password pages. The tags are not loaded when a signed-in application page is opened directly, and measurement is switched off inside the application.
  • Public page URLs
  • Events (page views, interactions and conversions)
  • Identifiers the tags collect (browser, device and cookie)
None listed
Cal.com, Inc.
No customer content
Demo booking calendar, embedded on the public demo pageUnited StatesLets a visitor book a product demo
  • Booking details a visitor enters (name, email address and any notes)
  • Chosen meeting time
  • IP address and browser details of a visitor who opens the calendar
SOC 2 Type II, ISO 27001
Architecture

Data flows

Where a request goes inside the Canadian regions in Montreal, and what is sent to providers outside them.

ProposalForge data flows and the Canadian boundaryInside the thick line labelled "Canada, Montreal regions", the Canadian regions in Montreal. Google Cloud, northamerica-northeast1: Cloud Tasks and Cloud Scheduler (background jobs); Artifact Registry (container images); Cloud Run (application runtime); Vertex AI (AI processing); Document AI (document text extraction); Cloud Storage (extraction staging; daily file copies); Cloud Logging (logs, kept 30 days). Supabase on AWS, ca-central-1: File storage (private buckets); PostgreSQL and Auth (records, accounts, sessions, audit log). Outside the line, not a provider: Browser (customer or visitor). Outside the Canadian regions: Google Analytics and Google Ads (United States); Cal.com (United States); Google Workspace (company mailboxes United States (global infrastructure)); Resend (United States); Upstash Redis (replicas in Canada, Germany, United States); Stripe (United States (global infrastructure)). Solid arrows. Browser to Cloud Run: HTTPS, TLS 1.2 or higher, with HSTS, through Google's global load balancer; Cloud CDN caches public pages. Browser to PostgreSQL and Auth: sign-in, and some reads and writes, under row-level security. Browser to File storage: some uploads, downloads and deletions; signed links expire within an hour. Cloud Run to File storage: uploads and exports. Cloud Run to PostgreSQL and Auth: reads and writes, session checks. Cloud Run to Vertex AI: prompts; returns generated text. Cloud Run to Document AI: solicitation documents. Cloud Run to Cloud Storage: solicitation copies for batch extraction; daily copies of uploaded files. Cloud Run to Cloud Logging: logs. Document AI to Cloud Storage: batch jobs. Dashed arrows, data sent to a provider outside the Canadian regions. Browser to Google Analytics and Google Ads: public pages only: page views and interactions, with browser, device and cookie identifiers. Browser to Cal.com: demo booking: name, email, notes, meeting time, IP address and browser. Browser to Stripe: card details, billing address, any tax number, entered on Stripe's own pages. Cloud Run to Stripe: billing email and name, organization id, subscription and invoice details. Cloud Run to Upstash Redis: rate-limit counters, keyed by IP address, user id or hashed email; cached public data. Cloud Run to Resend: addresses, fixed text and a link. Resend to Google Workspace: staff notifications with reply-to address.Canada, Montreal regionsGoogle Cloud, northamerica-northeast1Supabase on AWS,ca-central-1Outside the Canadian regionsOutside the Canadian regionsHTTPS, TLS 1.2 or higher,with HSTS, through Google'sglobal load balancer; CloudCDN caches public pagessign-in, and some readsand writes, underrow-level securitysome uploads, downloadsand deletions; signed linksexpire within an houruploads and exportsreads and writes,session checksprompts; returnsgenerated textsolicitationdocumentssolicitation copies forbatch extraction; dailycopies of uploaded fileslogsbatchjobspublic pages only: page views andinteractions, with browser, deviceand cookie identifiersdemo booking: name, email,notes, meeting time, IPaddress and browsercard details, billingaddress, any taxnumber, entered onStripe's own pagesbilling email and name,organization id,subscription andinvoice detailsrate-limit counters,keyed by IP address,user id or hashed email;cached public dataaddresses, fixed textand a linkstaff notificationswith reply-to addressBrowsercustomer or visitorFile storageprivate bucketsPostgreSQL and Authrecords, accounts,sessions, audit logCloud Tasks andCloud Schedulerbackground jobsArtifactRegistrycontainer imagesCloud Runapplication runtimeVertex AIAI processingDocument AIdocument textextractionCloud Storageextraction staging;daily file copiesCloud Logginglogs, kept 30 daysGoogle Analyticsand Google AdsUnited StatesCal.comUnited StatesGoogle Workspacecompany mailboxesUnited States(global infrastructure)ResendUnited StatesUpstash Redisreplicas in Canada,Germany, United StatesStripeUnited States(global infrastructure)Dashed arrow: data sentto a provider outsidethe Canadian regions
The thick copper line labelled "Canada, Montreal regions" marks the Canadian regions in Montreal. Inside it, the application on Cloud Run reads and writes the Supabase database and file storage, and sends prompts to Vertex AI and solicitation documents to Document AI. The browser reaches Cloud Run through Google's global load balancer, and goes directly to Supabase for sign-in, and for some reads and writes of records and files with the user's session, under row-level security and the storage access policies; a file link signed by the server carries its own token instead, and expires within an hour. Supabase serves its API through Cloudflare's network, its own provider. Dashed arrows go to providers outside the Canadian regions; the subprocessor list sets out what each one receives. Downloads a customer starts, and scheduled delivery to the customer's own Microsoft 365 tenant, go where the customer directs. Microsoft is not a ProposalForge subprocessor.
Resilience

Resilience

Daily database backups, kept for 7 days and held by the database provider. Point in time recovery is not enabled. Uploaded files are not included in the database backups; they are copied daily to a private, versioned backup bucket in Montreal, where replaced or deleted versions are kept for 30 days. Generated exports are not backed up; they can be produced again.

Recovery point objective for the database: 24 hours. Recovery time objective: 4 hours.

Last database restore drill: 2026-09-25, restored and verified in 7 minutes (within the 4-hour target).

Assurance

Testing

Dependency updates
Dependabot, weekly: pull requests proposing newer versions of the application's packages, the container base image and the continuous-integration actions.
Secret scanning
gitleaks on every push to the hosted code repository, on every branch.
Dependency audit
npm audit of production dependencies before every pack edition; each high or critical finding is fixed or recorded as an exception with a reason and an expiry date.
Container scanning
Trivy in the build pipeline; a critical vulnerability that has a published fix stops the deployment unless it has a documented, expiring exception.
Web application scan
OWASP ZAP baseline before every pack edition, unauthenticated and as a signed-in read-only user.

Most recent unauthenticated web scan: 2026-09-25. OWASP ZAP baseline: 1 high (found on review to be a false positive), 6 medium, 10 low, 10 informational. Most recent authenticated (read-only user) web scan: 2026-09-25. OWASP ZAP baseline: 1 high (found on review to be a false positive), 7 medium, 11 low, 9 informational.

ProposalForge has not yet had an external penetration test. One by an independent firm is targeted for Q4 2027, and the executive summary of its report will be included in the first pack edition that follows the test.

Attestation

SOC 2

ProposalForge does not hold a SOC 2 report of its own. Its principal infrastructure providers (Google Cloud and Supabase) hold SOC 2 reports. Each publishes its compliance information on its own site: Google Cloud at cloud.google.com/compliance and Supabase at supabase.com/security, both linked in the subprocessor list. A first-party SOC 2 report will be pursued when customers require it.

Statement dated 2026-09-25.

Disclosure

Vulnerability disclosure policy

Scope

proposalforge.io and its subdomains, the ProposalForge web application and its API.

Out of scope

  • Our providers' own infrastructure (report those to the provider).
  • Denial of service, and automated scanning that degrades the service for others.
  • Social engineering of our staff or our customers, and physical attacks.
  • Findings that require a compromised device or account.

Safe harbour

If you follow this policy, act in good faith, avoid privacy violations and service disruption, do not access or change data that is not yours, and give us a reasonable time to fix an issue before you disclose it, we will not pursue legal action against you and we will work with you.

How to report

Email security@proposalforge.io with the steps to reproduce, the affected URL or endpoint, and the impact you observed. Our security.txt is at /.well-known/security.txt.

security@proposalforge.io

What to expect

  • Acknowledgement within 3 business days.
  • A first assessment within 10 business days.
  • Fixes for confirmed high-severity issues targeted within 30 days, and we tell you when the fix ships.
  • Credit on request. There is no paid bounty program at this time.
Evidence

Request the full evidence pack

One PDF: the control matrix with implementation status, the architecture and data flows, the incident response summary, the backup and recovery summary, the security testing summary, and the subprocessor list. A person reviews each request, and we aim to do so within two business days. An approved requester receives a download link that is valid for seven days and can be used once.

All fields are required, including the acknowledgement.

Looking for the overview? See the compliance page.

Security review

Questions for your security review?

We can walk your reviewer through the controls, the data flows and the evidence.

✓ Customer content in Canadian regions (Montreal)✓ Protected B aligned, not formally assessed✓ Subprocessors and data flows on this page
Trust and Security | ProposalForge