{"schema_version":"1","site":"https://decosa.ai","id":"collections-call-qa","num":"55","name":"Collections and servicing call QA","tool_name":"Review a collections call","short":"Collections call QA","blurb":"QA for recorded debt-collection and mortgage-servicing calls under Regulation F and Regulation X. On the call it answers yes, no or unclear, with a quote and a time: debt-collector disclosure, identity before the debt, third-party disclosure, threats, a stop request or dispute brushed aside, and loss-mitigation options. From the call log, in code: the 7-in-7 call count, calling hours in every time zone on file, calls after a stop request, and live contact by day 36. Signed record kept with the recording for three years.","status":"live","labels":{"industry":["finance","compliance-trust"],"job":["review","attest"],"input":["voice","text"],"deploy":["selfhost"],"status":"live","output":["record","data"],"data":["pii","confidential"],"hardware":"gpu-96","licence":"permissive"},"industries":["finance","compliance-trust"],"runs_in":["selfhost"],"part_of":[],"built_from":["diarize","typed-judgment","signed-record"],"models":"MOSS-Transcribe-Diarize · Qwen3.8-27B","where":"Self-host for real calls (hosted demo: synthetic role-plays only)","hardware":"1× RTX PRO 6000 (96 GB) for Qwen3.8-27B and the diarizer; the call-log maths and the record need no GPU","final_artifact":"A QA checklist of typed answers with quotes and times, the call-log findings with the calls behind each, and a signed record with its retention date (the call date plus three years).","self_host_first":true,"verification":{"receipt_coverage":"full","summary":"Receipt per model call; every yes backed by a quote found in the transcript; call-log findings computed in code; signed hash-chained record with a retention date","manual_qa":{"hosted":{"date":"2026-09-26","result":"pass","p50_ms":4150,"p95_ms":null,"runs":null,"receipts_per_run":9,"cost_per_run_usd":0.0026},"selfhost":{"date":"2026-09-26","result":"pass","method":"fresh clone of decosa-api into a clean directory on our server, api image built from docker/api/Dockerfile, compose api service with a named data volume, direct route, local signing; torn down after","notes":"The assembly prompt's smoke tests ran against the already-running local Qwen3.8-27B vLLM (127.0.0.1:8114, network_mode host instead of the compose llm service): tb1-showcase flagged the sheriff threat at 00:27, 7-in-7 (c8) and calling hours (c1), 9 attested receipts, record verified, 3.4 s; the pasted 21:30 New York call flagged the threat and the hours; no consent gave 400. One prompt bug found and fixed: the log-only step fed back the normalised call log, which the API does not accept as input. Model-server startup and the diarizer path were not re-run."},"known_limits":["Hosted verification ran on the pre-release server (decosa-api the pre-release branch on our server, gateway route). The production API gets this vertical when the branch merges.","Measured on 17 synthetic role-plays written by the building agent, with clean TTS audio. Not measured on real collection calls (accents, Spanish, long calls, voicemails) or with an independent reviewer's labels.","One systematic miss: an agent who names themselves a debt collector before confirming who answered is not flagged as revealing the debt before identity (t6 on every run).","The call-log findings are the rule's presumptions computed from the log given. Letters, texts, emails, consent given elsewhere and an attorney's response are outside it unless added as events. Days are counted in the consumer's first time zone.","Audio intake (/collections/transcribe) is self-host only. The hosted demo's audio samples were transcribed on our server and are bundled."],"nightly_covers":null},"nightly":"https://api.decosa.ai/verify/status"},"eval_summary":{"metrics":[{"name":"Per-rule accuracy, test run 1","value":"81/83","unit":null,"n":83,"split":"test","note":"Run 2: 81/83"},{"name":"Per-rule accuracy, test B run 1 (written after test run 1)","value":"32/33","unit":null,"n":33,"split":"heldout","note":null},{"name":"Planted answers found, test run 1","value":"11/12","unit":null,"n":12,"split":"test","note":"Test B: 3/3; audio: 8/9"},{"name":"False alarms on clean calls: test / test B run 1","value":"0 of 48 / 2 of 21","unit":null,"n":69,"split":"test","note":"Test B run 2: 1 of 21"},{"name":"Call-log findings (hand-labelled, first runs)","value":"61/61","unit":null,"n":61,"split":"test","note":"Test, test B and audio"},{"name":"Per-rule accuracy on ASR transcripts of TTS audio, run 1","value":"48/49","unit":null,"n":49,"split":"test","note":"Audio re-voiced with Decosa house voices (Kokoro-82M) and re-run: accuracy unchanged from the earlier macOS-voice audio. Timestamps on the gold line 19/21 (mean error 0.53 s, max 4.2 s); run 2: 20/21"}],"dataset":"17 synthetic scripted calls written from 12 CFR part 1006 and 1024.39-41 with fictional companies and people: 3 dev, 10 test, 4 test B, plus 6 of them as TTS audio (Decosa house voices, Kokoro-82M, each allowed by the consent ledger) run through the diarizer.","held_out":true,"caveats":["The same author wrote the scripts, the labels, the prompts and the log code; the labels are one reading of the rule text.","17 short scripted calls with clean TTS audio; real calls (accents, crosstalk, Spanish, long calls), voicemails and limited-content messages are not measured.","The call log is taken as given; presumptions depend on facts outside it.","Answer probabilities come from a confidence table fit on another domain and are not calibrated for collection calls."],"date":"2026-09-26","doc_url":"https://decosa.ai/metrics/evals/collections-call-qa"},"stack":{"summary":"For debt-collection agencies, debt buyers and mortgage servicers that record calls. Give it the call (audio on your own box, or a transcript) and the account's call log. On the call it answers yes, no or unclear, each with a quote and its time: the debt-collector disclosure, identity confirmed before the debt came up, the debt disclosed to a third party, false or threatening statements, a stop request or dispute brushed aside, and for a delinquent mortgage whether loss-mitigation options were mentioned or misstated. From the log, in code: more than 7 calls in 7 days, a call within 7 days after a conversation, calls before 8 a.m. or after 9 p.m. in every time zone the file points to, calls after a stop request or a lawyer, and live contact by day 36. Everything is sealed in a signed, hash-chained record to keep with the recording for three years. It is QA triage for a compliance reviewer, not a compliance verdict.","tagline":"A recorded collection or servicing call and its call log, checked against Regulation F and X: each answer quoted with its time, the call counts computed in code.","deployment":"self-host-first","regulatory_note":"Checked 26 Sep 2026 against eCFR (text current to 24 Sep 2026). Regulation F, 12 CFR part 1006 (in force since 30 Nov 2021), binds debt collectors as defined in 1006.2(i): third-party collectors and debt buyers, and a mortgage servicer only for loans it obtained in default. Encoded: the debt-collector disclosure in the initial and later communications (1006.18(e)); no communication about the debt with third parties (1006.6(d)(1); location calls must not say a debt is owed, 1006.10(b)); no false, deceptive or misleading representations or threats (1006.18); no calls through a medium the person asked not to use, e.g. \"stop calling\" (1006.14(h), comment 14(h)(1)-3.i); the presumption of a violation for more than seven calls in seven consecutive days, or a call within seven days after a telephone conversation, per person and per debt, with the (b)(3) exclusions (1006.14(b)(2)); the 8 a.m.-9 p.m. local-time presumption, convenient in every location the collector's information points to (1006.6(b)(1)(i), comment 6(b)(1)(i)-2); no calls to a consumer known to be represented by an attorney (1006.6(b)(2)); and keeping each call recording for three years after the call (1006.100(b)). Oral disputes are recorded but the stop-collection duty in 1006.38(d)(2) applies only to written disputes in the validation period. Regulation X, 12 CFR 1024.39-1024.41 (as amended at 90 FR 20792, 16 May 2025, which removed the expired COVID-19 live-contact provisions): live contact with a delinquent borrower by day 36, and informing the borrower about loss-mitigation options if appropriate (1024.39(a)); accurate information from assigned personnel (1024.40(b)). They apply to a principal residence and not to small servicers (1024.30). Right-party verification is a practice check that supports 1006.6(d), not a rule of its own. Recording consent is state law (e.g. California Penal Code 632). QA triage, not legal advice.","components":[{"id":"llm","role":"Extraction (what the called person asked for or said, with the line) and one typed yes/no/unclear check per QA question","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":"Recording to a timed, speaker-labelled transcript (POST /collections/transcribe, self-host; the demo's audio samples were transcribed with it)","name":"MOSS-Transcribe-Diarize 0.9B","hf_repo":"OpenMOSS-Team/MOSS-Transcribe-Diarize","license":"Apache-2.0","params":"0.9B","quant":"BF16","vram_gb":null,"memory_gb_estimate":null,"engine":"transformers (trust_remote_code) + moss_transcribe_diarize package (decosa-api services/diarize)","receipt_coverage":"partial","in_hosted_demo":false,"tiers":["standard","best","lite"],"alternative_to":null},{"id":"llm-lite","role":"Lite tier: the same extraction and checks on a 48 GB card","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":"25.2B","quant":"BF16 weights; FP8 at load time (vLLM --quantization fp8) to fit a 48 GB card","vram_gb":null,"memory_gb_estimate":null,"engine":"vLLM 0.29.0 (Gemma4ForConditionalGeneration is in its model registry)","receipt_coverage":"none","in_hosted_demo":false,"tiers":["lite"],"alternative_to":null},{"id":"llm-best","role":"Best tier: a larger model for long calls and hard cases","name":"DeepSeek-V4-Flash (NVIDIA NVFP4)","hf_repo":"nvidia/DeepSeek-V4-Flash-NVFP4","license":"MIT","params":"284B","quant":"NVFP4 experts + FP8 (about 159-176 GB of weights)","vram_gb":192,"memory_gb_estimate":null,"engine":"vLLM B12X community build, TP2 on 2x RTX PRO 6000, MTP draft fixed by the kit's patches","receipt_coverage":"none","in_hosted_demo":false,"tiers":["best"],"alternative_to":null},{"id":"glm-wanted","role":"Second judge, from another family","name":"GLM-5.3-Flash","hf_repo":"zai-org/GLM-5.3-Flash","license":"MIT","params":"321B","quant":"NVFP4 on NVIDIA (nvidia/GLM-5.3-Flash-NVFP4, about 170-186 GB, unconfirmed); MLX 4-bit on a Mac (165 GB)","vram_gb":null,"memory_gb_estimate":170,"engine":"SGLang SM120 build, TP2 on 2x 96 GB (vLLM is broken on sm_120 for this model, and the SGLang build hung on our server), or mlx-lm on a Mac with 192 GB or more","receipt_coverage":"none","in_hosted_demo":false,"tiers":["wanted"],"alternative_to":null}],"tiers":[{"id":"lite","label":"Lite · one 48 GB card","summary":"The same checks on a smaller mixture-of-experts model. Faster and cheaper; accuracy on this task unknown.","components":["llm-lite","asr"],"hardware":"1x L40S or RTX 6000 Ada 48 GB (not measured)","quality_evidence":[{"metric":"typed checks correct / planted problems found","value":"not measured yet","source":null}],"latency_note":"not measured yet","in_hosted_demo":false,"receipt_coverage":"partial","receipt_note":"Direct route: calls are attested by the box's key; no gateway receipts.","hosting":null},{"id":"standard","label":"Standard · the hosted demo, one 96 GB card","summary":"Qwen3.8-27B extracts and answers every typed check; MOSS-Transcribe-Diarize turns recordings into transcripts; the call-log maths is code. Every model call receipted.","components":["llm","asr"],"hardware":"1x RTX PRO 6000 Blackwell 96 GB","quality_evidence":[{"metric":"held-out test B, 4 synthetic calls: typed checks correct / planted problems found / call-log findings","value":"32/33 / 3/3 / 11/11","source":"decosa-api docs/evals/collections-call-qa.md, measured on our server 2026-09-26, gateway route, run 1; data, labels and prompts written by the building agent, prompts frozen on a separate 3-call dev split"},{"metric":"test set, 10 calls: typed checks correct / planted found / call-log findings","value":"81/83 / 11/12 / 33/33 (repeat run the same, plus one unlabelled log flag)","source":"decosa-api docs/evals/collections-call-qa.md, measured on our server 2026-09-26, gateway route"},{"metric":"false alarms on clean calls (flag or review)","value":"test 0/48; test B 2/21 (repeat 1/21)","source":"decosa-api docs/evals/collections-call-qa.md, measured on our server 2026-09-26, gateway route"},{"metric":"6 calls on real speech-recognition transcripts of synthetic audio: checks / planted / log findings / cited time within 3 s","value":"48/49 / 8/9 / 17/17 / 20/21","source":"decosa-api docs/evals/collections-call-qa.md, measured on our server 2026-09-26, gateway route (asr runs)"},{"metric":"real collection calls reviewed by a compliance QA lead","value":"not measured yet","source":null}],"latency_note":"measured on our server under a shared gateway: a few seconds per call","in_hosted_demo":true,"receipt_coverage":"strong","receipt_note":"Hosted: gateway-signed receipt per model call. Self-hosted: attested by the box's key.","hosting":null},{"id":"best","label":"Best · DeepSeek-V4-Flash on two more cards","summary":"A larger model for long calls and hard cases.","components":["llm-best","asr"],"hardware":"2x RTX PRO 6000 96 GB","quality_evidence":[{"metric":"typed checks correct / planted problems found","value":"not measured yet","source":null}],"latency_note":"not measured yet","in_hosted_demo":false,"receipt_coverage":"partial","receipt_note":"Not a hosted model: calls are attested by the box's key only.","hosting":null},{"id":"wanted","label":"Wanted · two large judges from different families","summary":"DeepSeek-V4-Flash and GLM-5.3-Flash each read the file, and a finding stands when they agree; disagreements go to the reviewer. Call recordings stay on your own hardware, never on community providers. Not served yet.","components":["llm-best","asr","glm-wanted"],"hardware":"Your own hardware: 2x 96 GB cards for DeepSeek-V4-Flash plus 2x 96 GB for GLM-5.3-Flash, or one Mac Studio with 512 GB holding both 4-bit builds (156 + 165 GB, sizes from our Mac; not run together yet). Estimate.","quality_evidence":[{"metric":"typed checks correct / planted problems found","value":"not measured yet","source":null}],"latency_note":"not measured yet","in_hosted_demo":false,"receipt_coverage":"none","receipt_note":"On your own hardware its calls are attested by the box's key only: not a hosted model there, so no gateway receipts. Never sent to community providers.","hosting":"own-hardware"}],"alternates":[],"services":[{"name":"decosa-api","port":8445,"image":"${DECOSA_REGISTRY}/decosa-api:0.1.0","purpose":"Transcript and call-log intake, the checks, the call-log maths, signing and the HTTP API (/collections/*). No GPU. Binds 127.0.0.1 by default."},{"name":"decosa-llm","port":8000,"image":"${DECOSA_REGISTRY}/decosa-llm:0.1.0","purpose":"vLLM OpenAI endpoint for Qwen3.8-27B. Internal to the compose network."},{"name":"decosa-diarize","port":8092,"image":null,"purpose":"Optional, self-host only: MOSS-Transcribe-Diarize for transcripts made from recordings (DECOSA_COLLECTIONS_AUDIO=1). No published image yet; built from services/diarize."}],"tools":[{"name":"decosa F&I disclosure record (vertical 46)","url":"https://decosa.ai/apps/fi-disclosure-record","license":"AGPL-3.0-or-later (decosa-api)","purpose":"The call-record engine: transcript intake, quote matching and answer parsing; 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":"The stated-confidence probability for each typed check."},{"name":"decosa record (vertical 07) and POST /record/verify","url":"https://decosa.ai/apps/record","license":"AGPL-3.0-or-later (decosa-api)","purpose":"The hash chain, signed checkpoints and the Ed25519-signed record; anyone can re-check it."},{"name":"Regulation F (12 CFR part 1006) and its official interpretations, eCFR","url":"https://www.ecfr.gov/current/title-12/chapter-X/part-1006","license":"public law","purpose":"The source of every Regulation F rule; each checklist item links its section."},{"name":"Regulation X, 12 CFR 1024.39-1024.41, eCFR","url":"https://www.ecfr.gov/current/title-12/chapter-X/part-1024/subpart-C","license":"public law","purpose":"Early intervention, continuity of contact and loss mitigation for mortgage servicers."},{"name":"IANA time zone database (Python zoneinfo)","url":"https://www.iana.org/time-zones","license":"public domain","purpose":"Local times for the calling-hours check, including daylight-saving changes."},{"name":"cryptography (Python)","url":"https://cryptography.io/","license":"Apache-2.0 OR BSD-3-Clause","purpose":"Ed25519 signatures on the record and the speech receipts."}],"hardware":[{"tier":"1x RTX PRO 6000 Blackwell 96 GB","fits":true,"notes":"Measured: the hosted demo's Qwen3.8-27B runs on one of these cards on our server; the diarizer runs on the other card there."},{"tier":"1x L40S / RTX 6000 Ada 48 GB","fits":null,"notes":"Not measured. FP8 Qwen3.8-27B with a shorter context, or Gemma 4 26B A4B (lite)."},{"tier":"CPU only","fits":true,"notes":"The call-log findings (POST /collections/log), transcript parsing, the signed record and verification need no GPU; the call checks need the model."}],"latency":[{"lane":"check of a 7-10 line call with its call log, busy shared gateway","typical_ms":4200,"source":"decosa-api docs/evals/collections-call-qa.md, measured on our server 2026-09-26, gateway route (medians 4.2-5.2 s per call across the test and test B runs; slowest 16.3 s)"},{"lane":"check of a diarized audio transcript, busy shared gateway","typical_ms":4000,"source":"decosa-api docs/evals/collections-call-qa.md, measured on our server 2026-09-26, gateway route (asr runs, medians 4.0 and 4.5 s)"},{"lane":"call-log findings only (POST /collections/log)","typical_ms":20,"source":"estimate: code only, no model call"},{"lane":"transcribe a 32-51 s recording (self-host)","typical_ms":3000,"source":"measured on our server 2026-09-26, MOSS-Transcribe-Diarize on an RTX PRO 6000"}],"benchmark":null,"notes":[]},"buyer_facts":[{"label":"What it checks","value":"On each recorded call: the debt-collector disclosure, identity before the debt, third-party disclosure, false or threatening statements, a stop request or dispute brushed aside, and loss-mitigation options on a delinquent mortgage. From the call log: the 7-in-7 and 7-days-after-a-conversation presumptions, calling hours in every time zone on file, calls after a stop request or a lawyer, and live contact by day 36."},{"label":"What it does not do","value":"It gives no compliance verdict. It does not check validation notices, letters, emails or texts, credit reporting, time-barred-debt disclosures, Regulation X written notices or loss-mitigation application handling beyond what is said on the call. The log findings are presumptions from the log you give."},{"label":"Consent","value":"Every run needs a statement that the call was recorded with the consent the law requires (some states need every party's). The statement goes into the signed record, and a check looks for the recording notice on the call."},{"label":"Data retention","value":"Nothing on the server. Transcripts, call logs and records live in memory for the request, and logs carry counts and timings only. You keep the signed record with the recording for three years (12 CFR 1006.100(b))."},{"label":"What leaves the box (hosted demo)","value":"The transcript goes to Qwen3.8-27B through our gateway, which is Decosa-operated. The call log is processed in code and not sent to the model. The gateway's receipts hold hashes, not text. Self-hosted, nothing leaves."},{"label":"Model calls per call","value":"One extraction plus 8 typed checks (10 for a mortgage). The call-log findings need no model: POST /collections/log returns them on their own."},{"label":"Typical run cost","value":"A fraction of a cent at the gateway list price for a short call (measured on the smoke sample). Each run shows its own measured cost."}],"data_handling":{"page":"/data#collections-call-qa","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 on the server. Transcripts, call logs and records live in memory for the request, and logs carry counts and timings only. You keep the signed record with the recording for three years (12 CFR 1006.100(b)).","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/finance/collections-call-qa","input":"collections","lanes":[{"id":"call","title":"On the call","kind":"list"},{"id":"log","title":"From the call log","kind":"list"},{"id":"record","title":"Signed record","kind":"json"}],"samples":[{"n":1,"id":"tb1-showcase","title":"Tb1 showcase","deep_link":"/tools/finance/collections-call-qa?sample=1&autorun=0"},{"n":2,"id":"t5-early-hours","title":"T5 early hours","deep_link":"/tools/finance/collections-call-qa?sample=2&autorun=0"},{"n":3,"id":"t6-threat-dispute","title":"T6 threat dispute","deep_link":"/tools/finance/collections-call-qa?sample=3&autorun=0"},{"n":4,"id":"t7-stop-refused","title":"T7 stop refused","deep_link":"/tools/finance/collections-call-qa?sample=4&autorun=0"},{"n":5,"id":"t8-coworker","title":"T8 coworker","deep_link":"/tools/finance/collections-call-qa?sample=5&autorun=0"},{"n":6,"id":"t9-mortgage-no-options","title":"T9 mortgage no options","deep_link":"/tools/finance/collections-call-qa?sample=6&autorun=0"},{"n":7,"id":"t1-clean-callback","title":"T1 clean callback","deep_link":"/tools/finance/collections-call-qa?sample=7&autorun=0"},{"n":8,"id":"t2-clean-mortgage-collector","title":"T2 clean mortgage collector","deep_link":"/tools/finance/collections-call-qa?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/collections-call-qa-hosted.md","selfhost":"/prompts/collections-call-qa-selfhost.md","assemble":"/prompts/collections-call-qa-assemble.md","mac":null},"rehearsal":{"bundle":"/samples/collections-call-qa.zip","bundle_url":"https://decosa.ai/samples/collections-call-qa.zip","folder":"/samples/collections-call-qa/","expected":"/samples/collections-call-qa/expected.json","files":["/samples/collections-call-qa/expected.json","/samples/collections-call-qa/inputs/call-log.json","/samples/collections-call-qa/inputs/consent.json","/samples/collections-call-qa/inputs/segments.json","/samples/collections-call-qa/inputs/speakers.json"],"bytes":3310,"checks":["at least six call checks ran","every call check got a typed answer","the planted sheriff threat is flagged","the threat flag points at a time in the recording","8 counted calls in 7 days are flagged","the 7:10 a.m. call in the Denver zone is flagged","the log-only route flags the same two findings with no model call","a check without a consent statement is refused","the record keeps the recording three years after the call","the signed record verifies","a record with its flag count changed no longer verifies","every model call has a signed receipt"],"licence":"Synthetic role-play written from 12 CFR part 1006: Harbor Ridge Recovery, Brightwater Card Company and every person are fictional; phone numbers are in the 555-01xx fiction range. Audio spoken by Decosa house voices (Kokoro-82M stock voicepacks, Apache-2.0), each allowed by the consent ledger for project decosa-collections-demo; the segments are the diarizer output with its errors kept. Part of decosa-api, AGPL-3.0-or-later.","about":"Nine script lines (twelve diarized segments) of a role-played first collection call and the account call log. The agent threatens the sheriff; the log has 8 counted calls in 7 days and one call at 7:10 a.m. in the mobile number's time zone (Denver). All three must be flagged, the call-log findings must also come back with no model call, and the signed record must verify with a three-year retention date.","run":{"containers":"docker compose exec api python scripts/rehearse.py collections-call-qa","checkout":"python scripts/rehearse.py collections-call-qa --bundle collections-call-qa.zip --base-url http://127.0.0.1:8445","mac":".venv/bin/python scripts/rehearse.py collections-call-qa"},"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=collections-call-qa","data":"/api/hardware.json","tiers":[{"id":"lite","gpu_gb":44,"basis":"estimate","unknown":[]},{"id":"standard","gpu_gb":61.6,"basis":"estimate","unknown":[]},{"id":"best","gpu_gb":196,"basis":"estimate","unknown":[]},{"id":"wanted","gpu_gb":388,"basis":"estimate","unknown":[]}],"mac":null},"links":{"page":"/tools/finance/collections-call-qa","json":"/use-cases/collections-call-qa.json","metrics":"/metrics/collections-call-qa","console":"/tools/finance/collections-call-qa","console_sample":"/tools/finance/collections-call-qa?sample=1&autorun=0","stack":"/tools/finance/collections-call-qa#stack","try_live":"/tools/finance/collections-call-qa","watch":"/tools/finance/collections-call-qa","build":"/tools/finance/collections-call-qa#build","self_host":"/tools/finance/collections-call-qa#self-host","prompts":{"hosted":"/prompts/collections-call-qa-hosted.md","selfhost":"/prompts/collections-call-qa-selfhost.md","assemble":"/prompts/collections-call-qa-assemble.md","mac":null}}}