{"schema_version":"1","site":"https://decosa.ai","id":"pv-intake","num":"78","name":"Pharmacovigilance intake","tool_name":"Draft an adverse-event case","short":"PV intake","blurb":"For drug safety teams at marketing authorisation holders and the CROs that run case intake for them. Send an adverse event report as it arrived: an email, a web form, a call to the medical information line, or a scanned MedWatch or CIOMS form, in any of nine languages. It drafts an E2B(R3)-shaped case with every field quoted to its source line (and the reporter's own words for a translated report), checks the four minimum criteria, marks the seriousness criteria per event, checks expectedness against the reference label you send, and works out day 0, which the report itself may move earlier, and the US 15-day and EU 15- and 90-day dates. Coding suggestions are free text, not MedDRA. Anything missing comes back as follow-up questions in the reporter's language. The safety physician decides and signs.","status":"live","labels":{"industry":["healthcare","compliance-trust"],"job":["draft","review"],"input":["text","voice"],"deploy":["selfhost"],"status":"live","output":["data","record"],"data":["phi"],"hardware":"gpu-96","licence":"permissive"},"industries":["healthcare","compliance-trust"],"runs_in":["selfhost"],"part_of":[],"built_from":["live-asr","diarize","signed-record"],"models":"Qwen3.8-27B (fields with quotes, seriousness, expectedness, the narrative and its grounding check) · MOSS-Transcribe-Diarize and Qwen3-ASR-1.7B (calls) · Hy-MT2-7B (translation) · document reader (scans); the criteria and the clocks are plain code","where":"Self-host for real reports (they hold health data); the hosted demo takes synthetic reports only","hardware":"1x RTX PRO 6000 (96 GB) for Qwen3.8-27B, Hy-MT2-7B, the call recogniser and the document reader; the criteria, clocks and records run on CPU","final_artifact":"A draft case: the four minimum criteria, fields quoted to their lines, seriousness and expectedness per event, day 0 and the 15- and 90-day dates, follow-up questions, an E2B(R3)-shaped JSON draft, a Markdown memo, and signed case and decision records.","self_host_first":true,"verification":{"receipt_coverage":"full","summary":"Receipt per model call; every field kept has a quote found word for word in the report; narrative sentences grounded; signed case and decision records","manual_qa":{"hosted":{"date":"2026-09-28","result":"pass","p50_ms":7082,"p95_ms":92026,"runs":6,"receipts_per_run":4,"cost_per_run_usd":0.002944},"selfhost":{"date":"2026-09-27","result":"pass","method":"fresh clone of decosa-api into a clean directory on our server, api image built from docker/api/Dockerfile (ffmpeg present), compose api service with a named data volume, direct route, local signing; torn down after","notes":"The assembly prompt's smoke test passed against the already-running local servers (network_mode host instead of the compose llm, mt, diarize and docreader services): clock 2026-09-17 for us_15 and eu_15; the email valid, serious, unexpected, day 0 2026-09-02, due 2026-09-17; the call transcribed by the diarizer, valid, serious, unexpected, day 0 2026-09-15, due 2026-09-30; the German email not valid (missing patient) with the follow-up question in German; the record verified (19 entries); all receipts attested. The rehearsal bundle passed 18/18. Model-server startup was not re-run."},"known_limits":["Hosted numbers are from 6 production smoke runs after the merge: 3 on 27-28 Sep under load (29.8, 39.8, 92.0 s) and 3 on a quiet gateway on 28 Sep (7.0, 7.0, 7.1 s). Cost is the median at list price, model calls included (range $0.0028 to $0.0030).","Run once, 3 of 20 anonymous-reporter reports were passed as valid (fixed by a rule change found on the same set, so that fix is not held out).","Day 0 is missed when a medical information vendor sends the report ('our agent took the call on ...') or the earlier date has no year.","Measured on 80 synthetic reports from one labeller, not real case files or a safety physician's labels; calls not in English and Qwen3-ASR not measured; scans measured on the demo form only.","Speech recognition and the document reader share a busy GPU on the hosted demo; a call can fail to transcribe when that GPU is full (it retries, then says so)."],"nightly_covers":null},"nightly":"https://api.decosa.ai/verify/status"},"eval_summary":{"metrics":[{"name":"Missing minimum criteria caught","value":"17 / 20","unit":null,"n":20,"split":"heldout","note":"Run once. Reporter 2 of 5 (anonymous consumers passed); patient, product and event 5 of 5 each. A rule change found on this set makes it 20 of 20 (not held out)."},{"name":"Criteria wrongly called missing","value":"1 / 300","unit":null,"n":300,"split":"heldout","note":"'The mother of a teenage girl' not read as identifying the patient."},{"name":"Seriousness right","value":"60 / 60","unit":null,"n":60,"split":"heldout","note":"Valid reports with an event; case level. Criteria set exact 59 of 60."},{"name":"Expectedness right","value":"56 / 60","unit":null,"n":60,"split":"heldout","note":"3 false unexpected, 1 unclear. Blind frontier judge (Claude Code Opus sub-agent): 59 of 60."},{"name":"Day 0 exact","value":"55 / 59","unit":null,"n":59,"split":"heldout","note":"Misses: a vendor-sent report (2), a date without a year, a day-first date."},{"name":"Deadlines exact, end to end","value":"78 / 86","unit":null,"n":86,"split":"heldout","note":"US 15-day, EU 15- and 90-day; misses follow day 0 and expectedness errors."},{"name":"Clock code against the labeller's dates","value":"180 / 180","unit":null,"n":180,"split":"heldout","note":"And 60,000 of 60,000 random day-0s against a second implementation."},{"name":"Kept fields outside the gold","value":"12 / 410 (2.9%)","unit":null,"n":410,"split":"heldout","note":"5 of 410 not written in the report at all (inferred consumer, sex from a name); 72 fields dropped by the quote check."},{"name":"Reports not in English: expectedness right","value":"18 / 20","unit":null,"n":20,"split":"heldout","note":"24 reports in 7 languages; seriousness 20 of 20; validity 24 of 24."},{"name":"Voiced calls: validity right","value":"10 / 10","unit":null,"n":10,"split":"heldout","note":"MOSS-Transcribe-Diarize on house-voice calls; seriousness 7 of 7, expectedness 6 of 7, day 0 6 of 7."}],"dataset":"80 synthetic adverse event reports (24 not in English) about four fictional products, with planted missing criteria, seriousness and expectedness nuances and earlier company-awareness dates, written and labelled by a separate agent that never saw the prompts; 10 call transcripts voiced with house voices.","held_out":true,"caveats":["Synthetic reports from one labeller, not real case files or a safety physician's labels.","Run once; 80 reports, so the intervals are wide.","Two rule changes were made after the run from errors it found (anonymous consumers, day-first dates); the headline numbers are before them.","The narrative was off; calls not in English and scans beyond the demo form were not measured.","The frontier judge is a Claude Code sub-agent, blind to labels, not the API."],"date":"2026-09-27","doc_url":"https://decosa.ai/metrics/evals/pv-intake"},"stack":{"summary":"For drug safety teams at marketing authorisation holders and the CROs that run case intake. It turns an email, a web form, a call recording or a scanned MedWatch or CIOMS form, in nine languages, into a draft case: E2B(R3)-shaped fields each quoted to its source line, the four minimum criteria, seriousness and expectedness per event, day 0 and the US 15-day and EU 15- and 90-day dates, free-text coding suggestions and follow-up questions in the reporter's language. The safety physician decides and signs.","tagline":"Adverse event reports from calls, mail and scans, drafted into ICSR cases with every field quoted and the 15- and 90-day clocks worked out.","deployment":"self-host-first","regulatory_note":"Rules read on 27 Sep 2026. US: 21 CFR 314.80 (drugs) and 600.80 (biologics), eCFR as of 24 Sep 2026: each adverse experience that is both serious and unexpected is reported no later than 15 calendar days from initial receipt; the rest go in periodic reports (quarterly for 3 years from approval, then annually); unexpected includes events of greater severity or specificity than the labeling. FDA's March 2001 draft guidance (still a draft, not binding) names the four data elements, makes the day the company knows them day 0, and lets a 15th day on a weekend or federal holiday move to the next working day. EU: Directive 2001/83/EC Article 107(3): serious suspected adverse reactions within 15 days and non-serious ones within 90 days of the day the MAH gained knowledge; EMA GVP Module VI Rev 2 (2017): the four minimum criteria, day 0 when any MAH personnel (including medical representatives and contractors) has them, calendar days with no move for weekends or holidays, and the reporter's qualification and country for a valid ICSR; ICH E2D(R1) (Step 4, 15 Sep 2025; in effect in the EU from 18 Mar 2026) says the same for the criteria and day 0. E2B(R3) element ids are checked against the EU ICSR implementation guide only. A triage and drafting aid, not a validated safety database and not regulatory advice: the safety physician decides; it submits nothing to FAERS or EudraVigilance and ships no MedDRA terminology. Reports hold health data: run it on your own hardware; the hosted demo takes synthetic reports only.","components":[{"id":"pv","role":"Intake, the quote checks, the four minimum criteria, day 0 and the clocks, follow-up questions, the E2B(R3)-shaped draft, signing and the HTTP API (/pv/*)","name":"decosa-api pharmacovigilance intake (decosa_api/verticals/pv), importing the language pack, the document reader, grounding (17), typed judgment (24) and the dates block (54)","hf_repo":null,"license":"AGPL-3.0-or-later","params":null,"quant":null,"vram_gb":0,"memory_gb_estimate":null,"engine":"Python 3.12 (FastAPI), CPU","receipt_coverage":"strong","in_hosted_demo":true,"tiers":["lite","standard","best","wanted"],"alternative_to":null},{"id":"llm","role":"Reads the fields with quotes, judges the seriousness criteria per event and expectedness against the label, drafts the narrative and judges its sentences (grounding)","name":"Qwen3.8-27B (NVIDIA NVFP4)","hf_repo":"nvidia/Qwen3.8-27B-NVFP4","license":"Apache-2.0","params":"27.8B","quant":"NVFP4 (MLP) + FP8 (attention/GDN), FP8 KV cache, MTP speculative decoding k=3","vram_gb":57,"memory_gb_estimate":null,"engine":"vLLM 0.29.0","receipt_coverage":"strong","in_hosted_demo":true,"tiers":["standard"],"alternative_to":null},{"id":"asr","role":"Call recordings in English to a timed, speaker-labelled transcript (the fallback for other languages)","name":"MOSS-Transcribe-Diarize 0.9B","hf_repo":"OpenMOSS-Team/MOSS-Transcribe-Diarize","license":"Apache-2.0","params":"0.9B","quant":"BF16","vram_gb":3,"memory_gb_estimate":null,"engine":"transformers + moss_transcribe_diarize (decosa-api services/diarize, the call engine's pass 2)","receipt_coverage":"partial","in_hosted_demo":true,"tiers":["lite","standard","best","wanted"],"alternative_to":null},{"id":"asr-ml","role":"Call recordings in German, French, Spanish, Italian, Dutch, Polish, Portuguese or Czech (the fallback for English)","name":"Qwen3-ASR-1.7B (language pack)","hf_repo":"Qwen/Qwen3-ASR-1.7B","license":"Apache-2.0","params":"1.7B","quant":"BF16","vram_gb":null,"memory_gb_estimate":5,"engine":"decosa-api services/lang (loads on first use, unloads after 15 min idle)","receipt_coverage":"partial","in_hosted_demo":true,"tiers":["lite","standard","best","wanted"],"alternative_to":null},{"id":"mt","role":"Reports not in English, translated line by line to English, and follow-up questions back into the reporter's language","name":"Hy-MT2-7B (language pack)","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)","receipt_coverage":"partial","in_hosted_demo":true,"tiers":["lite","standard","best","wanted"],"alternative_to":null},{"id":"layout","role":"Finds and orders the regions of a scanned form (text, boxes, checkboxes) with their positions","name":"Docling 2.130 with the Heron layout model (document reader block)","hf_repo":"docling-project/docling-layout-heron","license":"MIT (Docling) + Apache-2.0 (weights)","params":null,"quant":"FP32","vram_gb":1,"memory_gb_estimate":null,"engine":"docling-ibm-models on CUDA in the docreader service","receipt_coverage":"partial","in_hosted_demo":true,"tiers":["lite","standard","best","wanted"],"alternative_to":null},{"id":"parser","role":"Reads each region of a scanned form","name":"PaddleOCR-VL-1.6 (0.9B, document reader block)","hf_repo":"PaddlePaddle/PaddleOCR-VL-1.6","license":"Apache-2.0","params":"0.9B","quant":"BF16","vram_gb":4.4,"memory_gb_estimate":null,"engine":"vLLM 0.29.0 behind the docreader service","receipt_coverage":"partial","in_hosted_demo":true,"tiers":["lite","standard","best","wanted"],"alternative_to":null},{"id":"llm-lite","role":"The same prompts on a smaller mixture-of-experts model","name":"Gemma 4 26B A4B (instruction-tuned)","hf_repo":"google/gemma-4-26B-A4B-it","license":"Apache-2.0 (model card also links the Gemma 4 licence page)","params":"26B","quant":"BF16","vram_gb":null,"memory_gb_estimate":52,"engine":"vLLM","receipt_coverage":"partial","in_hosted_demo":false,"tiers":["lite"],"alternative_to":null},{"id":"llm-best","role":"A larger judge for seriousness and expectedness","name":"DeepSeek-V4-Flash (NVIDIA NVFP4)","hf_repo":"nvidia/DeepSeek-V4-Flash-NVFP4","license":"MIT","params":null,"quant":"NVFP4","vram_gb":192,"memory_gb_estimate":null,"engine":"vLLM","receipt_coverage":"partial","in_hosted_demo":false,"tiers":["best","wanted"],"alternative_to":null}],"tiers":[{"id":"lite","label":"Lite · one 48-80 GB card","summary":"The same pipeline with Gemma 4 26B A4B instead of Qwen. Faster; accuracy on this task not measured.","components":["pv","llm-lite","asr","asr-ml","mt","layout","parser"],"hardware":"1x L40S or A100 80 GB (not measured)","quality_evidence":[{"metric":"the planted set","value":"not measured yet","source":null}],"latency_note":"not measured yet","in_hosted_demo":false,"receipt_coverage":"partial","receipt_note":"Direct route: calls attested by the box's key; no gateway receipts.","hosting":null},{"id":"standard","label":"Standard · the hosted demo","summary":"Qwen3.8-27B reads and judges; the quote checks, criteria, clocks and records are code. Every model call receipted.","components":["pv","llm","asr","asr-ml","mt","layout","parser"],"hardware":"1x RTX PRO 6000 Blackwell 96 GB (estimate for everything on one card; the demo uses two)","quality_evidence":[{"metric":"planted set, 80 reports (24 not in English), run once: missing minimum criteria caught","value":"17 of 20 run once (reporter 2 of 5; patient, product, event 5 of 5); 20 of 20 after a rule change found on this set","source":"decosa-api docs/evals/pv-intake.md, measured on our server 2026-09-27, gateway route"},{"metric":"invented fields (patient and reporter fields kept that the report does not state)","value":"12 of 410 kept fields outside the gold (2.9%); 5 of 410 not written in the report at all","source":"decosa-api docs/evals/pv-intake.md, measured on our server 2026-09-27, gateway route"},{"metric":"seriousness right / expectedness right (valid cases with an event, case level)","value":"seriousness 60 of 60; expectedness 56 of 60","source":"decosa-api docs/evals/pv-intake.md, measured on our server 2026-09-27, gateway route"},{"metric":"day 0 exact / deadlines exact (end to end)","value":"day 0 55 of 59; deadlines 78 of 86","source":"decosa-api docs/evals/pv-intake.md, measured on our server 2026-09-27, gateway route"},{"metric":"clock code against the labeller's own dates and a second implementation","value":"180 of 180 labeller dates; 60,000 of 60,000 random day-0s against a second implementation","source":"decosa-api docs/evals/pv-intake.md, measured on our server 2026-09-27, gateway route"},{"metric":"not in English: seriousness / expectedness / invented fields","value":"24 reports in 7 languages: seriousness 20 of 20, expectedness 18 of 20, 2 of 132 fields outside the gold","source":"decosa-api docs/evals/pv-intake.md, measured on our server 2026-09-27, gateway route"},{"metric":"calls (voiced from 10 call transcripts, transcribed by MOSS-Transcribe-Diarize)","value":"validity 10 of 10, seriousness 7 of 7, expectedness 6 of 7, day 0 6 of 7","source":"decosa-api docs/evals/pv-intake.md, measured on our server 2026-09-27, gateway route"},{"metric":"frontier comparison (blind Claude Code Opus sub-agent, same cases): seriousness / expectedness","value":"open 60/60 and 56/60; blind Opus 60/60 and 59/60","source":"decosa-api docs/evals/pv-intake.md, measured on our server 2026-09-27, gateway route"}],"latency_note":"measured: a couple of minutes per text report on the busy shared gateway, several at a time","in_hosted_demo":true,"receipt_coverage":"strong","receipt_note":null,"hosting":null},{"id":"best","label":"Best · a larger judge","summary":"DeepSeek-V4-Flash for seriousness and expectedness, where the frontier comparison shows the gap. Not measured here.","components":["pv","llm-best","asr","asr-ml","mt","layout","parser"],"hardware":"2x RTX PRO 6000 96 GB (192 GB weights)","quality_evidence":[{"metric":"the planted set","value":"not measured yet","source":null}],"latency_note":"not measured yet","in_hosted_demo":false,"receipt_coverage":"partial","receipt_note":"Not served on the gateway yet.","hosting":null},{"id":"wanted","label":"Wanted: the best setup · a large judge with room to spare","summary":"DeepSeek-V4-Flash as the judge for every event, with the recognisers and translation beside it. Needs more than one 96 GB card.","components":["pv","llm-best","asr","asr-ml","mt","layout","parser"],"hardware":"2-4x RTX PRO 6000 96 GB or a large-memory server","quality_evidence":[{"metric":"the planted set","value":"not measured yet","source":null}],"latency_note":"not measured yet","in_hosted_demo":false,"receipt_coverage":"partial","receipt_note":null,"hosting":"own-hardware"}],"alternates":[],"services":[{"name":"decosa-api","port":8445,"image":"${DECOSA_REGISTRY}/decosa-api:0.1.0","purpose":"Intake, the quote checks, the criteria and clocks, signing and the HTTP API (/pv/*). No GPU. Needs ffmpeg for MP3/OGG/FLAC calls."},{"name":"decosa-llm","port":8000,"image":"vllm/vllm-openai:v0.29.0","purpose":"Qwen3.8-27B."},{"name":"decosa-lang-mt","port":8491,"image":"vllm/vllm-openai:v0.29.0","purpose":"Hy-MT2-7B translation (language pack)."},{"name":"decosa-diarize","port":8092,"image":"built from decosa-api/services/diarize","purpose":"MOSS-Transcribe-Diarize for calls."},{"name":"decosa-docreader","port":8497,"image":"built from decosa-api/services/docreader","purpose":"Layout + PaddleOCR-VL for scans."},{"name":"decosa-lang-speech (optional)","port":8492,"image":"built from decosa-api/services/lang","purpose":"Qwen3-ASR-1.7B for calls not in English."}],"tools":[{"name":"decosa grounding (vertical 17)","url":"https://decosa.ai/apps/grounding","license":"AGPL-3.0-or-later (decosa-api)","purpose":"Judges every narrative sentence against the report; imported, not copied."},{"name":"decosa typed-judgment (vertical 24)","url":"https://decosa.ai/apps/typed-judgment","license":"AGPL-3.0-or-later (decosa-api)","purpose":"Answer parsing and the calibrated probability for each expectedness answer."},{"name":"claims dates block (vertical 54)","url":"https://decosa.ai/apps/claims-conduct-pack","license":"AGPL-3.0-or-later (decosa-api)","purpose":"Calendar-day arithmetic and US federal holidays for the clocks; imported."},{"name":"decosa language pack and document reader blocks","url":"https://decosa.ai/developers/blocks/language-pack","license":"AGPL-3.0-or-later (decosa-api)","purpose":"Speech recognition, translation with a number lock, and cited reading of scanned forms; imported."},{"name":"audio drama studio (vertical 51) and consent ledger (47)","url":"https://decosa.ai/apps/audio-drama-studio","license":"AGPL-3.0-or-later (decosa-api)","purpose":"Voiced the synthetic demo and eval calls with house voices, every line through the consent ledger, C2PA inside the MP3."},{"name":"eCFR: 21 CFR 314.80 and 600.80","url":"https://www.ecfr.gov/current/title-21/section-314.80","license":"public law","purpose":"The US definitions and the 15-day and periodic reporting rules, quoted in /pv/info with the date read."},{"name":"EMA GVP Module VI Rev 2","url":"https://www.ema.europa.eu/en/documents/regulatory-procedural-guideline/guideline-good-pharmacovigilance-practices-gvp-module-vi-collection-management-submission-reports-suspected-adverse-reactions-medicinal-products-rev-2_en.pdf","license":"EMA document (reuse with acknowledgement)","purpose":"The four minimum criteria, day 0 and the 15- and 90-day timelines, quoted."}],"hardware":[{"tier":"1x RTX PRO 6000 Blackwell 96 GB","fits":true,"notes":"The hosted demo's services all run on our server's two such cards (Qwen on one; the recognisers, translation and reader share the other). One card for everything is an estimate: about 57 + 18 + 3 + 6 GB."},{"tier":"2x 48 GB (L40S or RTX 6000 Ada)","fits":null,"notes":"Not measured: Qwen FP8 on one card, translation, recognisers and reader on the other."},{"tier":"CPU only","fits":true,"notes":"The clocks (POST /pv/clock), the criteria, the decision record and verification need no GPU; reading a report needs the model."}],"latency":[{"lane":"one text report without the narrative, busy shared gateway","typical_ms":145000,"source":"decosa-api docs/evals/pv-intake.md, measured on our server 2026-09-27, gateway route (median of the planted set, 4 reports at a time)"},{"lane":"clock rules only","typical_ms":50,"source":"estimate: no model call"}],"benchmark":{"title":"How well does it draft a case?","intro":"80 synthetic reports (24 not in English) run once through the hosted pipeline, labelled by a separate agent that never saw the prompts; the same seriousness and expectedness questions given blind to a Claude Code Opus sub-agent.","rows":[{"label":"Missing minimum criteria caught","value":"17 of 20","detail":"20 of 20 after a rule change found on this set"},{"label":"Seriousness / expectedness right","value":"60/60 · 56/60","detail":"blind Opus: 60/60 · 59/60"},{"label":"Day 0 exact","value":"55 of 59","detail":"clock arithmetic 180 of 180 against the labeller"},{"label":"Fields kept that the report does not state","value":"12 of 410","detail":"5 of 410 not written at all"}],"points":[{"heading":"Where it fails","text":"Anonymous consumers were first counted as identifiable reporters (fixed in the rules). Day 0 is missed when the medical information vendor sends the report, or the earlier date has no year. Expectedness slips when the model splits one event into parts or meets a near-synonym."},{"heading":"What it does not show","text":"Real case files are messier and a safety physician's labels may differ. Measure it on your own closed cases before relying on it."}],"source":"decosa-api docs/evals/pv-intake.md, 27 Sep 2026"},"notes":[]},"buyer_facts":[{"label":"What it gives you","value":"A draft case: the four minimum criteria each met by a quote (or what is missing), seriousness criteria and expectedness per event with quotes from the report and the label, day 0 and the US 15-day and EU 15- and 90-day dates with the arithmetic, follow-up questions in the reporter's language, an E2B(R3)-shaped JSON draft, free-text coding suggestions, an optional checked narrative, a Markdown memo, and signed case and decision records."},{"label":"What it does not do","value":"It is not a safety database and not a validated system. It does not submit E2B XML to FAERS or EudraVigilance, code in MedDRA (no MedDRA terms are shipped), assess causality, search for duplicates, screen literature, or handle devices, vaccines (VAERS) or clinical-trial SUSARs."},{"label":"Data retention","value":"Nothing kept on the server. Reports, audio, scans and records live in memory for the request (the bundled samples' transcripts are cached by hash); logs carry counts and the case summary only. You keep the signed records with the case."},{"label":"What leaves the box (hosted demo)","value":"Report text goes to Qwen3.8-27B through the Decosa API, whose receipts hold hashes, not text; audio, scans and translation stay on Decosa's hosted service. Self-hosted, nothing leaves. The hosted demo is for synthetic reports only."},{"label":"Model calls per report","value":"One fields read, one seriousness call and one expectedness call per event; plus speech recognition for a call, the document reader for a scan, line-by-line translation for a report not in English, and a draft plus one grounding call per sentence when the narrative is on."},{"label":"Typical run cost","value":"A fraction of a cent in model time for a text report without the narrative (a few calls on the demo email, gateway list price). A call adds speech recognition; a translated report adds a translation call per line; the narrative adds a draft and one check per sentence."},{"label":"Clocks","value":"Day 0 is the first day anyone at the company or acting for it (sales reps, call centres, partners) had the four criteria; the report itself can move it earlier. US 15 calendar days for serious and unexpected; EU 15 days for serious, 90 for non-serious. EU deadlines are not moved off weekends; for US ones the date FDA's 2001 draft guidance would accept is shown beside it."}],"data_handling":{"page":"/data#pv-intake","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":true,"summary":"Hosted demo on sample or public data only; self-host for real data.","gpus":"operator-contracted","third_parties":[],"retention":"Nothing kept on the server. Reports, audio, scans and records live in memory for the request (the bundled samples' transcripts are cached by hash); logs carry counts and the case summary only. You keep the signed records with the case.","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/pv-intake","input":"pv","lanes":[{"id":"criteria","title":"Minimum criteria","kind":"list"},{"id":"events","title":"Seriousness and expectedness","kind":"list"},{"id":"clock","title":"Day 0 and the clocks","kind":"list"},{"id":"followups","title":"Follow-up questions","kind":"list"},{"id":"fields","title":"E2B(R3)-shaped draft","kind":"json"},{"id":"narrative","title":"Draft case narrative","kind":"markdown"},{"id":"record","title":"Signed records","kind":"json"}],"samples":[{"n":1,"id":"email-angioedema","title":"Email angioedema","deep_link":"/tools/life-sciences/pv-intake?sample=1&autorun=0"},{"n":2,"id":"call-febrile-neutropenia","title":"Call febrile neutropenia","deep_link":"/tools/life-sciences/pv-intake?sample=2&autorun=0"},{"n":3,"id":"scan-cioms-sepsis","title":"Scan cioms sepsis","deep_link":"/tools/life-sciences/pv-intake?sample=3&autorun=0"},{"n":4,"id":"email-fr-rash","title":"Email fr rash","deep_link":"/tools/life-sciences/pv-intake?sample=4&autorun=0"},{"n":5,"id":"email-de-no-patient","title":"Email de no patient","deep_link":"/tools/life-sciences/pv-intake?sample=5&autorun=0"},{"n":6,"id":"email-es-no-product","title":"Email es no product","deep_link":"/tools/life-sciences/pv-intake?sample=6&autorun=0"},{"n":7,"id":"web-form-nausea","title":"Web form nausea","deep_link":"/tools/life-sciences/pv-intake?sample=7&autorun=0"},{"n":8,"id":"call-er-fall","title":"Call er fall","deep_link":"/tools/life-sciences/pv-intake?sample=8&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/pv-intake-hosted.md","selfhost":"/prompts/pv-intake-selfhost.md","assemble":"/prompts/pv-intake-assemble.md","mac":null},"rehearsal":{"bundle":"/samples/pv-intake.zip","bundle_url":"https://decosa.ai/samples/pv-intake.zip","folder":"/samples/pv-intake/","expected":"/samples/pv-intake/expected.json","files":["/samples/pv-intake/expected.json","/samples/pv-intake/inputs/angioedema-email.txt","/samples/pv-intake/inputs/febrile-neutropenia-call.mp3","/samples/pv-intake/inputs/german-email.txt","/samples/pv-intake/inputs/veltarin-product.json","/samples/pv-intake/inputs/zorvimab-product.json"],"bytes":1099952,"checks":["with day 0 on 2 Sep 2026, the US 15-day report is due 17 Sep 2026 (no model)","the email is a valid case (all four minimum criteria)","it is serious (hospitalisation, quoted)","and unexpected against the label","day 0 is 2 Sep, the day the sales representative was told, not the 8 Sep received date","so the first deadline is 17 Sep 2026","the identifiable patient is met by quotes from the report (her age among them)","the signed case record verifies","a record whose seriousness was changed no longer verifies","the safety physician's decision is signed and verifies","the call is transcribed by a speech recogniser","the call is a valid, serious case","febrile neutropenia is unexpected against a label that lists only neutropenia","the call's 15-day reports are due 30 Sep 2026","the German email is not a valid case: no identifiable patient","so no clock starts","the first follow-up question comes back in German","every model call has a signed receipt"],"licence":"Synthetic (CC0): the reports, medicines (Veltarin, Zorvimab), company and people are invented (decosa_api/verticals/pv/data/samples.json). The call audio was rendered with Kokoro-82M (Apache-2.0) house voices. Part of decosa-api, AGPL-3.0-or-later.","about":"Three synthetic adverse event reports about fictional medicines. The pharmacist's email about angioedema with an overnight admission must be a valid, serious, unexpected case whose day 0 is 2 Sep 2026 (the day the sales representative was told), not the 8 Sep received date, so the US and EU 15-day reports are due 17 Sep 2026. The recorded call (house voices, voiced in the audio drama studio through the consent ledger) is transcribed and must be a valid, serious, unexpected biologic case due 30 Sep 2026, with the lot number captured. The German email has no identifiable patient: not a valid case, no clock, and follow-up questions come back in German. The signed case record verifies and fails once changed; the safety physician's decision is signed.","run":{"containers":"docker compose exec api python scripts/rehearse.py pv-intake","checkout":"python scripts/rehearse.py pv-intake --bundle pv-intake.zip --base-url http://127.0.0.1:8445","mac":".venv/bin/python scripts/rehearse.py pv-intake"},"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=pv-intake","data":"/api/hardware.json","tiers":[{"id":"lite","gpu_gb":89.5,"basis":"estimate","unknown":[]},{"id":"standard","gpu_gb":90.1,"basis":"estimate","unknown":[]},{"id":"best","gpu_gb":224.5,"basis":"estimate","unknown":[]},{"id":"wanted","gpu_gb":224.5,"basis":"estimate","unknown":[]}],"mac":null},"links":{"page":"/tools/life-sciences/pv-intake","json":"/use-cases/pv-intake.json","metrics":"/metrics/pv-intake","console":"/tools/life-sciences/pv-intake","console_sample":"/tools/life-sciences/pv-intake?sample=1&autorun=0","stack":"/tools/life-sciences/pv-intake#stack","try_live":"/tools/life-sciences/pv-intake","watch":"/tools/life-sciences/pv-intake","build":"/tools/life-sciences/pv-intake#build","self_host":"/tools/life-sciences/pv-intake#self-host","prompts":{"hosted":"/prompts/pv-intake-hosted.md","selfhost":"/prompts/pv-intake-selfhost.md","assemble":"/prompts/pv-intake-assemble.md","mac":null}}}