Overview
Sully.ai provides built-in SOAP note generation, but many practices need more control over their clinical documentation. When standard SOAP notes do not match your workflow, you have two powerful customization options:- Note Styles: Let Sully learn from a sample note you provide
- Note Templates: Define precise structure with full control over sections, formatting, and content
Note Styles Deep Dive
Note Styles allow Sully to learn your preferred documentation format by analyzing a sample note you provide. This is the fastest way to customize output without defining explicit structure.How Sully Learns from Your Sample Note
When you create a Note Style, Sully analyzes your sample to understand:- Section organization: How you structure information (headers, order, groupings)
- Writing style: Your preferred tone, sentence structure, and terminology
- Level of detail: How verbose or concise your notes typically are
- Formatting conventions: Use of lists, paragraphs, abbreviations
What Makes a Good Sample
Your sample note quality directly impacts the output. Effective samples share these characteristics:| Characteristic | Why It Matters |
|---|---|
| Consistent structure | Sully needs clear patterns to learn from |
| Clear section headers | Helps identify logical groupings |
| Representative content | Should reflect typical visit complexity |
| Complete sections | Include all sections you want in generated notes |
| Explicit formatting | Be intentional about lists vs. paragraphs |
Creating Effective Samples
Follow these guidelines when preparing your sample note:- Include all sections you want: If you want a “Social History” section, include it in your sample
- Be explicit about formatting: Use bullet points where you want lists, paragraphs where you want prose
- Show preferred terminology: Use your actual clinical abbreviations and phrasing
- Demonstrate detail level: If you want thorough assessments, write a thorough assessment
Limitations of Note Styles
While Note Styles are convenient, they have inherent limitations:- Less precise than templates: Output may vary slightly between generations
- Learning interpretation: Sully interprets your sample, which may not always match your intent exactly
- No structured output: Results are text-only, not JSON with discrete sections
- Harder to integrate with EHRs: Free-text output requires additional parsing
Note Templates Deep Dive
Note Templates give you explicit control over every aspect of your note structure. You define sections, specify prompts for content generation, and set formatting properties.Full Schema Reference
NoteTemplate
The top-level object that defines your template.| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for the template |
title | string | Yes | Display title for the template |
global_prompt | string | No | Instructions that apply to all sections |
sections | Section[] | Yes | Ordered list of sections |
HeadingSection
Defines a section header that can contain nested sections.| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier |
type | string | Yes | Must be "heading" |
properties.level | number | Yes | Heading level (0-6) |
properties.text | string | Yes | The heading text |
properties.bold | boolean | No | Whether to bold the heading |
properties.italic | boolean | No | Whether to italicize the heading |
properties.hideIfEmpty | boolean | No | Hide if no content in children |
children | Section[] | Yes | Nested sections under this heading |
TextSection
Defines a text content block with AI-generated content.| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier |
type | string | Yes | Must be "text" |
prompt | string | Yes | Instructions for generating this text |
properties.detail_level | string | No | Content depth (see below) |
properties.tone | string | No | Writing tone (see below) |
properties.formatting_style | string | No | "markdown" or "plain" |
properties.min_sentences | number | No | Minimum sentence count |
properties.max_sentences | number | No | Maximum sentence count |
properties.hideIfEmpty | boolean | No | Hide if no relevant content |
properties.label | string | No | Inline label before text |
properties.bold_label | boolean | No | Bold the label |
| Level | Description |
|---|---|
exhaustive | Maximum detail, nothing omitted |
detailed | Comprehensive with full context |
standard | Balanced detail (default) |
brief | Essential information only |
minimal | Bare minimum facts |
| Tone | Description |
|---|---|
formal | Professional medical language (default) |
casual | Conversational but professional |
technical | Dense clinical terminology |
friendly | Approachable patient-facing |
instructional | Step-by-step guidance |
ListSection
Defines a bulleted or numbered list with AI-generated items.| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier |
type | string | Yes | Must be "list" |
prompt | string | Yes | Instructions for generating list items |
properties.list_type | string | Yes | "bullet" or "numeric" |
properties.min_items | number | No | Minimum item count |
properties.max_items | number | No | Maximum item count |
properties.detail_level | string | No | Content depth per item |
properties.tone | string | No | Writing tone |
properties.hideIfEmpty | boolean | No | Hide if no items generated |
properties.emptyPlaceholder | string | No | Text to show if empty |
Complete Template Examples
Primary Care SOAP Template
A comprehensive template for general primary care visits.Cardiology Consultation Template
A specialty template with cardiology-specific sections.Brief Follow-Up Template
A minimal template for quick follow-up visits.Using Templates with the API
Alpha: AI Template Generation
Instead of manually building templates, you can use AI to generate them from sample notes or refine existing templates.Two Modes
| Mode | Use Case |
|---|---|
| Generation | Create a new template from scratch using sample notes |
| Refinement | Improve an existing template based on instructions or before/after comparisons |
Generation Mode
Provide 1-5 sample notes, and Sully will analyze them to create a matching template.Refinement Mode
Improve an existing template with specific instructions or by showing desired changes.Authentication Difference
The Alpha API uses Bearer token authentication instead of the
X-API-Key header used by the stable API:Migrating from Styles to Templates
When to Migrate
Consider migrating from Note Styles to Templates when you need:| Requirement | Why Templates Help |
|---|---|
| EHR integration | Structured JSON output maps directly to EHR fields |
| Consistent formatting | Templates guarantee the same structure every time |
| Section-level control | Set different detail levels and tones per section |
| Compliance requirements | Ensure required sections are always present |
| Quality assurance | Easier to validate structured output programmatically |
Migration Process
- Analyze your style output: Generate several notes using your current style
- Identify patterns: Note the consistent sections, headers, and formatting
- Map to template sections: Create HeadingSection, TextSection, and ListSection objects
- Write effective prompts: Translate your implicit expectations into explicit instructions
- Test and iterate: Compare template output to style output and adjust
Example Migration
Original Style Sample (excerpt):Benefits After Migration
- Predictable output: Same structure for every note
- Easier validation: Check that required sections have content
- Better EHR mapping: Parse JSON directly into your system
- Fine-grained control: Adjust individual section behavior without affecting others
- Version control: Store templates as JSON and track changes over time