{"schema_version":"1","site":"https://decosa.ai","id":"label-consistency-check","num":"80","name":"Label consistency across PI, SmPC, CCDS and carton","tool_name":"Compare safety sections across labels","short":"Label consistency","blurb":"For regulatory affairs and labelling teams. Give it the label documents for one medicine: the company core data sheet (CCDS), the US Prescribing Information, the EU SmPC and package leaflet in several languages, and the carton text or a scan of the carton. It aligns the sections (indications, dosing, contraindications, warnings, adverse reactions, storage, strengths) and flags every difference with a quote from each document: a dose, interval or strength that disagrees, a warning or contraindication that is missing, a different storage temperature, a translation that dropped a negation or changed a number, an SmPC heading that is not the QRD template's. Each flag is triaged as a likely error, likely deliberate (a regional convention such as US Fahrenheit storage wording, or a line in your deviation log) or unclear. A labelling QC aid with a signed record; regulatory affairs decides.","status":"live","labels":{"industry":["healthcare","compliance-trust"],"job":["review","attest"],"input":["text","files"],"deploy":["hosted","selfhost"],"status":"live","output":["data","record"],"data":["confidential"],"hardware":"gpu-96","licence":"permissive"},"industries":["healthcare","compliance-trust"],"runs_in":["hosted","selfhost"],"part_of":[],"built_from":["language-pack","document-reader","signed-record"],"models":"Qwen3.8-27B (section comparison with quotes, triage, meaning judgment) · Hy-MT2-7B (back-translation, language-pack block) · Docling layout + PaddleOCR-VL (scanned cartons, document reader)","where":"Self-host for unapproved labelling; the hosted demo takes invented or public labels only","hardware":"1x RTX PRO 6000 (96 GB): Qwen3.8-27B NVFP4 plus Hy-MT2-7B (about 18 GB) and the document reader (about 6 GB); sections, number checks and the record run on CPU","final_artifact":"The flags as CSV (each with its section, quotes from both documents, severity and triage) and a signed decosa.record.v1 of the document hashes, flags and receipt ids.","self_host_first":true,"verification":{"receipt_coverage":"full","summary":"Receipt per model call; every quote found in its document at a character offset; numbers with units compared in code; signed hash-chained record of the document hashes, flags and triage","manual_qa":{"hosted":{"date":"2026-09-28","result":"pass","p50_ms":2309,"p95_ms":24267,"runs":6,"receipts_per_run":3,"cost_per_run_usd":0.001104},"selfhost":{"date":"2026-09-27","result":"pass","method":"fresh clone into a clean directory, api image from docker/api/Dockerfile, compose with a named volume, direct route to the local Qwen3.8-27B, language pack and document reader, local signing; torn down after","notes":"The rehearsal bundle passed 7/7 in 13.8 s; every receipt signed. The language pack and reader were the running services, not built from the compose file here."},"known_limits":["Hosted numbers are from 6 production smoke runs after the merge: 3 on 27-28 Sep under load (18.2, 21.0, 24.3 s) and 3 on a quiet gateway on 28 Sep (2.1, 2.3, 2.3 s). Cost is the median at list price, model calls included (range $0.0011 to $0.0011).","Measured on synthetic label sets written by the same author as the prompts; not on a real company's labels or against a labelling reviewer's findings.","Full seven-document sets take minutes on the shared gateway (415 s measured); the Watch replay shows a recorded real run.","QRD headings are checked in English, German and French only; other EU languages get the number lock and meaning check.","Interactions, pregnancy sections, pharmacology and artwork layout are not compared."],"nightly_covers":null},"nightly":"https://api.decosa.ai/verify/status"},"eval_summary":{"metrics":[{"name":"Planted drifts caught","value":"31 / 31","unit":null,"n":31,"split":"test","note":"held-out invented medicine: 8 numbers, 5 missing warnings, 4 missing contraindications, 5 storage, 9 translations (German, French); all triaged likely error"},{"name":"Quotes tight to the drift","value":"30 / 31","unit":null,"n":31,"split":"test","note":"the overlapping quote is a phrase or sentence (at most 250 characters)"},{"name":"Logged twins triaged deliberate","value":"6 / 6","unit":null,"n":6,"split":"test","note":"the same drift with a deviation-log line that explains it"},{"name":"False flags on the clean set","value":"3 / 24","unit":null,"n":24,"split":"test","note":"all three from the translation number lock (German compound noun, decimal comma); 0 after a post-test fix, re-scored on the same model outputs"},{"name":"Triage agreement, Qwen3.8","value":"35 / 35","unit":null,"n":35,"split":"test","note":"deliberate or error on the test cases; 37 / 37 on dev"},{"name":"Triage agreement, blind Opus 5.5 (same prompt)","value":"35 / 35","unit":null,"n":35,"split":"test","note":"Claude Code sub-agent, inputs only; 36 / 37 on dev"},{"name":"Planted drifts caught, dev","value":"31 / 31","unit":null,"n":31,"split":"dev","note":"the medicine the prompts were tuned on (three rounds)"}],"dataset":"Two invented medicines, each a seven-document set (CCDS, US PI, SmPC in English, German and French, leaflet, carton): Norvexa for dev, Pelmora held out and run once on the frozen pipeline. 31 drifts planted one at a time per medicine, plus 6 twins with an explaining deviation-log line.","held_out":true,"caveats":["Same author wrote the documents, the plants, the prompts and the key; the drift types and conventions are the ones the prompt names.","Synthetic only: no real label set and no comparison with a labelling reviewer's findings.","Small n: 31 drifts and 6 twins in the test split; 31 / 31 still leaves a 95% lower bound near 89%.","The three test false flags were fixed after the test run; the held-out figure stays 3 / 24.","The triage comparison shows both models follow written conventions; it says nothing about unlogged differences a reviewer knows were approved."],"date":"2026-09-27","doc_url":"https://decosa.ai/metrics/evals/label-consistency-check"},"stack":{"summary":"For regulatory affairs and labelling teams. It aligns the sections of each label document (indications, dosing, contraindications, warnings, adverse reactions, storage, strengths), compares the US PI and the English SmPC with the company core data sheet, the leaflet and carton with the SmPC, and each translation with its English text. Every difference comes back with a quote from each document: numbers with units are compared in code, translations are checked for numbers, negations and changed meaning (back-translation plus a model judgment), and SmPC headings against the EMA QRD template. Each flag is triaged from the regional conventions and your deviation log. A labelling QC aid with a signed record; regulatory affairs decides.","tagline":"A CCDS, a US PI, an EU SmPC and leaflet in several languages and the carton in; every difference in the safety sections out, quoted from each document and triaged as likely error, likely deliberate or unclear.","deployment":"hosted-or-self-host","regulatory_note":"Checked 27 Sep 2026. US: 21 CFR 201.57(c) sets the Full Prescribing Information sections (1 Indications and usage, 2 Dosage and administration, 3 Dosage forms and strengths, 4 Contraindications, 5 Warnings and precautions, 6 Adverse reactions ... 16 How supplied/storage and handling; eCFR, current), and 21 CFR 314.70(c)(6)(iii) lets a holder add or strengthen a contraindication, warning, precaution or adverse reaction, or a dosage instruction for safe use, on a changes-being-effected (CBE-0) basis. EU: Directive 2001/83/EC Article 11 sets the SmPC headings in order (4.1 therapeutic indications ... 4.3 contra-indications, 4.4 special warnings ..., 4.8 undesirable effects, 6.4 special precautions for storage) and Article 63(1) requires labelling and leaflet particulars in the official language(s) of the Member State; read on legislation.gov.uk (the EU text as it stood on 31 Dec 2020), so later amendments and the EU pharmaceutical reform are unverified here. The EMA QRD product-information template v10.4 (02/2024; a draft v11 was consulted on until 31 Aug 2025) gives the headings and standard statements in each language; the check uses its English, German and French versions. ICH E2C(R2) (Step 4, 17 Dec 2012) describes the Company Core Data Sheet and its core safety information (CCSI), which is why the CCDS is the reference. The check lists and triages differences; it does not decide whether a label is approvable, whether a deviation is justified or which regulatory route a change needs. Not legal or regulatory advice. Model licences: Apache-2.0 (Qwen3.8-27B, Hy-MT2-7B, PaddleOCR-VL-1.6, Docling Heron layout); MIT (Docling).","components":[{"id":"labelcheck","role":"Section splitter (QRD numbers, 21 CFR 201.57 numbers, heading words), pair plan, quote location at character offsets, number-with-unit comparison, QRD heading check, triage rules for translations, signed record (no model; CPU)","name":"decosa-api label check (decosa_api/verticals/labelcheck), on the language-pack block (decosa_api/lang), the document reader (decosa_api/docreader) and the signed record (07)","hf_repo":null,"license":"AGPL-3.0-or-later","params":null,"quant":null,"vram_gb":0,"memory_gb_estimate":null,"engine":"Python 3.12; the language pack's number reader (preserve.py) for numbers and units in 24 languages; eu-qrd-human term pack (QRD v10.4 headings, EN/DE/FR)","receipt_coverage":"partial","in_hosted_demo":null,"tiers":["lite","standard","best"],"alternative_to":null},{"id":"model","role":"One call per section pair: the differences as JSON with an exact quote from each document; one triage call per document pair; the meaning judgment per translated paragraph; a full-page read of a scanned carton (image input)","name":"Qwen3.8-27B (NVFP4, vision tower on)","hf_repo":"nvidia/Qwen3.8-27B-NVFP4","license":"Apache-2.0","params":"27B","quant":"NVFP4","vram_gb":20,"memory_gb_estimate":null,"engine":"vLLM 0.29.0 (hosted model qwen3.8-27b), images up to 4 per request","receipt_coverage":"strong","in_hosted_demo":null,"tiers":["lite","standard","best"],"alternative_to":null},{"id":"mt","role":"Back-translation of each translated paragraph into English for the meaning check (the language-pack block): German, French and the other languages it serves","name":"Hy-MT2-7B","hf_repo":"tencent/Hy-MT2-7B","license":"Apache-2.0","params":"7.5B","quant":"BF16","vram_gb":18,"memory_gb_estimate":null,"engine":"vLLM 0.29.0 (Transformers backend, --enforce-eager), gpu-memory-utilization 0.18","receipt_coverage":"partial","in_hosted_demo":null,"tiers":["standard"],"alternative_to":null},{"id":"reader","role":"Scanned or PDF cartons and labels: finds and orders the regions of each page (Docling Heron layout) and reads them (PaddleOCR-VL-1.6), with a page and box per line","name":"Document reader block: Docling 2.130 (Heron layout) + PaddleOCR-VL-1.6 (0.9B)","hf_repo":"PaddlePaddle/PaddleOCR-VL-1.6","license":"Apache-2.0 (PaddleOCR-VL-1.6 weights, Heron layout weights); MIT (Docling)","params":"0.9B","quant":"BF16","vram_gb":6,"memory_gb_estimate":null,"engine":"services/docreader (Docling on CUDA) with the parser on vLLM 0.29.0; decosa_api.docreader in the API","receipt_coverage":"partial","in_hosted_demo":true,"tiers":["standard","best"],"alternative_to":null},{"id":"mt-30b","role":"Back-translation, larger model","name":"Hy-MT2-30B-A3B-FP8","hf_repo":"tencent/Hy-MT2-30B-A3B-FP8","license":"Apache-2.0","params":"30B","quant":"FP8","vram_gb":null,"memory_gb_estimate":31,"engine":"vLLM (not run here)","receipt_coverage":"none","in_hosted_demo":null,"tiers":["best"],"alternative_to":null}],"tiers":[{"id":"lite","label":"Lite · text documents, meaning check off","summary":"Text documents only, sent with \"meaning\": false: the model compares sections and triages; translations get the code checks only (numbers, units, negations, QRD headings), no back-translation. Only the language model needs a GPU.","components":["labelcheck","model"],"hardware":"1x GPU for Qwen3.8-27B","quality_evidence":[{"metric":"Planted drifts caught","value":"not measured as a separate tier","source":"the eval ran with the meaning check on; 2 of 9 translation drifts on the test split were found only by the meaning check"}],"latency_note":"not measured","in_hosted_demo":false,"receipt_coverage":"strong","receipt_note":"Every model call is receipted.","hosting":null},{"id":"standard","label":"Standard · Qwen3.8-27B, Hy-MT2-7B and the document reader (hosted demo)","summary":"What the hosted demo runs: Qwen3.8-27B compares and triages, Hy-MT2-7B back-translates for the meaning check, the document reader reads scanned cartons, code checks numbers, headings and quotes and signs.","components":["labelcheck","model","mt","reader"],"hardware":"1x RTX PRO 6000 96 GB (measured on shared cards)","quality_evidence":[{"metric":"Planted drifts caught, held-out synthetic set (numbers, missing warnings and contraindications, storage, translations)","value":"31 / 31, all triaged likely error; 30 / 31 quoted to a phrase or sentence","source":"decosa-api docs/evals/label-consistency-check.md, test split (Pelmora, run once)"},{"metric":"Same drift with an explaining deviation-log entry, triaged likely deliberate","value":"6 / 6","source":"decosa-api docs/evals/label-consistency-check.md, test split"},{"metric":"False flags on the clean held-out set","value":"3 of 24 flags (all from the translation number lock; 0 after a post-test fix, re-scored on the same model outputs)","source":"decosa-api docs/evals/label-consistency-check.md"},{"metric":"Deliberate-or-error triage against a blind frontier judge (Claude Opus 5.5, same prompt), 72 cases","value":"Qwen3.8 72 / 72, Opus 71 / 72; 35 / 35 each on the test cases","source":"decosa-api docs/evals/label-consistency-check.md"},{"metric":"Full seven-document set, hosted gateway route","value":"415 s under shared load, 43 Qwen3.8 calls, $0.0147 at list price","source":"decosa-api docs/evals/label-consistency-check.md"}],"latency_note":"measured on the shared gateway: several minutes for the full document set, a couple of minutes for a pair or a scanned carton, about a minute for the smoke check; seconds self-hosted (direct route)","in_hosted_demo":true,"receipt_coverage":"partial","receipt_note":"Qwen3.8 calls: gateway receipts. Back-translation and reader calls: model-call attestations and a signed reader receipt from decosa-api, not countersigned by the gateway yet.","hosting":null},{"id":"best","label":"Best · the 30B translation model (not measured)","summary":"Hy-MT2-30B-A3B-FP8 for back-translation; not run by us.","components":["labelcheck","model","mt-30b","reader"],"hardware":"1x RTX PRO 6000 96 GB (estimate: 20 GB Qwen3.8 NVFP4 weights plus 31 GB MT)","quality_evidence":[{"metric":"Planted translation drifts caught","value":"not measured yet","source":"not run"}],"latency_note":"not measured","in_hosted_demo":false,"receipt_coverage":"partial","receipt_note":null,"hosting":null}],"alternates":[],"services":[{"name":"decosa-api","port":8445,"image":"${DECOSA_REGISTRY}/decosa-api:<tag>","purpose":"GET /label/info, /label/samples; POST /label/check (SSE or JSON); POST /record/verify. Keeps no label text."},{"name":"decosa-llm","port":8000,"image":"${DECOSA_REGISTRY}/decosa-llm:0.1.0","purpose":"vLLM OpenAI endpoint for Qwen3.8-27B with image input."},{"name":"decosa-lang-mt","port":8491,"image":"vllm/vllm-openai@sha256:c2914767605584b6d8f45686b82de173ecc99e781897aa3d0a66dacd72c51ae1","purpose":"Hy-MT2-7B, the language pack's translation model, for back-translation."},{"name":"decosa-docreader","port":8497,"image":"built from services/docreader (no published image yet), with PaddleOCR-VL-1.6 on vLLM","purpose":"Reads scanned or PDF cartons into lines with page and box."}],"tools":[{"name":"EMA QRD product-information template v10.4 (EN, DE, FR)","url":"https://www.ema.europa.eu/en/human-regulatory-overview/marketing-authorisation/product-information-requirements/product-information-templates-human","license":"EMA legal notice: reproduction for commercial and non-commercial purposes with acknowledgement","purpose":"The SmPC headings and standard statements in the eu-qrd-human term pack (read 27 Sep 2026)."},{"name":"EMA EPAR product information (Otezla, DE and FR)","url":"https://www.ema.europa.eu/en/medicines","license":"EMA legal notice: reproduction with acknowledgement","purpose":"Only the four adverse-reaction frequency category names (sehr häufig / très fréquent ...), so the meaning check accepts them."},{"name":"21 CFR 201.57 and 314.70 (eCFR)","url":"https://www.ecfr.gov/current/title-21/section-201.57","license":"US federal regulation (public domain)","purpose":"The US PI section numbers the splitter reads; the CBE-0 route cited in the notes."},{"name":"Synthetic label sets of invented medicines","url":null,"license":"AGPL-3.0-or-later (decosa-api, decosa_api/verticals/labelcheck/data)","purpose":"The samples and the eval: Norvexa (dev) and Pelmora (test), each with a CCDS, US PI, SmPC in English, German and French, an English leaflet and a carton, with 31 planted drifts and 6 declared twins per medicine."}],"hardware":[{"tier":"1x RTX PRO 6000 Blackwell 96 GB","fits":true,"notes":"Measured on our server with the models on shared cards: Qwen3.8-27B NVFP4 (about 20 GB of weights), Hy-MT2-7B (about 18 GB) and the document reader (about 6 GB)."},{"tier":"1x RTX 5090 32 GB","fits":false,"notes":"Estimate: Qwen3.8-27B NVFP4 with a small KV cache fits, the translation model and reader do not; run the lite tier (text documents, meaning check off) or put them on a second card."},{"tier":"CPU only","fits":false,"notes":"The model needs a GPU. Sections, number checks and the record run on CPU."}],"latency":[{"lane":"the seven-document Norvexa set (CCDS, US PI, SmPC EN/DE/FR, leaflet, carton), hosted gateway route","typical_ms":414700,"source":"measured on our server 2026-09-27 (pre-release server, gateway shared with other workloads, load average about 65)"},{"lane":"CCDS against US PI (norvexa-quick), hosted gateway route","typical_ms":147700,"source":"measured on our server 2026-09-27 (pre-release server)"},{"lane":"the four-document rehearsal set, self-hosted direct route to the local Qwen3.8","typical_ms":13800,"source":"measured on our server 2026-09-27 (fresh clone, compose)"}],"benchmark":null,"notes":["Numbers with units, QRD headings, quotes and translation figures and negations are checked in code; the model finds and describes section differences and triages them against the regional conventions and your deviation log.","Held out (synthetic): 31 of 31 planted drifts caught and triaged as likely errors, 6 of 6 logged twins triaged as deliberate, 3 false flags in 24 on the clean set (all fixed after the test).","A labelling QC aid: it does not approve a deviation, decide whether a label is approvable or choose a regulatory route; regulatory affairs decides each flag."]},"buyer_facts":[{"label":"Data retention","value":"Nothing stored: the documents live in memory for the request. The signed record holds document hashes, sections, each flag's place, kind and triage and the receipt ids, never the label text; logs carry counts and timings only."},{"label":"What leaves the box","value":"Self-hosted on the direct route: nothing. The model, the translation model, the document reader and the checks run on the same machine. Hosted: model calls go through the Decosa API, and only invented or public labels are accepted."},{"label":"What it compares","value":"Indications, dosing, contraindications, warnings, adverse reactions, storage and strengths: US PI and English SmPC against the CCDS, leaflet and carton against the SmPC, each language against its English text, SmPC headings against the QRD template (English, German, French)."},{"label":"What it is not","value":"A regulatory decision, an approval of a deviation or an artwork proofreader. Interactions, pregnancy sections, pharmacology and layout are not compared. Regulatory affairs decides each flag."}],"data_handling":{"page":"/data#label-consistency-check","self_host":{"level":"confidential","leaves":"nothing","summary":"Runs on your machine; nothing is sent to Decosa or a third party by default."},"hosted":{"level":"operator-processed","demo_only":false,"summary":"TLS to Decosa's server, then decrypted and processed by Decosa's API server, with the open models run by NEAR AI through OpenRouter, with Reka AI as the only fallback under Decosa's account.","gpus":"operator-contracted","third_parties":[],"retention":"Nothing stored: the documents live in memory for the request. The signed record holds document hashes, sections, each flag's place, kind and triage and the receipt ids, never the label text; logs carry counts and timings only.","used_for_training":false,"encrypted_while_processed":false},"sealed_tier":{"applies":false,"note":"The sealed tier (raw chat only, never use-case pipelines) is paused at launch (/docs/sealed-tier)."},"external_calls":[]},"console":{"href":"/tools/life-sciences/label-consistency-check","input":"label","lanes":[{"id":"pairs","title":"Document pairs","kind":"list"},{"id":"flags","title":"Flags with quotes","kind":"list"},{"id":"triage","title":"Triage","kind":"list"},{"id":"record","title":"Flags and signed record","kind":"json"}],"samples":[{"n":1,"id":"norvexa-drift","title":"Norvexa: full set with five drifts","deep_link":"/tools/life-sciences/label-consistency-check?sample=1&autorun=0"},{"n":2,"id":"norvexa-clean","title":"Norvexa: consistent set with regional differences","deep_link":"/tools/life-sciences/label-consistency-check?sample=2&autorun=0"},{"n":3,"id":"norvexa-quick","title":"Norvexa: CCDS against the US PI (quick)","deep_link":"/tools/life-sciences/label-consistency-check?sample=3&autorun=0"},{"n":4,"id":"norvexa-scan","title":"Norvexa: scanned carton against the SmPC","deep_link":"/tools/life-sciences/label-consistency-check?sample=4&autorun=0"}],"deep_link_params":{"sample":"1-based index into samples, or a sample id","autorun":"1 = start the run once the sample is loaded; 0 (default) = only preselect","reduce-motion":"1 = turn off animations"}},"api":{"base":"https://api.decosa.ai","contract":"/api/contract.json","contract_markdown":"/api/contract.md","reference":"/docs/api","keys":"/account/keys"},"prompts":{"hosted":"/prompts/label-consistency-check-hosted.md","selfhost":"/prompts/label-consistency-check-selfhost.md","assemble":"/prompts/label-consistency-check-assemble.md","mac":null},"rehearsal":{"bundle":"/samples/label-consistency-check.zip","bundle_url":"https://decosa.ai/samples/label-consistency-check.zip","folder":"/samples/label-consistency-check/","expected":"/samples/label-consistency-check/expected.json","files":["/samples/label-consistency-check/expected.json","/samples/label-consistency-check/inputs/ccds.txt","/samples/label-consistency-check/inputs/smpc_de.txt","/samples/label-consistency-check/inputs/smpc_en.txt","/samples/label-consistency-check/inputs/us_pi.txt"],"bytes":7970,"checks":["the set is reported as drifted","the US PI against the CCDS has at least two likely errors in its warnings (the 6-month interval and the missing warning)","the dropped German negation is flagged in the translation","the logged US-only indication difference is not called an error","the German SmPC's QRD headings are all right","every model call has a signed receipt","the signed record verifies"],"licence":"Label texts written for this bundle (CC0); the medicine, company and every number are invented. Part of decosa-api, AGPL-3.0-or-later.","about":"Synthetic labels for Norvexa (tavorexin), an invented medicine. The US PI's liver-test interval says every 6 months where the CCDS says 3, the US PI has lost the depression and suicidal ideation warning, and the German SmPC has dropped the negation in 'must not be initiated in patients with an active serious infection'. The US-only indication and pregnancy wording are in the deviation log. The check must flag the drifts as likely errors, keep the logged differences out of the errors, leave the German QRD headings alone, attach a receipt to every model call and sign a record that verifies.","run":{"containers":"docker compose exec api python scripts/rehearse.py label-consistency-check","checkout":"python scripts/rehearse.py label-consistency-check --bundle label-consistency-check.zip --base-url http://127.0.0.1:8445","mac":".venv/bin/python scripts/rehearse.py label-consistency-check"},"guidance":"Set up with a coding agent (we recommend Claude Code with Claude Opus 5.5; any capable coding agent works) on mock data only, run the rehearsal until every check passes, then run your own data locally yourself. Never give the agent real data during setup."},"hardware_fit":{"check":"/self-host/hardware?use=label-consistency-check","data":"/api/hardware.json","tiers":[{"id":"lite","gpu_gb":57.6,"basis":"stack","unknown":[]},{"id":"standard","gpu_gb":81.6,"basis":"stack","unknown":[]},{"id":"best","gpu_gb":100.6,"basis":"estimate","unknown":[]}],"mac":null},"links":{"page":"/tools/life-sciences/label-consistency-check","json":"/use-cases/label-consistency-check.json","metrics":"/metrics/label-consistency-check","console":"/tools/life-sciences/label-consistency-check","console_sample":"/tools/life-sciences/label-consistency-check?sample=1&autorun=0","stack":"/tools/life-sciences/label-consistency-check#stack","try_live":"/tools/life-sciences/label-consistency-check","watch":"/tools/life-sciences/label-consistency-check","build":"/tools/life-sciences/label-consistency-check#build","self_host":"/tools/life-sciences/label-consistency-check#self-host","prompts":{"hosted":"/prompts/label-consistency-check-hosted.md","selfhost":"/prompts/label-consistency-check-selfhost.md","assemble":"/prompts/label-consistency-check-assemble.md","mac":null}}}