Skip to main content
Your conversation data is valuable for understanding customer needs, meeting compliance requirements, and performing custom analysis. botBrains provides flexible export options to download conversations, messages, and user data in multiple formats for use outside the platform.

Why Data Export Matters

Exporting your data unlocks capabilities beyond the built-in analytics dashboard:
  • Compliance and auditing - Meet GDPR, CCPA, and internal data governance requirements
  • Custom analytics - Analyze data with your preferred tools (Python, R, Excel, Tableau)
  • Backup and archival - Maintain historical records for regulatory or business purposes
  • Cross-platform insights - Combine conversation data with CRM, product analytics, or business intelligence tools
  • AI-powered analysis - Use tools like ChatGPT or Claude to ask custom questions about your data
  • Report generation - Create executive reports or team dashboards with exported data
All exports respect your current permissions. You can only export data from projects you have access to.

Export Types

botBrains offers two complementary approaches to data export, each optimized for different use cases.

Full Dataset Export

The Full Dataset Export provides a complete snapshot of all your project data in a single asynchronous operation. When to use:
  • Complete data backups
  • Comprehensive analysis requiring all historical data
  • AI-powered analysis with tools like ChatGPT or Claude
  • Data migration to other systems
  • Compliance audits requiring full records
How it works:
  1. Request export with optional date range filter
  2. botBrains processes your entire dataset in the background
  3. Receive email notification when export is ready (typically 5-15 minutes)
  4. Download JSONL file via link in email
  5. File remains available for 7 days
Format: JSONL (JSON Lines) - Each line contains a complete user object with nested conversations and messages. Limitations:
  • Limited to 2 exports per day per project (across all team members)
  • Processing time varies with dataset size (typically 5-15 minutes)
  • Downloads available for 7 days after generation
Use Full Export when you need complete data relationships preserved. The nested JSONL format maintains the natural hierarchy: Users → Conversations → Messages.

Entity-Specific Export

Entity exports provide immediate downloads of specific data types with customizable fields and formats. When to use:
  • Quick exports of filtered data
  • Spreadsheet analysis in Excel or Google Sheets
  • Targeted reports (e.g., “all escalated conversations this month”)
  • Specific field subsets to reduce file size
  • Sharing sanitized data with external stakeholders
How it works:
  1. Navigate to entity list page (Conversations, Messages, or Users)
  2. Apply filters and search criteria
  3. Click Export button
  4. Select format and fields
  5. Download immediately
Available entities:
  • Conversations - Metadata, status, ratings, and nested messages
  • Messages - Individual messages with text content, tags, and analytics
  • Users - Contact information and engagement metrics (no nested conversations)
Formats:
  • CSV - Best for Excel, Google Sheets, or simple analysis
  • JSONL - Ideal for programmatic processing or data pipelines
  • Excel (CSV) - CSV optimized for Excel compatibility
Limitations:
  • Maximum 10,000 rows per export
  • Exports respect active filters from the list page
For datasets larger than 10,000 rows, use multiple filtered exports or the Full Dataset Export.

Choosing the Right Export Method

ScenarioRecommended MethodFormat
Complete backup of all dataFull ExportJSONL
Analysis in Excel or Google SheetsEntity ExportCSV or Excel
Filtered conversation subsetEntity ExportCSV or JSONL
AI-powered custom analysisFull ExportJSONL
GDPR data requestFull ExportJSONL
Weekly metrics reportEntity ExportCSV
Import to analytics platformFull Export or Entity ExportJSONL
Share with non-technical stakeholdersEntity ExportExcel

Performing a Full Dataset Export

Prerequisites

Before requesting a full export:
  • Ensure you have sufficient project permissions (Admin or Owner role)
  • Check that you haven’t already requested 2 exports today
  • Verify your email address is correct to receive the download link

Step-by-Step Instructions

Step 1: Navigate to Data Export Go to Settings → Data Export in your project. Step 2: Configure Export Options In the Full Dataset Export section, click Full Export. Optional: Set Date Range
  • Leave empty to export all historical data
  • Set “From” date to export data created after a specific date
  • Set “To” date to export data created before a specific date
  • Use date filters to create incremental backups
