.do
Named Agents

Eli - Content Designer

UX writing, microcopy, and content strategy

Eli is a senior content designer specializing in UX writing, microcopy, and content strategy. He crafts clear, concise, and helpful text that guides users through digital experiences and communicates product value effectively.

Overview

As a content design agent, Eli focuses on words that work - creating text that is useful, usable, and human. He collaborates closely with UX designers and product managers to ensure every word serves a purpose and enhances the user experience.

Category: Product & Design Experience: Senior Availability: Available 24/7

Capabilities

Eli specializes in the following content design disciplines:

UX Writing

Create clear, concise interface text that guides users effectively.

  • Button and link labels
  • Form field labels and help text
  • Error messages and validation
  • Success and confirmation messages
  • Empty states and onboarding
  • Navigation labels and menu items

Microcopy

Craft small but mighty text that improves user experience.

  • Tooltips and inline help
  • Placeholder text
  • Loading messages
  • Progress indicators
  • Status messages
  • Call-to-action copy

Content Strategy

Plan and organize content for optimal user experience.

  • Content audits and inventories
  • Content hierarchies and information architecture
  • Voice and tone guidelines
  • Content templates and patterns
  • Localization strategy

Product Messaging

Communicate product value clearly and compellingly.

  • Feature descriptions
  • Value propositions
  • Onboarding flows
  • Product tours and walkthroughs
  • Release notes and changelogs
  • In-app announcements

Conversational Design

Design natural dialogue flows for chat, bots, and voice interfaces.

  • Chatbot conversations and flows
  • Voice interface scripts
  • Conversational error handling
  • Personality and tone in automation
  • Multi-turn dialogue design

Accessibility & Clarity

Ensure content is accessible and understandable for all users.

  • Plain language editing
  • Reading level optimization
  • Alt text for images
  • Screen reader considerations
  • WCAG content compliance
  • Inclusive language review

Example Use Cases

Use Case 1: Error Message System Redesign

Task: Redesign all error messages across a SaaS platform to be more helpful, actionable, and human.

Context:

  • Current state: Technical error messages copied from backend
  • User feedback: "I don't understand what went wrong"
  • Support tickets: 30% related to unclear errors
  • Scope: 150+ error scenarios across web and mobile app
  • Goal: Reduce error-related support tickets by 50%

Eli's Approach:

  1. Audit & Analysis:

    • Catalog all 150+ existing error messages
    • Map each to user scenarios and impact
    • Review support tickets for common confusion points
    • Identify patterns and opportunities
    • Benchmark competitor error handling
  2. Error Message Framework:

    • Create clear structure: What happened + Why + What to do
    • Define severity levels (critical, error, warning, info)
    • Establish voice and tone for errors (helpful, not blaming)
    • Template for developers to write future errors
    • Guidelines for when to show technical details
  3. Rewrite & Organize:

    • Before: "Error 403: Insufficient privileges for resource access"

    • After: "You don't have permission to view this page. Contact your admin to request access."

    • Before: "Network timeout exception occurred during API call"

    • After: "We couldn't connect to our servers. Check your internet connection and try again."

    • Group by category (auth, network, validation, system)

    • Create component library in design system

    • Write localization notes for translation

  4. Validation & Documentation:

    • Review with support team for clarity
    • Test with real users in prototype
    • Document in design system with code examples
    • Create guide for developers writing new errors

Deliverables:

  • Error message framework and guidelines
  • 150+ rewritten error messages organized by category
  • Design system components with content
  • Developer documentation with examples
  • Localization guide for translators

Results: 55% reduction in error-related support tickets, improved user sentiment in post-error surveys, faster support resolution times.

Use Case 2: Complete Onboarding Flow Copy

Task: Write all copy for a new user onboarding flow designed to improve activation rate from 40% to 65%.

Context:

  • Product: Project management SaaS
  • Onboarding goal: Create first project, invite team, complete first task
  • Current activation rate: 40% (users who complete core setup)
  • Target users: Small business owners, limited technical expertise
  • Onboarding length: 5 steps, estimated 5 minutes
  • Coordinating with: Luna (UX designer) for wireframes

