Risk Assessment Policy
Bridgit Platform (askbridgit.ai)
Version 2.0 · Effective: October 16, 2026 · Next Review: October 16, 2027
1. Purpose and Scope
This policy sets out how Core Innovation Corp. (operating as Bridgit, askbridgit.ai) ("Bridgit") identifies, assesses, treats and monitors information security and privacy risks to the Bridgit platform, its infrastructure, and the data of its users and customer organizations. It also publishes Bridgit's current risk register (section 8), so that customers can see known gaps and how each is being handled.
Applies to: everyone with access to Bridgit production systems, source code or cloud infrastructure.
In scope: the Bridgit application; its Google Cloud infrastructure (Cloud Run, Cloud SQL, Cloud Storage, Secret Manager, Cloud Logging); third-party services that receive platform data (listed in the Vendor Management Policy); source code and the build pipeline; and all data processed through the platform.
Framework alignment: aligned with ISO 27001 (A.8.1, A.14, A.17), SOC 2 (CC3, CC5, CC8, CC9) and GDPR Article 35 principles. Bridgit is not certified to ISO 27001 or SOC 2.
2. Risk Management Framework
Method: an asset-based approach, scaled to a small team running on managed cloud infrastructure.
Lifecycle:
- Identify threats and weaknesses (section 5)
- Analyse each risk using a 5x5 likelihood × impact matrix (section 6)
- Evaluate it against the risk appetite (section 3)
- Treat it by accepting, mitigating, transferring or avoiding (section 7)
- Monitor: re-score in the register at each review, and after significant changes or incidents
Risk ownership: Matthew Bromwich, CEO and Privacy Officer, owns all risks and makes treatment decisions.
3. Risk Appetite
- Data security and privacy: very low tolerance for cross-organization data exposure, unauthorized access to personal data, or credential leakage. Known risks in this category are prioritized for treatment, and their status is tracked in the register (section 8); where remediation takes time, the register says so (for example R11: remediation in progress).
- Operational: moderate tolerance. Short scaling delays and non-critical feature outages under 4 hours are acceptable. Data loss and database corruption are not acceptable, and prolonged outages are treated as high impact.
- Third party: moderate tolerance. Transient AI-provider outages are accepted. A data breach at a provider is handled as a P1 or P2 incident depending on scope (see the Incident Response Policy).
- Compliance: zero tolerance for known breaches of PIPEDA, GDPR or customer contractual obligations.
Accepting a risk above the appetite requires a documented justification in the register, and the risk is reviewed again at the next review.
4. Asset Inventory and Classification
| Class | Assets |
|---|---|
| Critical | Cloud SQL production database (customer content, user profiles, audit logs); Google Secret Manager; database backups and pre-release exports; source code repository |
| High | Cloud Run services (API and frontend); stored OAuth and integration tokens; AI provider and Stripe API keys; Cloud Storage uploads bucket |
| Medium | AI request metadata (time, user, organization, AI provider and model, token counts, cost, IP address and browser; not the text of prompts or responses); application and access logs |
| Low | Frontend static assets; staging environment; documentation |
Location: the production database, file storage, application services and logs are in Google Cloud Montréal (northamerica-northeast1). Automated database backups are stored in the Montréal region.
External services receiving platform data: Google Cloud; Anthropic (AI model); OpenAI (document embeddings and fallback model); Tavily (web search); NCBI/PubMed (literature search); public research and data services (AI-generated search query text only); Google (Gmail API and OAuth sign-in); Google Workspace (only when a user connects their own account); Stripe (billing); Apify (public social-media data for one internal dashboard); GitHub (source code and CI/CD, no customer data). Purpose, data and location for each are in the Vendor Management Policy.
Ownership: Matthew Bromwich, CEO and Privacy Officer, maintains this inventory and approves access to Critical and High assets.
5. Risk Identification
Sources:
- the internal security audit (most recently November 2025)
- the security-focused review recorded for each feature release
- code review and automated tests
- incident reports, user reports ("Report a Problem" form) and reports to info@askbridgit.ai
- Google Cloud security bulletins and vendor security disclosures
Platform-specific threat categories:
- cross-organization data exposure
- credential or API-key exposure
- disclosure through AI providers
- authentication bypass
- privilege escalation
- supply-chain compromise of software dependencies
- cloud misconfiguration
- loss of the database
Not yet in place: automated dependency or static-analysis scanning in the build pipeline, and an independent penetration test. Both are recorded in the register (R5, R11).
6. Risk Scoring
Likelihood (1–5)
| Score | Level | Meaning |
|---|---|---|
| 1 | Very low | Less than once in 5 years |
| 2 | Low | Once in 2–5 years |
| 3 | Medium | About once a year |
| 4 | High | Several times a year |
| 5 | Very high | Expected frequently, or the condition exists today |
Impact (1–5)
| Score | Level | Meaning |
|---|---|---|
| 1 | Negligible | No data exposure, no disruption |
| 2 | Minor | Non-personal data affected, or disruption under 1 hour |
| 3 | Moderate | Small-scale personal data exposure, 1–4 hours disruption, or a possible regulator enquiry |
| 4 | Major | Multi-user data exposure, 4–24 hours disruption, notification required, or CAD 5,000–50,000 cost |
| 5 | Catastrophic | Large-scale breach, outage over 24 hours, enforcement action, or more than CAD 50,000 cost |
Score = likelihood × impact (1–25)
| Band | Score | Required action |
|---|---|---|
| Low | 1–4 | Accept and monitor |
| Medium | 5–9 | Treatment plan at the next scheduled review |
| High | 10–15 | Treatment plan within 30 days |
| Critical | 16–25 | Immediate action; escalate under the Incident Response Policy |
7. Risk Treatment
Options: accept (with documented justification and a review trigger), mitigate, transfer, or avoid.
Controls currently in place:
- Access:
- membership-based, default-deny access between organizations
- role-based permissions (admin, member, lead)
- password complexity and strength rules when a password is changed or reset and at self sign-up, with bcrypt hashing
- progressive account lockout
- rate limiting on sign-in
- optional TOTP MFA
- Encryption:
- TLS in transit A minimum of TLS 1.2 is enforced.
- Google-managed AES-256 encryption at rest
- application-level AES-256-GCM encryption of stored OAuth and integration tokens
- Infrastructure:
- private-IP database
- secrets held in Google Secret Manager
- Google Cloud IAM
- Detection: an audit log of data changes, permission changes, security events (including account lockouts, sign-ins, sign-outs and failed sign-ins, MFA changes and consent changes) and privileged access
- Process:
- per-release security review
- automated lint, unit and access-control tests before every production release
- staging before production
- a full database export before every release
- the Incident Response Policy
- Scope: the Service is not designed to hold personal health information, and customers must not enter it. There is no technical filter that enforces this.
Residual risk is re-scored with the same matrix. Residual risk in the High or Critical band requires a documented justification and a treatment plan, dated where committed.
8. Current Risk Register
Scores are residual (after current controls). L = likelihood, I = impact, S = score.
| ID | Risk | L | I | S | Treatment and status |
|---|---|---|---|---|---|
| R1 | When AI or search features are used, prompts and the relevant content are processed in the United States (Anthropic, OpenAI, Tavily, NCBI/PubMed) and may be subject to US law | 5 | 2 | 10 | Accept and disclose. Each provider's commercial / API terms apply, including no training on API data and retention as published by that provider (currently up to 30 days by default). Customers must not enter personal health information. Providers and locations are listed in the Vendor Management Policy. |
| R2 | Location of automated database backups: Automated database backups are stored in the Montréal region. Status: resolved (#399). | 5 | 2 | 10 | Resolved (#399): automated backups are now stored in Montréal; older backups held in the US expire by October 22, 2026. |
| R3 | The database runs in a single zone without high availability, and point-in-time recovery is off. A zone failure or data error could mean downtime and up to 24 hours of lost data | 2 | 4 | 8 | Mitigate in part: enabling point-in-time recovery is planned (#400). Daily backups and pre-release exports are in place. High availability: accepted for now. |
| R4 | Encryption in transit: A minimum of TLS 1.2 is enforced. Status: resolved (#401). | 2 | 3 | 6 | Resolved (#401): a minimum of TLS 1.2 is enforced at the load balancer. |
| R5 | No independent penetration test has been performed | 3 | 4 | 12 | Mitigate: a penetration test is planned (#390). Interim controls: per-release security review, the internal audit (November 2025), and automated access-control tests. |
| R6 | Signing out does not revoke the session on the server, so a stolen token stays valid until it expires (up to 7 days) | 2 | 3 | 6 | Mitigate: server-side revocation at sign-out is planned (#402). Interim: HTTPS only. |
| R7 | MFA is optional. Customer organizations cannot require it, and the platform-administrator setting is off and does not yet block sign-in by an administrator who has not enrolled | 3 | 4 | 12 | Mitigate: organization-level enforcement is under investigation (#397), and the administrator enrolment gap is being fixed (#398). Interim: password strength rules, lockout and rate limiting. |
| R8 | Record views are not audited, which limits investigation | 3 | 3 | 9 | Mitigate: sign-ins, sign-outs and failed sign-ins are now audited (#395); view logging is not planned yet. Interim: data changes and privileged access are audited. |
| R9 | Production and staging share one Google Cloud project, so a misconfiguration or compromised credential in staging could affect production | 2 | 4 | 8 | Accepted for now; reassessed at each review. Interim: separate services, databases and secrets per environment, with IAM limited to named administrators. |
| R10 | Backups are in the same Google Cloud project as production and are not held offline, so a compromise of the project could affect both | 2 | 5 | 10 | Accepted by the owner: separation is not justified for the current data volume and sensitivity (no personal health information). Controls: IAM limited to named administrators and deletion protection on the database. Reassess if the data profile changes. |
| R11 | Dependency vulnerabilities: there is no automated dependency scanning in the pipeline, and open items include a scheduled rotation of service credentials (no critical advisories remain; the remaining high advisories are in transitive dependencies of test and build tooling and one machine-learning library, and need major-version upgrades) | 3 | 4 | 12 | Mitigate: rotate credentials and add automated dependency scanning. Status: remediation in progress. |
| R12 | Restore has not been tested, and there is no committed recovery time objective | 3 | 4 | 12 | Mitigate: carry out and document a restore test. Bridgit has not tested or committed to a recovery time objective. |
| R13 | No automated alerting, uptime monitoring or SIEM, so incidents may be detected late | 3 | 3 | 9 | Accepted for now; reassessed at each review. Interim: application and access logs in Cloud Logging, the audit log, and user reports. |
| R14 | The deployment pipeline authenticates to Google Cloud with a long-lived service-account key | 2 | 4 | 8 | Accepted for now; reassessed at each review. Interim: the key is stored as an encrypted CI secret in a private repository. |
| R15 | Bridgit system administrators can access customer organization data by default | 2 | 4 | 8 | Mitigate (customer control): organization administrators can turn on "Require explicit access", which blocks this access at the organization level; extending the block to every access path is being verified. Emergency access is then time-limited (7 days), audited, and notified to organization administrators by email. |
| R16 | AI output can be inaccurate, invented (including citations) or biased, and Bridgit has not evaluated its drafting features for accuracy or bias. Output from on-submission AI fields is saved without a preview step | 3 | 3 | 9 | Mitigate in part: AI is optional and user-started; most output is a draft the user applies or discards; the Terms require users to verify facts and references (section 6.3); each organization decides whether its templates use on-submission AI. Reassessed at each review. |
| R17 | The AI provider can update the version behind a model name without a change by Bridgit, so output behaviour can change without notice | 3 | 2 | 6 | Accept and monitor: retired models are replaced only within the same family; changes of model family follow change management; the model used is recorded for every request; users report problems through Report a Problem. |
| R18 | A user could enter personal health information into an AI feature, and there is no technical filter to stop it | 2 | 4 | 8 | Mitigate in part: the no-PHI rule in the Terms (section 6.5) and Privacy Policy, onboarding, and the "No Patient Health Data" notice on the home page. Handled under the Incident Response Policy if it occurs. Residual risk accepted. |
9. Fraud Risk
Relevant fraud risks: misuse of AI-provider API keys (usage-based charges), unauthorized export of production data, and creation of unauthorized administrator accounts.
Mitigating controls:
- code changes attributed in git
- production releases through GitHub Actions
- Google Cloud IAM limiting access to Secret Manager and the database
- AI request metadata (time, user, organization, AI provider and model, token counts, cost, IP address and browser; not the text of prompts or responses) recorded for every request
- personal-data exports and permission changes recorded in the audit log (spreadsheet exports of submissions and file downloads are not yet recorded)
- payments handled by Stripe, so Bridgit does not hold card data
There is no formal whistleblower mechanism at the current scale. Concerns can be raised with info@askbridgit.ai.
10. Change Management
- Changes are developed locally, merged through git and deployed to staging through GitHub Actions.
- Production releases are made from the main branch through GitHub Actions.
- Before each production release, the pipeline runs lint checks, unit tests and access-control tests, checks that applied database migrations have not been changed, and takes a full database export. The release is blocked if the export fails.
- Database schema changes are made only through new, versioned migrations.
- An option to skip tests exists for emergency releases only.
- Releases switch to the new version without downtime, and the previous version can be restored quickly.
11. Business Continuity and Disaster Recovery
| Component | Recovery approach | RPO | RTO |
|---|---|---|---|
| Application (Cloud Run) | Stateless; redeploy or restore a previous version | None (stateless) | Minutes (version rollback) |
| Database (Cloud SQL) | Restore from the latest daily backup or pre-release export | Up to 24 hours | Not tested or committed |
| Secrets | Rotate in Secret Manager and redeploy if compromise is suspected | n/a | n/a |
A full database restore has not yet been tested (register R12). Bridgit has not tested or committed to a recovery time objective. Automated database backups are stored in the Montréal region. Full database exports taken before each production release are stored in Montréal and are kept with no automatic expiry today.
12. Security in Development
- Requirements: security and privacy requirements are considered in planning for features that involve user data or external services.
- Design: access isolation is reviewed for new data paths.
- Implementation: secrets go in Secret Manager; paid SDKs are called through a single shared provider; lint checks are enforced.
- Testing: automated API and access-control tests, nightly end-to-end tests, and staging before production.
- Release: a security-focused review for each feature release, and a hard-gated database export.
- Environments: local, staging and production, each with its own secrets. Staging shares the production Google Cloud project (register R9).
13. Privacy Impact Assessment
A privacy impact assessment (DPIA/PIA) is required for:
- new AI or other integrations that send user content to an external provider
- new processing purposes
- significant changes to how customer content is queried, exported or shared
- new transfers of personal data outside Canada
- any automated decision-making with significant effects on individuals
Integrations currently in scope: Anthropic and OpenAI (AI), Tavily and NCBI/PubMed (search), Google (Gmail API and OAuth), and Stripe (billing).
Process: screening, data-flow mapping, necessity assessment, risk identification and mitigation. The assessment is documented by the Privacy Officer and reviewed when there is a material change.
14. Policy Administration
| Item | Value |
|---|---|
| Version | 2.0 (supersedes 1.0, April 29, 2026) |
| Effective date | October 16, 2026 |
| Next review | October 16, 2027 |
| Owner | Matthew Bromwich, CEO and Privacy Officer |
| Review frequency | Annually, after any P1/P2 incident, or after a significant infrastructure change. The register (section 8) is updated whenever a listed item changes status. |
| Approved by | Matthew Bromwich, CEO and Privacy Officer, October 16, 2026 |
| Contact | info@askbridgit.ai (security reports and Privacy Officer) |