Requirements you can verify
ECSS Copilot reads a space-project requirements document and flags every line that can’t be verified as written, with a fix for each.
Open source, early prototype (v0.1)
1 finding
Write your own requirement, or pick a sample. Ten of the 18 rules run right here, and nothing you type leaves the page. Samples come from LARK-1, a fictional mission.
The whole review on one page
Load a specification and see how many requirements it holds, where the problems are and how each one could be verified.
LARK-1 is a fictional 3U CubeSat written with deliberate flaws. It ships with the code as a sample.
How it works
LARK-EPS-020
The EPS shall provide adequate power to all subsystems in all modes.
It arrives as written.
LARK-EPS-020 75
The EPS shall provide adequate power to all subsystems in all modes.
High RQ-03 Vague term
Rules flag what they can check.
LARK-EPS-020 Draft
The EPS shall provide at least [TBD: value, W] to each subsystem in each operating mode.
AI drafts a fix, if you turn it on.
LARK-EPS-020 Accepted
The EPS shall provide at least 45 W to each subsystem in each operating mode.
An engineer signs it off.
What it does
Reads what you already have
DOCX tables and paragraphs, PDFs with a text layer, CSV, XLSX, ReqIF and pasted text. Existing IDs such as SYS-PWR-010 are kept, and requirements without one get an AUTO ID.
Load requirements
- DOCX
- CSV
- XLSX
- ReqIF
- Pasted text
A finding and a fix
Each finding names the rule, its severity and a suggested rewrite. Each requirement gets a score from 0 to 100, so the worst lines rise to the top.

A draft verification matrix
A primary method for every requirement (test, analysis, inspection or review of design) with a rationale, exported to Excel with a column for the reviewer’s decision.

AI only when you ask
An optional pass sends flagged requirements, and only those, to any OpenAI-compatible endpoint, including a local model. Unknown values stay as marked placeholders instead of invented numbers.

Eighteen rules
Fifteen look at each requirement and three at the document as a whole. They paraphrase well-known requirement-writing principles. No ECSS text is included.
- RQ-01 Missing “shall”Runs on this page High
- RQ-02 More than one “shall” in a statementRuns on this page High
- RQ-03 Vague or subjective termRuns on this page High or Low
- RQ-04 Open item: TBD, TBC, TBSRuns on this page High
- RQ-05 Escape clause, such as “if possible”Runs on this page High
- RQ-06 Unverifiable absolute, such as “never”Runs on this page High
- RQ-07 Weak or mixed modal verbRuns on this page Medium
- RQ-08 Missing subject or agentless passive High or Low
- RQ-09 “and/or” and ambiguous slashes High or Low
- RQ-10 Number without a unitRuns on this page Medium
- RQ-11 Open-ended listRuns on this page Medium
- RQ-12 Negative requirementRuns on this page Low
- RQ-13 Statement over 45 words Low
- RQ-14 Ambiguous pronoun Low
- RQ-15 Design solution stated as a need Low
- DOC-01 Duplicate requirement ID High
- DOC-02 Duplicate requirement text Medium
- DOC-03 Missing requirement ID Medium
Run it on your machine
You need Python 3.10 or later, or Docker. Without an LLM configured, nothing leaves your computer.
There is no sign-in, so keep it on localhost or behind a proxy that asks for one. Please don’t upload export-controlled, classified or confidential data you aren’t allowed to share.
Python
git clone https://github.com/intelligent-design-llc/ecss-copilot.git
cd ecss-copilot
./run.sh Docker
docker build -t ecss-copilot .
docker run --rm -p 127.0.0.1:8000:8000 ecss-copilot Then open http://127.0.0.1:8000 and try the LARK-1 sample in samples/.
Status and limits
Every result is a draft for engineering review. A person signs it off.
Today
- Open source under Apache-2.0
- Early prototype, version 0.1. Expect some false positives
- Heuristic rules, English only
- PDFs need a text layer, there is no OCR
- Stateless: uploads are processed in memory and not stored
- No sign-in, meant for local or single-user use
Next
- v0.2: a compliance matrix against a standard you supply, with clause citations
- ReqIF export and traceability checks
- A self-hosted image with a local open-weights model
- A documented EU-hosted LLM option
Try it with your team
Tell us what you work on and how you write requirements today. We’ll get back to you about early access and what comes next.