Example date range scenarios:
All data: Leave both fields empty
Last 30 days: From = 30 days ago, To = today
Q1 2024: From = Jan 1 2024, To = Mar 31 2024
Since last backup: From = previous backup date, To = empty
Step 3: Start Export Job Click Start Export Job. You’ll see a confirmation with your task ID. Step 4: Wait for Email Processing typically takes 5-15 minutes depending on data volume. You’ll receive an email titled “Your botBrains Data Export is Ready” with:
  • Task ID for reference
  • Download link (valid for 7 days)
  • File size information
  • Expiration date
Step 5: Download File Click the download link in the email. The JSONL file will download to your computer.
Download links expire after 7 days. If you need the data later, request a new export. Downloads cannot be extended or regenerated after expiration.

Rate Limits and Scheduling

Full exports are limited to 2 per day per project across all team members. This prevents system overload while allowing regular backups. Best practices for scheduled exports:
  • Create a dedicated export schedule (e.g., weekly on Sundays)
  • Coordinate with team members to avoid conflicts
  • Use date ranges for incremental exports instead of full exports
  • Archive downloads systematically with clear naming: botbrains_export_2024-03-15.jsonl
If you hit the rate limit: You’ll receive an error message indicating when you can retry (typically the next calendar day in your timezone). The error includes the exact retry time.

Performing Entity-Specific Exports

Exporting Conversations

Step 1: Navigate to Conversations Go to Analyze → Conversations. Step 2: Apply Filters Use the filter panel to narrow results:
  • Date range - Conversations created within specific dates
  • Status - Resolved, Unresolved, Escalated
  • Rating - Filter by CSAT score (1-5)
  • Topic - Conversations about specific topics
  • Channel - Web, Zendesk, Salesforce, Slack, etc.
  • Labels - Custom conversation labels
  • Search - Text search across conversation content
Example filter combinations:
Poorly-rated escalations: Status = Escalated, Rating = 1-2
This month's resolved chats: Date = Last 30 days, Status = Resolved, Channel = Web
Premium customer feedback: Label = Premium, Rating = 1-5
Step 3: Open Export Dialog Click the Export button in the top-right corner of the conversation list. Step 4: Choose Format Select your preferred export format:
  • CSV - Opens in Excel, Google Sheets, or text editors
  • JSONL - One JSON object per line, easy to process programmatically
  • Excel (CSV) - CSV with Excel-specific formatting
Step 5: Select Fields (Optional) By default, all available fields are exported. To reduce file size or focus on specific data:
  1. Click Clear to deselect all fields
  2. Check only the fields you need
Common conversation fields:
  • id - Unique conversation identifier
  • created_at - When conversation started
  • updated_at - Last message timestamp
  • status - Resolved, Unresolved, Escalated
  • user_id - Associated user identifier
  • rating - CSAT score (0-5)
  • channel - Communication channel
  • messages - Nested array of all messages (CSV exports messages as separate rows)
Leave all fields selected for your first export. Once you understand the data structure, create focused exports with specific fields to optimize file size.
Step 6: Export Data Click Export. The file downloads immediately to your browser’s download folder.

Exporting Messages

Messages export individual messages as separate rows, useful for text analysis, sentiment tracking, or message-level reporting. Step 1: Navigate to Messages Go to Analyze → Message Search (or use the Messages tab). Step 2: Apply Filters Filter messages by:
  • Sender type - User, Assistant, Operator
  • Content - Text search
  • Date range - Message creation dates
  • Sentiment - Positive, Neutral, Negative
  • Topics - Associated conversation topics
  • Tool usage - Messages that used specific tools
Step 3: Export Follow the same export process as conversations (format selection, field selection, download). Common message fields:
  • id - Unique message identifier
  • text - Message content
  • role - user, assistant, operator
  • conversation_id - Parent conversation
  • created_at - Message timestamp
  • sentiment - Detected emotional tone
  • topics - Detected or assigned topics

Exporting Users

User exports provide contact information and engagement metrics without nested conversations. Step 1: Navigate to Users Go to Analyze → Users (or Users tab). Step 2: Apply Filters Filter users by:
  • Activity date - Last interaction date
  • Conversation count - Users with X or more conversations
  • Email status - Has email, no email
  • Custom attributes - Any external attributes you’ve set via SDK
Step 3: Export Follow the same export process. Common user fields:
  • id - Unique user identifier
  • email - User email address
  • name - User display name
  • created_at - First seen date
  • last_seen_at - Most recent activity
  • conversation_count - Total conversations
  • message_count - Total messages sent
  • external_attributes - Custom data from your application
