Closed beta · waitlist BrainScribe is pre-launch. AHPRA-registered specialists practising in Australia — join the first cohort
BrainScribeai
For development · linked from footer only

BrainScribe developer specification.

Written for developers — with clinical rationale alongside each field, so the build stays anchored to how AHPRA-registered specialists actually practise.

Backend build script for the BrainScribe assessment workspace. Captures the field model, banding system, channel-delivery rules, password and notification policy, high-risk flags, report-builder behaviour and the practitioner-preference machine-learning surface.

Draft · v0.7Stack · Next.js · Postgres · S3 · WebRTCRegion · ap-southeast-2 (Sydney)Owner · founding clinician + product
01Backend build

Client file & intake

One record per person. Demographics captured once, conditioning every scale, score and draft that follows. Field-level visibility is layered: smart defaults show what this assessment needs; optional sections expand when the case calls for them.

Required field set

FieldTypeRequiredClinical rationale
titleenumNoMr · Ms · Mx · Dr · Prof · custom string.
preferred_namestringYesWhat the clinician greets the patient with. Used in report.
first_namestringYesLegal first.
family_namestringYesLegal family.
date_of_birthdateYesAge in y/m derived automatically against assessment date.
sex_at_birthenumYesMale · Female · Intersex · Prefer not to disclose. Drives norm tables.
gender_identityenum / stringNoDefaults to "same as sex at birth". Free-text option.
handednessenumYesRight · Left · Mixed.
education_bandenum 1–8YesSee §2 banding.
vocation_bandenum 1–8YesSee §2 banding. ANZSCO-aligned.
sensorymulti-enumNoReading glasses · hearing aids · low vision · low hearing · other (free).
rapport_notetextNoClinician note. Captured on assessment day, not at file creation.

Optional sections (lazy-loaded)

Neurodevelopmental history

Expanded when developmental context matters — paediatric, ADHD, ASD, learning, capacity work.

  • pre_term_weeks · integer 22–37 or null
  • milestone_walk_months · integer or null
  • milestone_language_months · integer or null
  • sld_flags[] · reading · spelling · arithmetic · written expression
  • adhd_flag · boolean + diagnosed_at

Parental education & vocation

Optional. Useful for paediatric, developmental and premorbid estimates in young adults.

  • parent_1.education_band · enum 1–8
  • parent_1.vocation_band · enum 1–8
  • parent_2.education_band · enum 1–8
  • parent_2.vocation_band · enum 1–8
  • Used as input to premorbid intelligence estimates.
Layered disclosure ruleRequired fields render flat. Optional sections render collapsed and tagged with the contexts that auto-expand them (e.g. paediatric referrals auto-expand neurodevelopmental history). The clinician can override either way.
02Backend build

Education & vocation banding

Banding harmonises premorbid estimates and removes free-text noise. Drawn from the Hollingshead Four-Factor framework, adapted to Australian education stages and ANZSCO occupational skill levels.

Education · 8 bands

1Less than year 7Did not complete primary.
2Year 7–9Some secondary, did not complete year 10.
3Year 10Junior secondary certificate or equivalent.
4Year 12 / equivalentHSC, VCE, QCE or interstate equivalent.
5VET / Certificate III–IVTrade qualifications, TAFE certificate.
6Tertiary · undergraduateBachelor degree or advanced diploma.
7Tertiary · postgraduateHonours, masters, professional doctorate.
8Doctoral / specialistPhD, fellowship, specialist medical training.

Vocation · 8 bands (ANZSCO-aligned)

1Not in workforceUnemployment, full-time care, study, retirement.
2LabourerANZSCO 8 · unskilled manual.
3Service / clericalANZSCO 5–6 · customs, retail, hospitality, admin.
4TradeANZSCO 3 · skilled trade qualifications.
5Technician / associate professionalANZSCO 3 · paramedical, technical, drafting.
6Skilled professionANZSCO 2 · teaching, nursing, allied health, engineering.
7High-functioning profession · expertSpecialist medical, senior law, senior academic.
8Executive · principalCEO, partner, senior leadership, judiciary.
Banding contractBands are immutable integers (1–8). Free-text occupation captured separately as vocation_label. Premorbid models pull vocation_band, education_band and parental.education_band as features.
04Backend build