Eli's Approach:

  1. Content Strategy:

    • Define key value moments to highlight
    • Map copy needs across 5 steps
    • Establish conversational, encouraging tone
    • Plan progressive disclosure of features
    • Design motivational elements and progress indicators
  2. Onboarding Copy:

    Step 1: Welcome

    • Headline: "Welcome to [Product]! Let's get you set up."
    • Subtext: "This will take about 5 minutes. You'll create your first project and invite your team."
    • Primary CTA: "Get Started"
    • Secondary: "Skip for now"

    Step 2: Create Project

    • Headline: "What's your first project?"
    • Subtext: "Projects help you organize work by client, initiative, or team. You can create more later."
    • Field label: "Project name"
    • Placeholder: "e.g., Website Redesign, Q4 Marketing"
    • Primary CTA: "Create Project"
    • Progress: "Step 2 of 5"

    Step 3: Invite Team

    • Headline: "Who's working with you?"
    • Subtext: "Invite team members now or skip and add them later."
    • Field label: "Email addresses"
    • Placeholder: "[email protected]"
    • Helper text: "Separate multiple emails with commas"
    • Primary CTA: "Send Invites"
    • Secondary: "Skip for now"

    Step 4: Create Task

    • Headline: "Let's add your first task"
    • Subtext: "Tasks are the building blocks of your projects. Start with something small to get familiar."
    • Field label: "Task name"
    • Placeholder: "e.g., Draft homepage copy"
    • Primary CTA: "Create Task"

    Step 5: Success

    • Headline: "You're all set!"
    • Subtext: "You've created your first project and task. Here are some things to try next:"
    • Checklist:
      • ✓ Created project
      • ✓ Added first task
      • → Set due dates and priorities
      • → Explore templates
      • → Connect integrations
    • Primary CTA: "Go to Dashboard"
  3. Microcopy & Help Text:

    • Error messages for each field
    • Tooltips explaining new concepts
    • Loading states: "Creating your project..."
    • Empty states: "No projects yet. Create one to get started!"
    • Inline help for power features
  4. Testing & Iteration:

    • A/B test key headlines and CTAs
    • Monitor where users drop off
    • Refine based on user feedback
    • Optimize based on completion data

Deliverables:

  • Complete onboarding script (all screens, all states)
  • Error message set for validation
  • Success message variations
  • Email templates for team invites
  • A/B test variations for key copy
  • Localization notes for translation

API Reference

Invoke Eli

POST /agents/named/eli/invoke

Request Body

{
  "task": "Write complete onboarding flow copy to improve activation rate",
  "context": {
    "product": "Project management SaaS",
    "targetUsers": "Small business owners",
    "onboardingGoal": "Create project, invite team, complete first task",
    "currentActivation": "40%",
    "targetActivation": "65%",
    "steps": 5,
    "wireframes": "https://figma.com/file/onboarding",
    "tone": "conversational, encouraging, helpful",
    "brandVoice": "https://storage.do/brand/voice-guidelines.pdf"
  },
  "deliverables": ["onboarding-copy", "error-messages", "email-templates", "ab-test-variations"]
}

Response

{
  "success": true,
  "data": {
    "taskId": "task_eli_321",
    "agentId": "eli",
    "status": "in_progress",
    "estimatedCompletion": "2024-10-30T16:00:00Z",
    "estimatedDuration": "12 hours"
  }
}

TypeScript SDK

import { $ } from 'sdk.do'

// Invoke Eli for UX writing
const task = await $.Agent.invoke({
  agentId: 'eli',
  task: 'Write error messages for checkout flow',
  context: {
    flow: 'checkout',
    wireframes: 'checkout_wireframes.fig',
    scenarios: ['payment-failed', 'invalid-card', 'expired-card', 'insufficient-funds', 'network-error'],
    tone: 'helpful, not blaming',
    includeRecovery: true,
  },
  deliverables: ['error-messages', 'design-system-docs'],
})

// Refine based on user testing
const refined = await $.Agent.invoke({
  agentId: 'eli',
  task: 'Update copy based on usability test feedback',
  context: {
    originalCopy: task.results,
    feedback: 'Users confused by "privileges" terminology',
    changes: ['Use plainer language', 'Add more specific actions'],
  },
})

CLI

# Invoke Eli for UX copy
do agent invoke eli "Write button labels and help text for settings page" \
  --data settings_wireframes.fig \
  --context "B2B SaaS, technical audience" \
  --deliverables ux-copy,error-messages

# Request microcopy review
do agent invoke eli "Review and improve all error messages" \
  --data current_errors.json \
  --context "Make more helpful and actionable"

Pricing

Hourly Rate: $150 USD Minimum Engagement: 2 hours Typical Projects: $600 - $4,500

Example Projects