User exports do NOT include nested conversations or messages. Use Conversation export or Full Export to get complete user interaction history.

Understanding Export Formats

CSV (Comma-Separated Values)

Best for: Excel, Google Sheets, quick manual analysis Structure:
id,created_at,status,rating,user_id,channel
123,2024-03-15T10:30:00Z,resolved,5,456,web
124,2024-03-15T11:00:00Z,escalated,2,789,zendesk
Considerations:
  • Nested data (like messages in conversations) creates multiple rows
  • Text fields are quoted if they contain commas
  • Easy to open and read
  • Limited to flat data structures
  • Special characters may need escaping
When to use:
  • Creating charts or pivot tables in spreadsheet software
  • Sharing with non-technical team members
  • Quick visual inspection of data
  • Simple filtering and sorting

JSONL (JSON Lines)

Best for: Programming, data pipelines, AI analysis Structure:
{"id": 123, "status": "resolved", "rating": 5, "messages": [{"id": 1, "text": "Hello"}, {"id": 2, "text": "Hi there!"}]}
{"id": 124, "status": "escalated", "rating": 2, "messages": [{"id": 3, "text": "Help needed"}]}
Considerations:
  • Each line is a complete, valid JSON object
  • Preserves nested data structures
  • Easily processed line-by-line in any language
  • More compact than pretty-printed JSON
  • Human-readable but not as intuitive as CSV
When to use:
  • Importing to data warehouses or analytics platforms
  • Processing with Python, JavaScript, or other languages
  • Uploading to AI tools (ChatGPT, Claude) for analysis
  • Maintaining data relationships (users → conversations → messages)

Excel (CSV)

Best for: Microsoft Excel users Structure: Same as CSV, but with Excel-specific formatting optimizations:
  • UTF-8 BOM for proper character encoding
  • Optimized delimiter handling
  • Better date format compatibility
When to use:
  • You exclusively use Microsoft Excel
  • Working with international characters or special symbols
  • Need Excel to auto-detect data types correctly

Working with Media Files

Exports do not contain actual media files (images, videos, documents). Instead, they include time-bound download links for each media attachment. In your exported data, media fields contain URLs like:
{
  "id": "msg_123",
  "text": "Here's the screenshot",
  "attachments": [
    {
      "id": "file_456",
      "type": "image/png",
      "filename": "screenshot.png",
      "url": "https://storage.botbrains.io/files/file_456?expires=1234567890&signature=abc123",
      "size": 245678
    }
  ]
}
URL characteristics:
  • Pre-signed with temporary access credentials
  • Valid for a limited time (typically 7 days)
  • Direct download - no authentication required
  • Original file quality and format preserved

Archiving Media Files

If you need permanent copies of media files: Option 1: Manual Download
  1. Export your data
  2. Extract media URLs from export file
  3. Download each file before URLs expire
  4. Store in your preferred storage system
Option 2: Automated Download Use a script to process exports and download media:
import json
import requests
from pathlib import Path

def download_media_from_export(export_file, output_dir):
    """Download all media files from a JSONL export"""
    output_path = Path(output_dir)
    output_path.mkdir(exist_ok=True)

    with open(export_file) as f:
        for line in f:
            user = json.loads(line)
            for conversation in user.get('conversations', []):
                for message in conversation.get('messages', []):
                    for attachment in message.get('attachments', []):
                        url = attachment['url']
                        filename = attachment['filename']

                        # Download file
                        response = requests.get(url)
                        if response.status_code == 200:
                            filepath = output_path / filename
                            filepath.write_bytes(response.content)
                            print(f"Downloaded: {filename}")
                        else:
                            print(f"Failed: {filename}")

# Usage
download_media_from_export('export.jsonl', 'media_archive/')
Media URLs expire after a limited time. Download media files promptly after exporting if you need permanent archives.

Custom Analysis with AI Tools

One of the most powerful uses of exported data is custom analysis with AI tools like ChatGPT, Claude, or Gemini. These tools can answer questions that go beyond built-in metrics.

Prerequisites for AI Analysis

Data Privacy Compliance Before uploading data to external AI tools:
  1. Review your organization’s data policies - Ensure AI tool usage complies with GDPR, CCPA, HIPAA, or other regulations
  2. Check AI provider policies - Verify data handling, retention, and training policies
  3. Consider data sanitization - Remove PII (emails, names, phone numbers) if required
  4. Use business subscriptions - Most AI providers offer business plans with stricter data protections
  5. Document your decision - Maintain records of compliance verification
