# Launch Gate > Paste one proposed launch and run one of three lanes over it: decide which regulations, frameworks > and internal approvals apply, classify the exposure on a severity-by-likelihood grid with an explicit > escalation call, or produce the audit-readiness register of requirement, control, evidence, owner and > status. https://launch-gate.skillsafe.ai/ ## What it is for One person holding one proposed launch, in one sitting. The launch can be a product feature, a marketing programme, a data-sharing arrangement, a new vendor, or a market entry. The three lanes are the three questions that actually get asked before something ships: what applies, how bad is it, and what evidence has to exist. **It is not legal advice and not a clearance.** Launch Gate produces a working analysis for a named human - privacy counsel, security, or the accountable owner - to review. The posture field is a recommendation to that approver, never a decision. It states no fine amount, no filing fee and no statutory deadline in days that the input did not supply, because a stale number is worse than none. **It never asserts that a review exists.** If the input does not say a DPIA, a penetration test, a processing agreement or an approval is in place, the register records it as `missing`. Absence in the record is absence. ## The three lanes Every lane takes the same primary input - one launch brief plus one facts block - and returns the same outer envelope, so the export, history and reconciliation paths are identical across them. Only the `body` differs. | `task` | What it returns | | --- | --- | | `applicability` | The jurisdictions, a framework table with an applies / likely / no call per regime plus the basis and why it bites here, the obligations in scope with their provisions, the frameworks positively **ruled out** with the reason, a data map of category to purpose to candidate lawful basis to retention, the approval gates with a required / likely / no call, the notice changes, and an explicit statement of what the analysis does not cover. No file. | | `risk` | A severity-by-likelihood matrix with exposure, mitigation, residual band, owner role and an escalate flag per row; an escalation object naming the level (`owner-decides`, `legal-review`, `senior-counsel`, `outside-counsel`, `executive-committee`), the criterion that was met and the rows that drove it; the realistic worst case; the risks proposed for acceptance with the condition that makes the acceptance valid; and an appetite note. Emits a short Markdown memo for the escalation target. | | `readiness` | The audit-readiness register - one row per requirement with framework, provision, control, evidence artifact, owner role, status and how an auditor would test it - plus the gaps with a first step and an owner, the audit pack and where each item lives, the ongoing cadence, and a readiness score. Emits the register as a Markdown table. | ## The pipeline The lanes are ordered the way a person meets them: `applicability` -> `risk` -> `readiness` - scope, decide, produce. The handoff is a real one rather than a copy-paste chore: a button on each result builds a digest of that lane's frameworks, findings, approvals and obligations and sends it as the `carried` field on the next lane's run, so the later lane works inside the scope the earlier one drew instead of re-deriving it. The digest is visible in the UI and can be dropped. Driving the app over the API, you build the same string yourself. ## Input fields | Field | Meaning | | --- | --- | | `task` | `applicability`, `risk` or `readiness`. Absent or unrecognised, the model picks the closest lane and sets `lane_inferred: true` rather than blending two contracts. | | `brief` | The launch brief - free prose. This is the primary input and is required. | | `facts_text` | The facts block, one `key: value` per line. Authoritative where it conflicts with the brief. | | `context` | Optional. Constraints, what has already been reviewed, internal appetite, what counsel has said. | | `carried` | Optional. The previous lane's digest, present when a handoff button was used. | | `prescan` | The deterministic scan's output: `signals`, `flags` and `gates`. | | `clip_note` | Present only when the paste was too long and was clipped. The model is told not to reason about material it was not sent. | The run body **is the input object itself** - it is not wrapped in an `input` key. There is no `X-App-Slug` header; the slug appears only in the `POST /v1/app-api/guest` body. ## The facts block A real `key: value` parser, not a keyword search. Keys are normalised and aliased, so `Jurisdiction`, `regions`, `markets` and `countries` all land on the same field. Indented lines and bullet lines continue the key above them. `#` and `//` start a comment. A duplicate key is joined rather than overwritten, because a second `processors:` line is nearly always a second batch of processors. A line that is neither is reported rather than silently dropped. Keys the scan reads: `initiative`, `owner`, `launch`, `regions`, `data`, `purpose`, `processors`, `transfers`, `automated-decision`, `retention`, `frameworks`, `security-review`, `dpa`, `basis`, `dpia`, `privacy-notice`. Anything else is passed to the model but not scanned. Three behaviours worth knowing because they are what a keyword search gets wrong: - `transfers: none` switches the cross-border signal **off** even when a stray sentence in the brief says "hosted in the US". A declared fact beats a detected one, in both directions. - `dpa: all signed` is read as a blanket statement covering every processor. `dpa: Segment signed, SendGrid signed, Clearbase unknown` is read **per vendor by position**, so the one vendor with no agreement is not swept up by a neighbouring "signed". - A negation immediately before a term suppresses it. "There is no scoring, no AI and no automated approval anywhere in the flow" switches three signals off, not on. - `launch:` accepts absolute dates, month names, quarters and the relative forms people actually write - "in about four weeks", "end of September", "Q3 2026" - because a launch date written as prose is still a launch date, and treating it as absent switches the whole runway check off. ## The free lane The scan runs entirely in the browser, before sign-in, with no model and no credits. It parses the facts block, reads the brief for jurisdictions and data categories the facts block does not declare, places the frameworks by rule from the declared jurisdictions plus the named standards plus the behaviour described, derives the approval gates, reads the processor agreements per vendor, computes the days to the declared launch date against the gates still open, and raises around fifty deterministic flags. A framework enters the set only through a jurisdiction, a name the user wrote, or a signal specific to it - never because a topic is adjacent. Every flag carries the rule that raised it and the sentence in the user's own text that triggered it. ## Reconciliation The scan exists to hold the paid lane accountable. Every flag sent with a run must come back in `coverage_check` with a status of `confirmed`, `set-aside` or `superseded`, one entry per flag id. A flag the model skipped is rendered as "the model did not account for this flag" and stays open. The readiness lane's score is recomputed from its own register rows rather than trusted, and a disagreement between the two is shown rather than hidden. ## Output envelope Every lane returns one JSON object with the same outer shape: `lane`, `lane_inferred`, `initiative`, `title`, `posture`, `verdict`, `summary`, `jurisdictions`, `frameworks`, `assumptions`, `open_questions`, `findings`, `coverage_check`, `approvals`, `artifact`, `next_lane`, `body`. `posture` is one of `clear-to-ship`, `conditions-first` or `blocked`. Findings ids run `LG-001`, `LG-002`, ... sorted most serious first, each with a severity in `critical | high | medium | low`, an area in `privacy | security | consumer-protection | marketing | ai-governance | accessibility | records | contracts | sector-specific | cross-border | internal-approval`, the requirement with its provision, one sentence of evidence from the input, why it bites, the next action and an owner role. Every array is present even when empty; an empty array is a real answer and reads as "none". ## Exports A gate memo in plain text for the approval thread, the whole analysis as Markdown, the raw JSON, and a per-lane CSV - the obligations, the risk matrix or the register, depending on which lane produced it. The free scan has its own copy and download, which cost nothing and need no account. ## Storage Runs are saved to the user's SkillSafe account in a declared `gateruns` collection and mirrored in the browser for instant paint. Semantic search over past launches is available through the collection's vector index, on `title`, `initiative` and `verdict`. Drafts and the history mirror are scoped to the signed-in subject on the device, and sign-out purges this device's copy. ## Model and cost Model alias `gpt-terra`, publisher markup 1000 bps. A run is metered and needs an account. The hold differs per lane because the prompts and output caps differ, so the reservation shown is re-estimated on every lane switch. `POST /v1/app-api/estimate` is free and returns the hold, the minimum and the resolved model. ## Sources A derived work built on three agent skills published under [@anthropics/knowledge-work-plugins](https://skillsafe.ai/skill/@anthropics/knowledge-work-plugins/): - [@anthropics/compliance-check](https://skillsafe.ai/skill/@anthropics/compliance-check/) - run a compliance check on a proposed action, product feature or business initiative, surfacing applicable regulations, required approvals and risk areas. - [@anthropics/legal-risk-assessment](https://skillsafe.ai/skill/@anthropics/legal-risk-assessment/) - assess and classify legal risk on a severity-by-likelihood framework with escalation criteria. - [@anthropics/compliance-tracking](https://skillsafe.ai/skill/@anthropics/compliance-tracking/) - track compliance requirements and audit readiness across SOC 2, ISO 27001 and GDPR. Not affiliated with those skills' authors, or with any regulator, standards body or certification scheme named anywhere in the app. ## Developer surface - [/api.html](https://launch-gate.skillsafe.ai/api.html) - the full API tutorial, tabbed across cURL, Python, JavaScript, Go, Java, Ruby, PHP and C#, with one worked example per lane. - [/tokens.html](https://launch-gate.skillsafe.ai/tokens.html) - token management, so nobody has to open DevTools to find their bearer token.