Scale administration channels

Every scale, every channel. On-site (PC, phone, tablet, iPad), or by unique link emailed to the patient or to an informant — with distinct wording, distinct return path and distinct response storage.

Channel matrix

ChannelAuthIdentifier in transitResumableClinical rationale
in_clinic.deviceclinic sessionnoneYesHand-across-the-desk flow. No email required.
patient.email_linksingle-use tokensubstitutedYesPatient script. Returns to client.email.
informant.email_linksingle-use tokensubstitutedYesInformant script. Returns to informant.email. Separate token namespace from patient.
patient.sms_linksingle-use token + DOBsubstitutedYesOptional. Same token rules as email.

Required uniqueness

distinct patient + informant emails script_locale = patient | informant resume token ≠ access token token TTL = clinician setting return path = clinician inbox + record

Result flow

On completion the platform:

  1. Stores raw responses, computed scale score, percentile and z (where applicable) on the assessment record.
  2. Logs time_to_complete_seconds and pause_count.
  3. Emails the clinician a broad result, with a platform link. Detail requires the clinician's platform password.
  4. If cc_client_broad_result = true, sends the client a broad, plain-language summary with the instruction "discuss with your clinician at your next appointment".
  5. If any high-risk trigger fires (see §6), promotes the notification to priority and surfaces a banner in the clinician dashboard.
05Backend build

Notifications, reminders & passwords

Auto-reminders sent until completion or window expiry. Detail access gated behind the clinician's platform password. Broad results may be cc'd to the client, full results may not.

Reminder cadences (clinician-configurable)

PresetSequenceStop on
tight+24 h, +48 h, +72 h, +5 dcompletion · or clinician cancel
standard+48 h, +5 d, +10 dcompletion · or clinician cancel
gentle+5 d, +14 dcompletion · or clinician cancel
customclinician-specified offsets, max 6completion · or clinician cancel

Password & access rules

  • Clinician platform password rotates every 90 days; minimum 14 chars, passphrase-friendly.
  • 2FA required for full-result view from a new device.
  • cc-to-client option ships only the broad result; never percentile, z, or item-level responses.
  • Email notifications never contain identifying clinical content. They contain: client initials, scale name, completion status, link to platform.
06Backend build

High-risk flags

Priority-review triggers raise the result to the top of the clinician's queue and surface a banner. They never substitute for clinical judgement, but they ensure the clinician sees the right result first.

Priority triggers (illustrative · clinician must verify scale-by-scale)
  • PHQ-9 item 9 (self-harm / suicide) endorsed at ≥ 1.
  • C-SSRS or equivalent positive screen.
  • PHQ-9 total ≥ 20 · severe.
  • GAD-7 total ≥ 15 · severe.
  • K10 total ≥ 30 · very high.
  • Any clinician-defined custom rule (per-scale, per-item, per-score band).

Notification path

  1. Email + in-platform notification, marked priority.
  2. If clinician unread for priority_escalation_window (default 4 h, business hours), escalation rule fires — second clinician on the practice escalation list is notified.
  3. Banner persists on the client record until reviewed and acknowledged by the clinician.
07Backend build

Assessment builder

Practitioner builds the assessment from client-file context (referral reason, background, prior scales). System suggests scales and tests; practitioner chooses; practitioner enters raw and standardised scores against selected norms.

Suggestion model inputs

referral_reasonclient_age_bandeducation_band prior_assessments[]prior_diagnoses[] specialty_templateclinician_preferences

Score entry contract

// each performance-test entry
{
  "test_code": "WAIS5_DSF",
  "norm_set": "AU_2024_age_education",
  "raw": 36,
  "scaled": 11,         // optional, derived if absent
  "z": 0.33,
  "t": 53,
  "percentile": 63,
  "qualitative": "average",
  "administered_at": "2026-03-25T10:14:00+10:00",
  "entered_by": "clinician_id"
}