You are responsible for ensuring appropriate use of exported data. botBrains is not liable for misuse or policy violations when sharing data with external services. Most organizations allow ChatGPT Business with training disabled, but verify your specific policies around sensitive data.
Choose the Right Format
  • Use JSONL or CSV format for AI analysis
  • Full Export works best for complex cross-conversation questions
  • Entity exports work for focused analysis on specific data types

Base Prompt Template

Upload your exported file to your AI tool, then use this prompt template before asking your question:
You are a data analyst, using your Code Interpreter / Python Interpreter tools to write code and answer my questions. You've been given a JSON Lines file, of the conversations had by the ai-assistant, operators (human agents) and customers. Each line is a user profile, with all their conversations and all messages within those conversations, including metadata. For legacy reasons, not all conversations have a user, so a mock user with ID 00000000-0000-0000-0000-000000000000 is assigned all other conversations.

Follow this workflow:
1. Familiarize yourself with the data model by looking at the first 5 lines.
2. Think about my question and the appropriate chart / way to answer my question with the given values.
3. Work to write the code and find appropriate outputs format (chart-type, tables, singular values...) for the data.

Question: [Your question here]
Prompting Strategy: For best results, ask the AI to first filter data by your criteria (poor ratings, specific attributes), then analyze larger message content chunks to identify and summarize patterns.

Example Analysis Questions

Example 1: Identify Most Active Users

Export needed: Full Export Question:
Which users are the most active, as measured by messages? Count both user and assistant messages per user. Output a table sorted by message count descending, showing user ID, email, and total message count.
Use case: Identify power users, potential advocates, or users who may need extra support Who benefits: Product managers, customer success teams

Example 2: Analyze Premium Customer Issues

Export needed: Full Export Question:
What is the common issue users with external_attributes.plan = PREMIUM describe? First filter users by this attribute, then read their conversation messages. Analyze the content to identify recurring themes, issues, or feature requests. Output a summary with top 5 themes and example conversation IDs.
Prerequisites: You must set external attributes via Web SDK or API to segment users by plan Use case: Prioritize improvements for high-value customers, identify churn risks Who benefits: Product managers, account managers, product teams

Example 3: Understand Customer Demographics

Export needed: User Export Question:
How many users have an email associated? What is the most common email domain? Extract domains from email addresses, group by domain, and show a table with domain counts sorted descending. Also show the percentage of users with vs without emails.
Use case: Understand customer composition, identify B2B vs B2C mix Who benefits: Marketing teams, sales teams

Example 4: Track Feature Interest

Export needed: Conversations Export (includes messages) Question:
How many users ask about our Product/Feature "AcmeProduct"/"AcmeFeature"? Lookup the keywords in the messages content and output matching conversations. Read those and summarize common questions or concerns.
Use case: Validate product roadmap, measure feature demand, identify gaps in documentation Who benefits: Product managers, marketing teams

Example 5: Improve Low-Rated Conversations

Export needed: Conversations Export (includes messages) Question:
Search for conversations with poor rating (1-2). Read the message content in these conversations to identify product or feature feedback, pain points, and complaints. Categorize the issues and output the top 5 categories with example conversation IDs and representative quotes.
Use case: Systematically improve AI responses, identify product issues, reduce DSAT Who benefits: Chatbot improvement teams, product teams, support operations

Advanced Analysis Patterns

Sentiment Trend Analysis
Plot sentiment scores over time, grouped by week. Identify weeks with significant negative sentiment spikes and list the conversation topics during those periods.
Conversation Flow Analysis
For conversations with ratings of 1-2, analyze the message sequence. How many messages does it take before sentiment turns negative? What triggers the sentiment change? Provide examples.
Topic Distribution by User Segment
Group users by external_attributes.company_size (small, medium, large). For each segment, show the distribution of conversation topics. Identify which topics are unique to each segment.
Tool Effectiveness Analysis
Identify conversations where the AI used specific tools (search_web, handoff, etc.). Compare the average rating of conversations with tool usage vs without. Determine if certain tools correlate with higher or lower satisfaction.

Data Structure Reference

Understanding the data structure helps you select the right fields and interpret exports correctly.

Full Export JSONL Structure

