{"schema_version":"1","site":"https://decosa.ai","id":"jottings-note","num":"103","name":"Notes from your own jottings","tool_name":"Write a note from my jottings","short":"Jottings to note","blurb":"For therapists in private practice with a notes backlog. After the session, give it what you already jot: typed bullets, a photo of your handwritten notes, or a dictation of up to a minute. Out comes a DAP, SOAP or BIRP progress note tied to your treatment-plan goals, where every sentence links to the jotting it came from. Nothing is added: numbers, diagnoses, moods, risk and recommendations must be in your jottings or the sentence is removed. A completeness check lists what payers audit (start and stop times, modality, interventions, goals, response, plan, your credential, and risk when you mentioned it) and marks what is missing instead of guessing. Catch-up mode drafts a backlog in one go. There is no recording, ever. The note is a draft you review, edit and sign.","status":"live","labels":{"industry":["healthcare"],"job":["draft","review"],"input":["text","files"],"deploy":["selfhost"],"status":"live","output":["text","record"],"data":["phi"],"hardware":"gpu-96","licence":"permissive"},"industries":["healthcare"],"runs_in":["selfhost"],"part_of":[],"built_from":["signed-record"],"models":"Qwen3.8-27B (reads the photo, drafts, and checks every sentence with the grounding judge) · PaddleOCR-VL-1.6 (second reader for handwriting) · Qwen3-ASR-1.7B (a dictation of up to 60 s)","where":"Self-host for real client notes; the hosted demo takes made-up sessions only","hardware":"1x RTX PRO 6000 (96 GB) or 1x RTX 5090 (32 GB, estimate) for Qwen3.8-27B; the photo's second reader needs about 3 GB more; typed jottings need nothing else","final_artifact":"A draft DAP, SOAP or BIRP progress note with a cite per sentence, the completeness check, the removed sentences with reasons, plain text to paste, and a signed record.","self_host_first":true,"verification":{"receipt_coverage":"full","summary":"Every sentence cites its jottings and passes the number, clinical-claim and grounding checks; receipt per model call; signed record of hashes, no note text","manual_qa":{"hosted":{"date":"2026-09-30","result":"pass","p50_ms":25462,"p95_ms":30257,"runs":5,"receipts_per_run":24,"cost_per_run_usd":0.008581},"selfhost":{"date":"2026-09-28","result":"pass","method":"fresh clone of decosa-api on our server, api image built from docker/api/Dockerfile, compose api with a named data volume on the host network, direct route to the running Qwen3.8-27B, page parser and ASR; local signing; torn down after","notes":"Rehearsal bundle 12/12 four times in a row (8.5-9.6 s); smoke ok in 6.2 s with 17 signed receipts; the photo sample read 9 lines (8 agreed by both readers); 4 synthetic dictations (computer voice, 17-32 s) transcribed and drafted, a 190 s recording refused; /jottings/app drafted a note at 1280 and 390 px with no horizontal scroll; a cold-user test ran a 20-session catch-up against it. Model-server startup was not re-run."},"known_limits":["Hosted verification on production (decosa.ai, gateway route), 28 Sep 2026: the smoke (cbt-panic sample) run 5 times one at a time.","Measured on synthetic sessions written by agents and on rendered handwriting; no real jottings, real handwriting or licensed therapist's review yet.","Not zero: on 24 new sessions 5 of 326 draft units were still not supported by the jottings (mostly shorthand read the wrong way, such as 'sat' for Saturday).","The same jottings can give different drafts on two runs.","Dictation was tested with a computer voice only; spoken dates and times are converted to digits, other numbers stay as words.","Needs a 32-96 GB GPU in the practice for real notes until a confidential hosted tier with a BAA exists."],"nightly_covers":null},"nightly":"https://api.decosa.ai/verify/status"},"eval_summary":{"metrics":[{"name":"Risk and safety statements carried, fresh blind split #3 (verbatim rule)","value":"113 / 117","unit":null,"n":117,"split":"heldout","note":"40 sessions written blind, 110 planted statements, 15 decoys. 0 dropped, 4 changed (fixed after, not re-measured), 0 false alarms, 0 drafts blocked; 100 of 395 kept sentences replaced by the jotting word for word."},{"name":"Draft units not supported, fresh held-out split (29 Sep, blind review)","value":"7 / 805","unit":null,"n":805,"split":"heldout","note":"0.87%: 0 contradicted, 0 added clinical claims, 7 of 60 notes (3 medication changes the client reported written as fact). The 0.5% target was not met."},{"name":"Therapy practice drafts not supported (blind review, 70 notes)","value":"13 / 1,292","unit":null,"n":1292,"split":"synthetic","note":"29 / 1,283 before these fixes; 68 of 68 risk statements carried (before: one sentence dropped a written 'no SI')."},{"name":"Cost per note at list price (mean), held-out split","value":"0.0072","unit":"USD","n":60,"split":"heldout","note":"23 model calls: each kept sentence now gets a grounding check and a meaning check (was $0.0051, 15 calls)."},{"name":"Draft units not supported by the jottings (blind review)","value":"25 / 701","unit":null,"n":701,"split":"test","note":"16 unsupported, 9 contradicted; 5 flagged as an added clinical claim. 18 of 48 notes had at least one."},{"name":"Same, one plain prompt to the same model (baseline)","value":"751 / 1574","unit":null,"n":1574,"split":"test","note":"454 flagged as an added clinical claim; 48 of 48 notes had at least one."},{"name":"Draft units not supported, after the fixes (blind review)","value":"5 / 326","unit":null,"n":326,"split":"heldout","note":"24 new sessions written after the test run; 3 of 24 notes had at least one."},{"name":"Audited elements marked right","value":"379 / 384","unit":null,"n":384,"split":"test","note":"Eight elements per session: date, start, stop, modality, interventions, goals, response, plan."},{"name":"Missing elements caught","value":"56 / 57","unit":null,"n":57,"split":"test","note":null},{"name":"Handwritten lines read right","value":"99 / 99","unit":null,"n":99,"split":"test","note":"12 synthetic photos rendered with handwriting fonts; not real handwriting."}],"dataset":"Synthetic post-session jottings written by writer agents from a trap spec: 14 dev, 48 test (12 as rendered handwriting photos), 24 fresh sessions written after the test run (6 photos); gold element labels by the writers. On 29 Sep a second fresh split of 60 sessions (92 planted risk statements, 22 decoys) was written blind before the risk rule was tuned.","held_out":true,"caveats":["Synthetic sessions written by agents from a spec the builder wrote; rendered handwriting fonts, not real handwriting.","The unsupported-sentence numbers come from one blind reviewer model (Claude Opus); no licensed therapist has read the outputs.","The fresh split measured the fixes the test found; later fixes (from the fresh split and a cold-user test) are checked only on dev and unit tests.","Test risk-mention gold counted jokes as risk; the tool no longer does (the blind review called joke-based risk lines added claims).","Latency was measured on a shared gateway under load from other workloads.","The 29 Sep fixes that came from reading the second fresh split's errors are checked only on dev data and a redraft of those sessions.","The verbatim rule's last fix (quote the whole risk jotting) came from reading split #3's errors; a fourth blind split is needed to measure it."],"date":"2026-09-29","doc_url":"https://decosa.ai/metrics/evals/jottings-note"},"stack":{"summary":"For therapists in private practice with a notes backlog. After the session, give it what you already jot: typed bullets, a photo of your handwritten notes, or a dictation of up to a minute. Qwen3.8-27B drafts a DAP, SOAP or BIRP progress note tied to your treatment-plan goals, with each sentence citing the jottings it came from. Before a sentence stays, code checks that every number, family member, diagnosis, mood, risk, progress or advice word in it is in those jottings and that jokes, question marks and 'no intent' survive, and the grounding judge must call it supported; a sentence that fails gets one rewrite, then it is removed and listed. Times, dates and the risk line come from code and your own words. Every risk or safety statement you wrote (suicidal or homicidal thoughts, including \"denies SI\", self-harm, safety plans, access to means, possible reports, substance-use risk) is quoted word for word, any drafted sentence about one uses your own words for it (a paraphrase is replaced by your jotting, quoted), and a draft that would lose one is blocked with the reason. A completeness check lists what payers audit (date, start and stop times, modality, interventions, goals, response, plan, your credential, and risk when you mentioned it) and marks what is missing as [not in your notes]. Catch-up mode drafts up to 30 sessions at once. It never records a session, never diagnoses, assesses risk or recommends treatment, and the signature line stays blank: a draft you review, edit and sign.","tagline":"Your own session jottings in, a draft progress note out, every sentence linked to the jotting it came from. No recording, ever.","deployment":"self-host-first","regulatory_note":"Checked 28 Sep 2026. Illinois HB 1806, the Wellness and Oversight for Psychological Resources Act (225 ILCS 155; signed 4 Aug 2025, effective on becoming law), allows a licensed professional to use AI for administrative or supplementary support, which includes 'preparing and maintaining client records, including therapy notes' (Sec. 10); requires written informed consent when the client's session is recorded or transcribed (Sec. 15(b)), which this tool never does; and forbids letting AI make independent therapeutic decisions, communicate therapeutically with clients, generate recommendations or treatment plans without review, or detect emotions or mental states (Sec. 20(b)); penalty up to $10,000 per violation. Whether a post-session dictation by the clinician counts as transcribing the session is our reading, not settled: ask counsel. The element list follows CGS's LCD L34353 fact sheet (revised 26 May 2021) and First Coast's LCD L33252 and article A57520 (rev. 1 Jan 2025). Therapy notes are PHI under HIPAA; a cloud service that holds encrypted PHI is still a business associate, so real notes run self-hosted until Decosa has BAAs, and the hosted demo takes made-up sessions only. Not legal advice.","components":[{"id":"note","role":"Reading typed jottings, the completeness check (dates, times and risk in code), the number, clinical-claim, qualifier and attribution guards, layouts, catch-up and the signed record (no model; CPU)","name":"decosa-api jottings (decosa_api/verticals/jottings), importing the grounding judge (vertical 17)","hf_repo":null,"license":"AGPL-3.0-or-later","params":null,"quant":null,"vram_gb":0,"memory_gb_estimate":null,"engine":"Python 3.12","receipt_coverage":"partial","in_hosted_demo":null,"tiers":["standard","best"],"alternative_to":null},{"id":"model","role":"Drafts the sentences, tags the audited elements, checks every sentence (the grounding judge), rewrites a failed sentence once, and reads a photo's page","name":"Qwen3.8-27B (NVFP4)","hf_repo":"nvidia/Qwen3.8-27B-NVFP4","license":"Apache-2.0","params":"27.8B","quant":"NVFP4 (MLP NVFP4, GDN/attention FP8) + FP8 KV cache; MTP head, 3 draft tokens","vram_gb":20,"memory_gb_estimate":null,"engine":"vLLM 0.29.0, temperature 0, thinking off, prefix caching","receipt_coverage":"strong","in_hosted_demo":true,"tiers":["standard","best"],"alternative_to":null},{"id":"reader","role":"Second reader for handwriting: reads each line of a photo again, so lines the two readers read differently are flagged for the clinician","name":"PaddleOCR-VL-1.6 (the document reader's page parser)","hf_repo":"PaddlePaddle/PaddleOCR-VL-1.6","license":"Apache-2.0","params":"0.9B","quant":"BF16","vram_gb":3,"memory_gb_estimate":null,"engine":"vLLM 0.29.0 (--gpu-memory-utilization 0.04)","receipt_coverage":"partial","in_hosted_demo":null,"tiers":["best"],"alternative_to":null},{"id":"asr","role":"Transcribes a dictation of up to 60 seconds made after the session (never a session recording)","name":"Qwen3-ASR-1.7B (language pack speech service)","hf_repo":"Qwen/Qwen3-ASR-1.7B","license":"Apache-2.0","params":"1.7B","quant":"BF16","vram_gb":null,"memory_gb_estimate":null,"engine":"decosa language pack speech service (services/lang)","receipt_coverage":"partial","in_hosted_demo":null,"tiers":["best"],"alternative_to":null}],"tiers":[{"id":"standard","label":"Standard · one GPU for the model (hosted demo)","summary":"Qwen3.8-27B drafts and checks; code checks times, dates, risk, numbers and clinical words. Photos are read by Qwen3.8 alone. This is what the hosted demo runs, on made-up sessions only.","components":["note","model"],"hardware":"1x RTX PRO 6000 96 GB (measured) or 1x RTX 5090 32 GB (estimate)","quality_evidence":[{"metric":"Draft sentences and header lines a blind reviewer found not supported by the jottings (48 held-out synthetic sessions)","value":"25 / 701","source":"docs/evals/jottings-note.md, test split, 2026-09-28 (blind Claude Code Opus review)"},{"metric":"The same blind check on 24 new sessions after the fixes the test found","value":"5 / 326","source":"docs/evals/jottings-note.md, fresh split, 2026-09-28"},{"metric":"Same reviewer, the same sessions drafted by one plain prompt to the same model (no checks)","value":"751 / 1574","source":"docs/evals/jottings-note.md, test split"},{"metric":"Audited elements marked present or missing correctly","value":"379 / 384","source":"docs/evals/jottings-note.md, test split"},{"metric":"Elements missing from the jottings that it marked missing","value":"56 / 57","source":"docs/evals/jottings-note.md, test split"}],"latency_note":"measured on the shared gateway: the first sample in seconds one at a time; under a minute per note in the eval with notes in parallel; seconds on the direct route (self-host style).","in_hosted_demo":true,"receipt_coverage":"strong","receipt_note":null,"hosting":null},{"id":"best","label":"Best · adds the second reader and dictation","summary":"Everything in Standard, plus PaddleOCR-VL-1.6 reading each handwritten line again (lines the readers disagree on are flagged) and Qwen3-ASR-1.7B for a dictation of up to a minute.","components":["note","model","reader","asr"],"hardware":"1x RTX PRO 6000 96 GB: Qwen3.8 plus about 3 GB for the reader and the ASR loaded on demand (measured on our server)","quality_evidence":[{"metric":"Handwritten lines read right (12 rendered photos, test split)","value":"99 / 99","source":"docs/evals/jottings-note.md, test split"},{"metric":"Lines flagged 'check the reading' that were in fact read right","value":"16 of 16 flags","source":"docs/evals/jottings-note.md, test split (the second reader's disagreements are mostly punctuation or letter case)"},{"metric":"Dictations of up to 60 s transcribed and drafted; a 190 s recording refused","value":"4 / 4; refused","source":"docs/evals/jottings-note.md, self-host check (synthetic voice)"}],"latency_note":"measured: a photo adds the page read and the line reads; about a minute per note in the test eval on the shared gateway, seconds on the direct route in dev.","in_hosted_demo":true,"receipt_coverage":"partial","receipt_note":"The reader and the ASR are not hosted models: their calls carry the instance's model-call receipts; the model's calls carry gateway receipts when hosted.","hosting":null}],"alternates":[],"services":[{"name":"decosa-api","port":8445,"image":"${DECOSA_REGISTRY}/decosa-api:<tag>","purpose":"GET /jottings/info, /jottings/samples, /jottings/app (the page for the practice's machine); POST /jottings/note (SSE or JSON), /jottings/batch, /jottings/read; POST /record/verify. Keeps no note text."},{"name":"vLLM (model)","port":8114,"image":"vllm/vllm-openai@sha256:c2914767605584b6d8f45686b82de173ecc99e781897aa3d0a66dacd72c51ae1","purpose":"Qwen3.8-27B NVFP4 behind our gateway (hosted) or called directly (self-host)."},{"name":"vLLM (second reader, optional)","port":8498,"image":"vllm/vllm-openai@sha256:c2914767605584b6d8f45686b82de173ecc99e781897aa3d0a66dacd72c51ae1","purpose":"PaddleOCR-VL-1.6 for handwritten lines."}],"tools":[{"name":"CGS Administrators, Outpatient Psychiatry & Psychology Services fact sheet (LCD L34353), revised 26 May 2021","url":"https://www.cgsmedicare.com/pdf/psychotherapy_checklist.pdf","license":"Medicare contractor publication","purpose":"Exact times for time-based codes; modalities and frequency; treatment plan, progress; name, signature and credentials."},{"name":"First Coast Service Options, LCD L33252 Psychiatric Diagnostic Evaluation and Psychotherapy Services (revision effective 1 Jul 2020)","url":"https://www.cms.gov/medicare-coverage-database/view/lcd.aspx?lcdid=33252","license":"US government / Medicare contractor publication","purpose":"Descriptive documentation of interventions, the patient's participation and reaction, goal-oriented progress."},{"name":"First Coast Service Options, Billing and Coding article A57520 (revision effective 1 Jan 2025)","url":"https://www.cms.gov/medicare-coverage-database/view/article.aspx?articleId=57520","license":"US government / Medicare contractor publication","purpose":"Legible signature; date of service; start and stop times or total time."},{"name":"Illinois HB 1806 enrolled text (225 ILCS 155)","url":"https://www.ilga.gov/documents/legislation/104/HB/PDF/10400HB1806lv.pdf","license":"Public law","purpose":"What AI may and may not do in therapy practice in Illinois."}],"hardware":[{"tier":"1x RTX PRO 6000 Blackwell 96 GB","fits":true,"notes":"Measured on our server: the hosted runs and the eval went through the shared gateway; the self-host check ran on the direct route on the same card."},{"tier":"1x RTX 5090 32 GB","fits":true,"notes":"Estimate: Qwen3.8-27B NVFP4 needs about 20 GB of weights plus KV cache; not run for this tool."}],"latency":[{"lane":"one note, the cbt-panic sample, production, one at a time","typical_ms":25462,"source":"measured on production 2026-09-30: smoke module, 5 runs, 18.7-30.3 s (p95 30.3 s); the same run as verification.hosted"},{"lane":"one note, the cbt-panic sample, hosted gateway route, one at a time","typical_ms":16400,"source":"measured on our server 2026-09-28: 5 runs, 9.5-16.6 s, pre-release server on the gateway"},{"lane":"one note, eval, hosted gateway route, 3 in parallel","typical_ms":42400,"source":"measured on our server 2026-09-28: p50 over 48 held-out sessions (p95 64.0 s); gateway shared with other workloads"},{"lane":"one note, direct route (self-host style)","typical_ms":9400,"source":"measured on our server 2026-09-28: p50 over the 14 dev sessions"},{"lane":"catch-up, 20 sessions, hosted gateway route","typical_ms":222300,"source":"measured on our server 2026-09-28: one recorded run, 2 sessions in parallel"}],"benchmark":null,"notes":["A blind reviewer (Claude Opus, given only the jottings, the goals and the note) found 25 of 701 sentences and header lines not supported by the jottings on 48 held-out synthetic sessions; for the same sessions drafted by one plain prompt to the same model it found 751 of 1,574, including 454 added clinical claims (mood, affect, diagnoses, progress judgements).","After fixing what that test found, 24 new sessions gave 5 of 326 not supported; after the fixes from that run and from a cold-user test, the same 24 sessions gave 2 of 332 (no longer held out).","Missing elements: 56 of 57 caught on the test split and 26 of 26 on the fresh one; the fresh split also showed times written on their own line being missed (15 of 166 present elements called missing), fixed afterwards.","Handwriting: 99 of 99 lines on 12 rendered photos read right; the second reader flagged 16 lines, all of them read right (false alarms). Rendered fonts, not real handwriting.","Everything here is synthetic, written by agents; no licensed therapist has read the outputs yet."]},"buyer_facts":[{"label":"Data retention","value":"Nothing stored: the jottings, the photo or the dictation live in memory for the request. The signed record holds hashes of each jotting and sentence and receipt ids, never text; logs carry counts only."},{"label":"What leaves the box","value":"Hosted (made-up sessions only): every model call goes through our gateway to the GPU serving Qwen3.8-27B. Self-hosted on the direct route: nothing leaves the machine."},{"label":"What it will not do","value":"Record or take a session recording; drop, change or paraphrase a risk or safety statement you wrote (a sentence about one quotes your jotting; a draft that would lose one is blocked); add a diagnosis, a mood or mental state, a risk level or a recommendation; fill in a missing time, date or plan; sign or send anything. Your own ? and rule-out lines are held back for you."},{"label":"Input formats","value":"Typed jottings (one per line, up to 6,000 characters), a JPEG, PNG or WebP photo of handwritten jottings (up to 8 MB), or a dictation of up to 60 seconds; DAP, SOAP or BIRP; up to 10 treatment-plan goals; catch-up up to 30 typed sessions."},{"label":"Typical run","value":"One note: a few dozen model calls (each kept sentence gets a grounding check and a meaning check), a fraction of a cent at the gateway list price; under a minute on a busy shared gateway, seconds self-hosted on the direct route. A catch-up: a few minutes."},{"label":"Pricing basis","value":"A flat self-host licence per clinician (price not set). A cold-user therapist said about $25 a month."}],"data_handling":{"page":"/data#jottings-note","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 stored: the jottings, the photo or the dictation live in memory for the request. The signed record holds hashes of each jotting and sentence and receipt ids, never text; logs carry counts 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":"/clinics/jottings-note","input":"runner","lanes":[{"id":"jottings","title":"Your jottings","kind":"list"},{"id":"elements","title":"What an auditor looks for","kind":"list"},{"id":"note","title":"Draft progress note","kind":"markdown"},{"id":"record","title":"Copy and signed record","kind":"json"}],"samples":[{"n":1,"id":"cbt-panic","title":"Cbt panic","deep_link":"/clinics/jottings-note?sample=1&autorun=0"},{"n":2,"id":"dbt-photo","title":"Dbt photo","deep_link":"/clinics/jottings-note?sample=2&autorun=0"},{"n":3,"id":"couples-gaps","title":"Couples gaps","deep_link":"/clinics/jottings-note?sample=3&autorun=0"},{"n":4,"id":"catch-up","title":"Catch up","deep_link":"/clinics/jottings-note?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/jottings-note-hosted.md","selfhost":"/prompts/jottings-note-selfhost.md","assemble":"/prompts/jottings-note-assemble.md","mac":null},"rehearsal":{"bundle":"/samples/jottings-note.zip","bundle_url":"https://decosa.ai/samples/jottings-note.zip","folder":"/samples/jottings-note/","expected":"/samples/jottings-note/expected.json","files":["/samples/jottings-note/expected.json","/samples/jottings-note/inputs/details-cbt.json","/samples/jottings-note/inputs/goals-cbt.json","/samples/jottings-note/inputs/goals-couples.json","/samples/jottings-note/inputs/jottings-cbt.txt","/samples/jottings-note/inputs/jottings-couples.txt"],"bytes":3093,"checks":["every audited element is in the CBT jottings, so nothing is missing","the risk line carries the jotting as written","the start and stop times are the ones written, with the minutes between them","the mother's opinion never becomes a diagnosis","no sentence was kept without a jotting behind it","the couples session is missing its start and stop times and its plan, and the draft says so","missing elements are marked, not filled in","the joke keeps its 'no intent' (in the note, or listed beside it as written)","a joke is not a risk mention","a session recording is refused","the signed record verifies","every model call has a signed receipt"],"licence":"Synthetic: the sessions, clients and clinicians are invented (decosa_api/verticals/jottings/data/samples.json). Part of decosa-api, AGPL-3.0-or-later.","about":"Two made-up therapy sessions. The first has every element an auditor looks for, plus a trap: the client's mother thinks she has bipolar disorder, which must stay the mother's opinion. The second has no start or stop time and no plan, and a joke about violence that must stay a joke (and is not a risk mention). The tool must draft a DAP and a SOAP note where every sentence cites a jotting, list the missing elements as [not in your notes] instead of filling them in, carry the risk line as written, refuse a session recording, and sign a record that verifies.","run":{"containers":"docker compose exec api python scripts/rehearse.py jottings-note","checkout":"python scripts/rehearse.py jottings-note --bundle jottings-note.zip --base-url http://127.0.0.1:8445","mac":".venv/bin/python scripts/rehearse.py jottings-note"},"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=jottings-note","data":"/api/hardware.json","tiers":[{"id":"standard","gpu_gb":57.6,"basis":"stack","unknown":[]},{"id":"best","gpu_gb":65.7,"basis":"estimate","unknown":[]}],"mac":null},"links":{"page":"/clinics/jottings-note","json":"/use-cases/jottings-note.json","metrics":"/metrics/jottings-note","console":"/clinics/jottings-note","console_sample":"/clinics/jottings-note?sample=1&autorun=0","stack":"/clinics/jottings-note#stack","try_live":"/clinics/jottings-note","watch":"/clinics/jottings-note","build":"/clinics/jottings-note#build","self_host":"/clinics/jottings-note#self-host","prompts":{"hosted":"/prompts/jottings-note-hosted.md","selfhost":"/prompts/jottings-note-selfhost.md","assemble":"/prompts/jottings-note-assemble.md","mac":null}}}