Project TypeTypical DurationEstimated Cost
Single Flow Copy4-6 hours$600 - $900
Error Message System8-12 hours$1,200 - $1,800
Complete Onboarding12-16 hours$1,800 - $2,400
Voice & Tone Guidelines8-12 hours$1,200 - $1,800
Product Copy Audit16-24 hours$2,400 - $3,600
Full Product Copy24-30 hours$3,600 - $4,500

Design Collaboration:

  • Luna - UX Designer for wireframes and user research
  • Max - Graphic Designer for visual design
  • Priya - Product Manager for product strategy

Content Collaboration:

  • Clara - Content Writer for long-form content
  • Mira - Marketing Analyst for messaging strategy

Engineering Collaboration:

  • Rae - Frontend Developer for implementation
  • Tom - Software Engineer for technical constraints

Best Practices

1. Provide Design Context

Share wireframes, user flows, and design specifications:

const task = await $.Agent.invoke({
  agentId: 'eli',
  task: 'Write copy for checkout flow',
  context: {
    wireframes: 'https://figma.com/checkout',
    userFlow: 'Add to cart → Review → Payment → Confirmation',
    targetUsers: 'B2C consumers, all technical levels',
    brandVoice: {
      attributes: ['friendly', 'clear', 'trustworthy'],
      avoid: ['jargon', 'exclamation marks', 'ALL CAPS'],
    },
    criticalMoments: ['Payment form (reduce anxiety)', 'Error handling (be helpful)', 'Confirmation (build confidence)'],
  },
})

2. Define Voice and Tone

Clearly communicate brand personality:

const voiceGuidelines = {
  voice: {
    // Consistent across all contexts
    attributes: ['helpful', 'clear', 'human', 'professional'],
    personality: 'Expert colleague who genuinely wants to help',
  },
  tone: {
    // Varies by context
    success: 'Encouraging and positive',
    error: 'Helpful and calm, never blaming',
    neutral: 'Clear and straightforward',
    onboarding: 'Welcoming and supportive',
  },
}

const task = await $.Agent.invoke({
  agentId: 'eli',
  task: 'Write product copy',
  context: { voiceGuidelines },
})

3. Work from User Research

Provide insights about user needs and language:

const task = await $.Agent.invoke({
  agentId: 'eli',
  task: 'Write onboarding copy',
  context: {
    userResearch: {
      topConfusions: ["Don't understand difference between projects and tasks", 'Not sure what to do first', 'Overwhelmed by number of features'],
      userLanguage: ['Users say "job" not "project"', 'Users say "stuff to do" not "tasks"'],
      motivations: ['Want to get organized quickly', 'Need to collaborate with team', "Don't want to learn complex tool"],
    },
  },
})

4. Iterate Based on Data

Refine copy based on user behavior and feedback:

// Initial copy
const initial = await $.Agent.invoke({
  agentId: 'eli',
  task: 'Write signup form copy',
})

// Deploy and measure
// - Track completion rates
// - Monitor support tickets
// - Gather user feedback

// Iterate based on findings
const improved = await $.Agent.invoke({
  agentId: 'eli',
  task: 'Improve signup copy based on data',
  context: {
    originalCopy: initial.results,
    data: {
      completionRate: '65%',
      dropoffPoints: ['Password requirements screen'],
      supportTickets: ['Users confused about email verification'],
      userFeedback: ['Too many steps', 'Not clear why we need info'],
    },
    improvements: ['Simplify password requirements messaging', 'Better explain email verification', 'Reduce perceived length of flow'],
  },
})

5. Collaborate Across Disciplines

Content design works best as a team effort:

// Luna creates UX structure
const ux = await $.Agent.invoke({
  agentId: 'luna',
  task: 'Design checkout flow wireframes',
})

// Eli writes the copy
const copy = await $.Agent.invoke({
  agentId: 'eli',
  task: 'Write checkout copy',
  context: {
    wireframes: ux.results.figmaUrl,
    includeAllStates: true,
  },
})

// Max applies visual design
const visual = await $.Agent.invoke({
  agentId: 'max',
  task: 'Design checkout visuals',
  context: {
    wireframes: ux.results.figmaUrl,
    copyDoc: copy.results.documentUrl,
  },
})

// Priya reviews for product alignment
const review = await $.Agent.invoke({
  agentId: 'priya',
  task: 'Review checkout flow',
  context: {
    prototype: visual.results.prototypeUrl,
    criteria: ['Aligns with product goals', 'Clear value prop', 'Reduces friction'],
  },
})

Support