{
  "id": "user_123",
  "email": "user@example.com",
  "name": "John Doe",
  "created_at": "2024-01-15T10:00:00Z",
  "last_seen_at": "2024-03-15T14:30:00Z",
  "conversation_count": 5,
  "message_count": 23,
  "external_attributes": {
    "plan": "premium",
    "company": "Acme Corp"
  },
  "conversations": [
    {
      "id": "conv_456",
      "created_at": "2024-03-15T10:00:00Z",
      "updated_at": "2024-03-15T10:15:00Z",
      "status": "resolved",
      "rating": 5,
      "channel": "web",
      "topics": ["billing", "pricing"],
      "messages": [
        {
          "id": "msg_789",
          "text": "How do I upgrade my plan?",
          "role": "user",
          "created_at": "2024-03-15T10:00:00Z",
          "sentiment": "neutral"
        },
        {
          "id": "msg_790",
          "text": "I'd be happy to help you upgrade! You can...",
          "role": "assistant",
          "created_at": "2024-03-15T10:00:05Z",
          "tool_calls": []
        }
      ]
    }
  ]
}
Key relationships:
  • Each line = one user
  • Users contain array of conversations
  • Conversations contain array of messages
  • Maintains full hierarchy and relationships

Conversation Export Structure

JSONL format:
{
  "id": "conv_456",
  "user_id": "user_123",
  "created_at": "2024-03-15T10:00:00Z",
  "status": "resolved",
  "rating": 5,
  "messages": [...]
}
CSV format:
id,user_id,created_at,status,rating,message_id,message_text,message_role
conv_456,user_123,2024-03-15T10:00:00Z,resolved,5,msg_789,"How do I upgrade?",user
conv_456,user_123,2024-03-15T10:00:00Z,resolved,5,msg_790,"I'd be happy to help",assistant
Note: CSV format duplicates conversation fields for each message row.

Message Export Structure

Messages as individual records, useful for message-level analysis:
{
  "id": "msg_789",
  "conversation_id": "conv_456",
  "text": "How do I upgrade my plan?",
  "role": "user",
  "created_at": "2024-03-15T10:00:00Z",
  "sentiment": "neutral",
  "topics": ["billing"]
}

User Export Structure

Users without nested conversations:
{
  "id": "user_123",
  "email": "user@example.com",
  "name": "John Doe",
  "created_at": "2024-01-15T10:00:00Z",
  "conversation_count": 5,
  "message_count": 23
}

Common Use Cases

GDPR Data Subject Access Requests

When a customer requests their personal data:
  1. Navigate to Analyze → Users
  2. Search for user by email or ID
  3. Note the user ID
  4. Go to Settings → Data Export
  5. Click Full Export
  6. Download export file
  7. Extract the user’s line from JSONL (contains all conversations and messages)
  8. Provide to data subject
For frequent GDPR requests, create a script to extract specific user data from full exports. Store exports monthly for faster response times.

Weekly Executive Reports

Create a recurring export process:
  1. Every Monday morning, export previous week’s conversations
  2. Filter: Date range = Last 7 days
  3. Export format: CSV
  4. Open in Excel or Google Sheets
  5. Create pivot table summarizing:
    • Total conversations
    • Average CSAT
    • Resolution rate
    • Top topics
  6. Share with stakeholders

Integration with Analytics Platforms

Send data to Tableau, Looker, or similar tools:
  1. Schedule weekly Full Exports (manually or via API if available)
  2. Download JSONL files
  3. Use ETL process to load into data warehouse
  4. Create dashboards combining conversation data with product analytics
  5. Track correlations between product usage and support conversations

Quality Assurance Sampling

Sample conversations for QA review:
  1. Navigate to Analyze → Conversations
  2. Filter: Random sampling (export all, randomly select subset)
  3. Export with fields: id, rating, status, messages
  4. Review sampled conversations for quality
  5. Create improvement tasks based on findings

Compliance Audits

Maintain audit trail for regulatory requirements:
  1. Monthly full export with date range = previous month
  2. Archive JSONL files with naming convention: audit_2024-03_export.jsonl
  3. Store in compliant storage (encrypted, access-controlled)
  4. Maintain index of export dates and file locations
  5. Produce when requested for audits

Troubleshooting

Export Failed or Empty

Symptoms: Export completes but file is empty or contains no data Possible causes:
  • Date range filters exclude all data
  • No data exists for selected entity
  • Active filters on entity page are too restrictive