The platform validates that raw is within the test's allowed range and that derived metrics (z, t, percentile) reconcile to within rounding tolerance. Conflicting entries trigger a soft warning, not a hard error — the clinician may have a reason.

Context dimensions

  • context.purpose · diagnostic · capacity · forensic · educational · screening · monitoring
  • context.reader_level · lay · referring GP · specialist (neurologist, geriatrician) · legal · expert
  • context.tone · clinical · plain-language · medico-legal
08Backend build

Report drafting & reader tuning

The report is assembled, not generated. Each section is built from named inputs the clinician can inspect. Output features and styles customisable without a pre-determined menu of "report templates".

Reader tuning surface

Audience

  • Lay reader
  • Referring GP
  • Specialist (medical)
  • Legal / tribunal
  • Expert peer

Output style controls

  • Heading hierarchy (H2 / H3 nesting)
  • Per-section length (terse · standard · expanded)
  • Quantitative density (z + percentile · percentile only · qualitative only)
  • Domain order (clinician-defined)
  • Reasoning style (deductive · narrative · summary-first)

Section provenance

// per drafted section
{
  "section": "cognitive_profile",
  "inputs": [
    "score:WAIS5_DSF",
    "score:CVLT3_DELAYED",
    "observation:fluent_speech",
    "transcript:span(11:42-12:18)"
  ],
  "reader_level": "specialist_medical",
  "version": 3,
  "clinician_edited": true
}
09Backend build

Practitioner-preference learning

The platform learns each clinician's voice — preferred phrasing, section ordering, sentence length, framing of qualitative results, formulation style — and applies it to subsequent drafts.

Signal capture

  • Edit-distance between drafted and final text, per section, per scale.
  • Insert / delete patterns on heading words, transition phrases, hedging language.
  • Reordering of domain sections.
  • Length deltas after clinician edit.
  • Explicit preferences (template-level toggles).

Application

Preferences apply at the clinician scope, with optional roll-up to the practice (Clinic tier). Preferences are never applied to clinical content (scores, percentile boundaries, qualitative descriptors) — they apply only to phrasing, structure and framing.

Preference firewallPreference learning operates on style, not clinical reasoning. Diagnostic impressions, score interpretation and the qualitative bands tied to z/percentile boundaries are immutable — they come from the scale's normative documentation, not from the clinician's prior reports.
10Backend build

Data model & record contract

A single assessment_record object aggregates client file, scales, scores, telehealth artefacts, transcript spans, observations and drafted sections. Every field is dated, attributed and versioned.

Top-level shape

assessment_record {
  id: "A8C2-v3",
  client_id: "A8C2",
  context: { purpose, reader_level, tone, specialty },
  scales: [] ScaleAdministration,
  scores: [] PerformanceTestScore,
  telehealth: [] SessionArtefact,
  transcript: TranscriptArtefact,
  observations: [] ClinicianObservation,
  consent: [] ConsentObject,
  draft: ReportDraft,
  audit: AuditTrail
}

Audit trail invariant

Every mutation appends to audit with (field, before, after, actor, timestamp, source). Audit records are append-only and exported with the report on request.

11Communication

Front-facing site vs backend spec

A note on what we show on the marketing site and what we keep in this document.

On the marketing site

  • Capability — that BrainScribe captures the client file, runs scales on every channel, captures consent, and drafts the integrated report.
  • Concrete UI fragments — one intake-form mock, one source-to-draft trace, one telehealth scene. Enough to make the product real without enumerating every field.
  • Reassurance — privacy, identifier substitution, clinician authorship, Australian focus.
  • One link — to this dev spec, for partners and engineers.

In this developer specification

  • Every field name, type and required flag.
  • Banding tables (education, vocation, parental).
  • Channel matrix, token rules, password & cc policy.
  • High-risk triggers and escalation paths.
  • Score-entry contract, reader-tuning surface, section provenance.
  • Preference-learning signal capture and firewall.
  • Top-level data shape and audit-trail invariants.

Marketing copy answers "what will this do for my Saturday?". This document answers "how do we build it so the answer is true?".