Solutions:
  • Remove all filters and try again
  • Verify data exists for selected time range
  • Check date range settings (ensure “From” is before “To”)

CSV Not Opening Correctly in Excel

Symptoms: Special characters display incorrectly, columns not separated properly Possible causes:
  • Character encoding mismatch
  • Excel locale settings
Solutions:
  • Use “Excel (CSV)” export format instead of standard CSV
  • Import CSV using Excel’s “Get Data” feature with UTF-8 encoding
  • Open in Google Sheets first, then download as Excel format

Rate Limit Exceeded

Symptoms: Error message “Export limit reached, try again at [time]” Possible causes:
  • Already requested 2 full exports today
  • Another team member requested exports
Solutions:
  • Wait until specified retry time
  • Coordinate with team on export schedule
  • Use entity exports instead (no rate limit)
  • Use date range filters for incremental exports instead of full exports
Symptoms: 403 Forbidden or 404 Not Found when accessing media URLs Possible causes:
  • URLs have expired (typically after 7 days)
  • URLs were copied incorrectly
Solutions:
  • Request new export to get fresh URLs
  • Download media files immediately after export
  • Set up automated download process

Large File Handling

Symptoms: Export file is too large to open in Excel (more than 1 million rows) Possible causes:
  • Dataset exceeds spreadsheet limits
  • Conversation export with many nested messages creates excessive rows in CSV
Solutions:
  • Use JSONL format instead of CSV
  • Use date range filters to create smaller exports
  • Process data programmatically (Python, R) instead of spreadsheet tools
  • Use entity exports with specific date ranges

JSONL File Format Issues

Symptoms: File appears as single long line, difficult to read This is normal: JSONL files are designed for programmatic processing, not human reading Solutions:
  • Use a code editor with JSONL support (VS Code, Sublime Text)
  • Process with Python or JavaScript instead of opening directly
  • Use command-line tools like jq for inspection:
    # View first user prettily
    head -n 1 export.jsonl | jq '.'
    
    # Count total users
    wc -l export.jsonl
    
    # Extract specific field
    jq -r '.email' export.jsonl
    

Best Practices

Regular Backup Schedule

Establish a consistent backup routine: Weekly backups:
  • Every Sunday night, export previous week
  • Date range: Last 7 days
  • Naming: weekly_backup_2024-03-15.jsonl
  • Store in cloud storage with versioning
Monthly full backups:
  • First of each month, export previous month
  • Date range: Previous calendar month
  • Naming: monthly_backup_2024-03.jsonl
  • Archive for long-term retention
Before major changes:
  • Export all data before deploying new AI guidance
  • Enables rollback analysis if issues arise

Field Selection Strategy

For backups: Export all fields to preserve complete records For analysis: Select only needed fields to reduce file size and processing time For sharing: Remove PII fields (email, name) when sharing with external parties

File Naming Conventions

Use descriptive, sortable names:
Good:
- botbrains_full_2024-03-15.jsonl
- conversations_escalated_2024-03-01_to_2024-03-31.csv
- users_premium_2024-Q1.csv

Avoid:
- export.jsonl
- data.csv
- file1.jsonl

Data Retention Policy

Define how long you keep exports: Regulatory requirements:
  • GDPR: Retain only as long as needed for business purposes
  • HIPAA: Minimum 6 years for medical data
  • CCPA: Enable deletion on request
Business needs:
  • Active analysis: 90 days
  • Historical trends: 1-2 years
  • Compliance archives: 7+ years
Storage optimization:
  • Compress old exports (gzip reduces size by 80 percent or more)
  • Move to cold storage after 90 days
  • Delete non-compliant exports regularly

Data Sanitization

When sharing exports with external parties or AI tools: Remove PII:
import json

def sanitize_export(input_file, output_file):
    """Remove PII from export file"""
    with open(input_file) as f_in, open(output_file, 'w') as f_out:
        for line in f_in:
            user = json.loads(line)
            # Remove identifiable information
            user['email'] = 'redacted@example.com'
            user['name'] = f"User {user['id']}"
            user.pop('external_attributes', None)

            f_out.write(json.dumps(user) + '\n')

sanitize_export('export.jsonl', 'export_sanitized.jsonl')
Aggregate before sharing:
  • Share summary statistics instead of raw data
  • Provide anonymized samples rather than full datasets

Next Steps

Now that you understand data export:
Start with small, focused exports to understand the data structure before attempting large-scale exports or complex analysis workflows.