Real-World DSL Examples

These are actual DSL structures extracted from real conversations, showing what Mosaic Builder can understand and generate.

Blog System Example

A complete blog platform with posts, comments, and tags.

Conversation Input

"I need a blog where users can write posts, readers can comment, 
and posts can be categorized with tags. Include draft/publish workflow."

Extracted DSL

const blogDSL = {
  entities: {
    User: {
      fields: {
        id: { type: 'uuid', required: true },
        email: { type: 'string', required: true, unique: true },
        name: { type: 'string', required: true },
        bio: { type: 'text', required: false },
        avatar: { type: 'string', required: false },
        role: { type: 'enum', values: ['admin', 'author', 'reader'], required: true }
      }
    },
    Post: {
      fields: {
        id: { type: 'uuid', required: true },
        title: { type: 'string', required: true },
        slug: { type: 'string', required: true, unique: true },
        content: { type: 'text', required: true },
        excerpt: { type: 'text', required: false },
        authorId: { type: 'uuid', required: true },
        status: { type: 'enum', values: ['draft', 'published', 'archived'], required: true },
        publishedAt: { type: 'datetime', required: false },
        featuredImage: { type: 'string', required: false },
        viewCount: { type: 'number', required: true, default: 0 }
      }
    },
    Comment: {
      fields: {
        id: { type: 'uuid', required: true },
        content: { type: 'text', required: true },
        postId: { type: 'uuid', required: true },
        authorId: { type: 'uuid', required: true },
        parentId: { type: 'uuid', required: false }, // For nested comments
        approved: { type: 'boolean', required: true, default: false },
        createdAt: { type: 'datetime', required: true }
      }
    },
    Tag: {
      fields: {
        id: { type: 'uuid', required: true },
        name: { type: 'string', required: true, unique: true },
        slug: { type: 'string', required: true, unique: true },
        description: { type: 'text', required: false }
      }
    },
    PostTag: {
      fields: {
        postId: { type: 'uuid', required: true },
        tagId: { type: 'uuid', required: true }
      }
    }
  },
  relationships: [
    { from: 'Post', to: 'User', type: 'many-to-one', name: 'author' },
    { from: 'Comment', to: 'Post', type: 'many-to-one' },
    { from: 'Comment', to: 'User', type: 'many-to-one', name: 'author' },
    { from: 'Comment', to: 'Comment', type: 'many-to-one', name: 'parent' },
    { from: 'PostTag', to: 'Post', type: 'many-to-one' },
    { from: 'PostTag', to: 'Tag', type: 'many-to-one' }
  ],
  pages: {
    home: {
      path: '/',
      components: ['PostList', 'FeaturedPosts', 'TagCloud']
    },
    post: {
      path: '/posts/[slug]',
      components: ['PostDetail', 'CommentSection', 'RelatedPosts']
    },
    admin: {
      path: '/admin',
      components: ['PostManager', 'CommentModeration', 'Analytics']
    }
  },
  workflows: {
    publishPost: {
      steps: [
        'validateContent',
        'generateSlug',
        'setPublishedAt',
        'notifySubscribers'
      ]
    },
    moderateComment: {
      steps: [
        'checkSpam',
        'checkProfanity',
        'notifyAuthor',
        'updateCommentCount'
      ]
    }
  },
  authentication: {
    type: 'credentials',
    providers: ['email', 'google', 'github'],
    sessionStrategy: 'jwt'
  },
  permissions: [
    { role: 'admin', actions: ['*'] },
    { role: 'author', actions: ['create:post', 'edit:own-post', 'delete:own-post'] },
    { role: 'reader', actions: ['read:post', 'create:comment'] }
  ],
  phase: 'confirming',
  readiness: 85,
  confidence: 0.92
}

Generated Code Preview

// Generated Prisma Schema
model Post {
  id            String    @id @default(uuid())
  title         String
  slug          String    @unique
  content       String    @db.Text
  excerpt       String?   @db.Text
  authorId      String
  author        User      @relation(fields: [authorId], references: [id])
  status        PostStatus @default(DRAFT)
  publishedAt   DateTime?
  featuredImage String?
  viewCount     Int       @default(0)
  createdAt     DateTime  @default(now())
  updatedAt     DateTime  @updatedAt
  
  comments      Comment[]
  tags          PostTag[]
  
  @@index([status, publishedAt])
  @@index([authorId])
  @@index([slug])
}

E-Commerce System Example

Complete online store with products, orders, and inventory.

Conversation Input

"Build an e-commerce platform where customers can browse products, 
add to cart, checkout with payment, and track orders. 
Vendors can manage inventory and fulfill orders."

Extracted DSL

const ecommerceDSL = {
  entities: {
    User: {
      fields: {
        id: { type: 'uuid', required: true },
        email: { type: 'string', required: true, unique: true },
        name: { type: 'string', required: true },
        role: { type: 'enum', values: ['customer', 'vendor', 'admin'], required: true },
        stripeCustomerId: { type: 'string', required: false }
      }
    },
    Product: {
      fields: {
        id: { type: 'uuid', required: true },
        vendorId: { type: 'uuid', required: true },
        name: { type: 'string', required: true },
        slug: { type: 'string', required: true, unique: true },
        description: { type: 'text', required: true },
        price: { type: 'decimal', required: true },
        compareAtPrice: { type: 'decimal', required: false },
        cost: { type: 'decimal', required: false },
        sku: { type: 'string', required: true, unique: true },
        barcode: { type: 'string', required: false },
        quantity: { type: 'number', required: true },
        weight: { type: 'decimal', required: false },
        status: { type: 'enum', values: ['active', 'draft', 'archived'], required: true }
      }
    },
    Category: {
      fields: {
        id: { type: 'uuid', required: true },
        name: { type: 'string', required: true },
        slug: { type: 'string', required: true, unique: true },
        parentId: { type: 'uuid', required: false },
        description: { type: 'text', required: false }
      }
    },
    Cart: {
      fields: {
        id: { type: 'uuid', required: true },
        userId: { type: 'uuid', required: false }, // Guest carts
        sessionId: { type: 'string', required: false },
        status: { type: 'enum', values: ['active', 'converted', 'abandoned'], required: true },
        expiresAt: { type: 'datetime', required: true }
      }
    },
    CartItem: {
      fields: {
        id: { type: 'uuid', required: true },
        cartId: { type: 'uuid', required: true },
        productId: { type: 'uuid', required: true },
        quantity: { type: 'number', required: true },
        price: { type: 'decimal', required: true }
      }
    },
    Order: {
      fields: {
        id: { type: 'uuid', required: true },
        orderNumber: { type: 'string', required: true, unique: true },
        userId: { type: 'uuid', required: true },
        status: { type: 'enum', values: ['pending', 'processing', 'shipped', 'delivered', 'cancelled'], required: true },
        subtotal: { type: 'decimal', required: true },
        tax: { type: 'decimal', required: true },
        shipping: { type: 'decimal', required: true },
        total: { type: 'decimal', required: true },
        paymentStatus: { type: 'enum', values: ['pending', 'paid', 'failed', 'refunded'], required: true },
        paymentIntentId: { type: 'string', required: false },
        shippingAddressId: { type: 'uuid', required: true },
        billingAddressId: { type: 'uuid', required: true },
        notes: { type: 'text', required: false }
      }
    },
    OrderItem: {
      fields: {
        id: { type: 'uuid', required: true },
        orderId: { type: 'uuid', required: true },
        productId: { type: 'uuid', required: true },
        vendorId: { type: 'uuid', required: true },
        quantity: { type: 'number', required: true },
        price: { type: 'decimal', required: true },
        cost: { type: 'decimal', required: false },
        fulfillmentStatus: { type: 'enum', values: ['pending', 'fulfilled', 'returned'], required: true }
      }
    },
    Address: {
      fields: {
        id: { type: 'uuid', required: true },
        userId: { type: 'uuid', required: true },
        name: { type: 'string', required: true },
        street1: { type: 'string', required: true },
        street2: { type: 'string', required: false },
        city: { type: 'string', required: true },
        state: { type: 'string', required: true },
        postalCode: { type: 'string', required: true },
        country: { type: 'string', required: true },
        isDefault: { type: 'boolean', required: true, default: false }
      }
    }
  },
  relationships: [
    { from: 'Product', to: 'User', type: 'many-to-one', name: 'vendor' },
    { from: 'Product', to: 'Category', type: 'many-to-many' },
    { from: 'Category', to: 'Category', type: 'many-to-one', name: 'parent' },
    { from: 'Cart', to: 'User', type: 'many-to-one' },
    { from: 'CartItem', to: 'Cart', type: 'many-to-one' },
    { from: 'CartItem', to: 'Product', type: 'many-to-one' },
    { from: 'Order', to: 'User', type: 'many-to-one' },
    { from: 'Order', to: 'Address', type: 'many-to-one', name: 'shippingAddress' },
    { from: 'Order', to: 'Address', type: 'many-to-one', name: 'billingAddress' },
    { from: 'OrderItem', to: 'Order', type: 'many-to-one' },
    { from: 'OrderItem', to: 'Product', type: 'many-to-one' },
    { from: 'OrderItem', to: 'User', type: 'many-to-one', name: 'vendor' },
    { from: 'Address', to: 'User', type: 'many-to-one' }
  ],
  workflows: {
    checkout: {
      steps: [
        'validateCart',
        'calculateTotals',
        'processPayment',
        'createOrder',
        'updateInventory',
        'sendConfirmationEmail',
        'notifyVendors'
      ]
    },
    fulfillOrder: {
      steps: [
        'pickItems',
        'packOrder',
        'printLabel',
        'shipOrder',
        'updateTracking',
        'notifyCustomer'
      ]
    }
  },
  phase: 'confirming',
  readiness: 88,
  confidence: 0.94
}

Task Management System Example

Agile project management with sprints and time tracking.

Conversation Input

"Create a task management system for agile teams with projects, sprints, 
tasks with subtasks, time tracking, and burndown charts."

Extracted DSL

const taskManagementDSL = {
  entities: {
    User: {
      fields: {
        id: { type: 'uuid', required: true },
        email: { type: 'string', required: true, unique: true },
        name: { type: 'string', required: true },
        avatar: { type: 'string', required: false },
        role: { type: 'enum', values: ['admin', 'manager', 'developer', 'viewer'], required: true },
        timezone: { type: 'string', required: true, default: 'UTC' }
      }
    },
    Team: {
      fields: {
        id: { type: 'uuid', required: true },
        name: { type: 'string', required: true },
        description: { type: 'text', required: false },
        slug: { type: 'string', required: true, unique: true }
      }
    },
    Project: {
      fields: {
        id: { type: 'uuid', required: true },
        teamId: { type: 'uuid', required: true },
        name: { type: 'string', required: true },
        key: { type: 'string', required: true, unique: true }, // PROJ
        description: { type: 'text', required: false },
        status: { type: 'enum', values: ['planning', 'active', 'on_hold', 'completed'], required: true },
        startDate: { type: 'date', required: false },
        endDate: { type: 'date', required: false },
        managerId: { type: 'uuid', required: true }
      }
    },
    Sprint: {
      fields: {
        id: { type: 'uuid', required: true },
        projectId: { type: 'uuid', required: true },
        name: { type: 'string', required: true },
        goal: { type: 'text', required: false },
        startDate: { type: 'datetime', required: true },
        endDate: { type: 'datetime', required: true },
        status: { type: 'enum', values: ['planning', 'active', 'review', 'completed'], required: true }
      }
    },
    Task: {
      fields: {
        id: { type: 'uuid', required: true },
        projectId: { type: 'uuid', required: true },
        sprintId: { type: 'uuid', required: false },
        parentId: { type: 'uuid', required: false }, // For subtasks
        taskNumber: { type: 'string', required: true, unique: true }, // PROJ-123
        title: { type: 'string', required: true },
        description: { type: 'text', required: false },
        type: { type: 'enum', values: ['story', 'task', 'bug', 'epic'], required: true },
        status: { type: 'enum', values: ['backlog', 'todo', 'in_progress', 'review', 'done'], required: true },
        priority: { type: 'enum', values: ['low', 'medium', 'high', 'urgent'], required: true },
        points: { type: 'number', required: false }, // Story points
        assigneeId: { type: 'uuid', required: false },
        reporterId: { type: 'uuid', required: true },
        dueDate: { type: 'datetime', required: false },
        estimatedHours: { type: 'decimal', required: false },
        actualHours: { type: 'decimal', required: false }
      }
    },
    TimeLog: {
      fields: {
        id: { type: 'uuid', required: true },
        taskId: { type: 'uuid', required: true },
        userId: { type: 'uuid', required: true },
        date: { type: 'date', required: true },
        hours: { type: 'decimal', required: true },
        description: { type: 'text', required: false }
      }
    },
    Comment: {
      fields: {
        id: { type: 'uuid', required: true },
        taskId: { type: 'uuid', required: true },
        userId: { type: 'uuid', required: true },
        content: { type: 'text', required: true },
        createdAt: { type: 'datetime', required: true }
      }
    }
  },
  relationships: [
    { from: 'Project', to: 'Team', type: 'many-to-one' },
    { from: 'Project', to: 'User', type: 'many-to-one', name: 'manager' },
    { from: 'Sprint', to: 'Project', type: 'many-to-one' },
    { from: 'Task', to: 'Project', type: 'many-to-one' },
    { from: 'Task', to: 'Sprint', type: 'many-to-one' },
    { from: 'Task', to: 'Task', type: 'many-to-one', name: 'parent' },
    { from: 'Task', to: 'User', type: 'many-to-one', name: 'assignee' },
    { from: 'Task', to: 'User', type: 'many-to-one', name: 'reporter' },
    { from: 'TimeLog', to: 'Task', type: 'many-to-one' },
    { from: 'TimeLog', to: 'User', type: 'many-to-one' },
    { from: 'Comment', to: 'Task', type: 'many-to-one' },
    { from: 'Comment', to: 'User', type: 'many-to-one' }
  ],
  pages: {
    dashboard: {
      components: ['SprintProgress', 'TasksByStatus', 'TeamVelocity', 'BurndownChart']
    },
    backlog: {
      components: ['BacklogList', 'SprintPlanning', 'EpicView']
    },
    board: {
      components: ['KanbanBoard', 'SprintSelector', 'QuickFilters']
    },
    reports: {
      components: ['VelocityChart', 'CumulativeFlow', 'TimeTracking']
    }
  },
  phase: 'building',
  readiness: 92,
  confidence: 0.96
}

CRM System Example

Customer relationship management with sales pipeline.

Conversation Input

"Build a CRM for sales teams with contacts, companies, deals pipeline, 
activities tracking, and email integration."

Extracted DSL

const crmDSL = {
  entities: {
    User: {
      fields: {
        id: { type: 'uuid', required: true },
        email: { type: 'string', required: true, unique: true },
        name: { type: 'string', required: true },
        role: { type: 'enum', values: ['admin', 'sales_manager', 'sales_rep'], required: true },
        quota: { type: 'decimal', required: false }
      }
    },
    Contact: {
      fields: {
        id: { type: 'uuid', required: true },
        firstName: { type: 'string', required: true },
        lastName: { type: 'string', required: true },
        email: { type: 'string', required: false },
        phone: { type: 'string', required: false },
        jobTitle: { type: 'string', required: false },
        companyId: { type: 'uuid', required: false },
        ownerId: { type: 'uuid', required: true },
        source: { type: 'enum', values: ['website', 'referral', 'cold_call', 'event', 'other'], required: true },
        status: { type: 'enum', values: ['new', 'qualified', 'unqualified'], required: true }
      }
    },
    Company: {
      fields: {
        id: { type: 'uuid', required: true },
        name: { type: 'string', required: true },
        domain: { type: 'string', required: false },
        industry: { type: 'string', required: false },
        size: { type: 'enum', values: ['1-10', '11-50', '51-200', '201-500', '500+'], required: false },
        annualRevenue: { type: 'decimal', required: false },
        ownerId: { type: 'uuid', required: true }
      }
    },
    Deal: {
      fields: {
        id: { type: 'uuid', required: true },
        name: { type: 'string', required: true },
        companyId: { type: 'uuid', required: true },
        contactId: { type: 'uuid', required: false },
        ownerId: { type: 'uuid', required: true },
        amount: { type: 'decimal', required: true },
        stage: { type: 'enum', values: ['prospecting', 'qualification', 'proposal', 'negotiation', 'closed_won', 'closed_lost'], required: true },
        probability: { type: 'number', required: true },
        expectedCloseDate: { type: 'date', required: true },
        actualCloseDate: { type: 'date', required: false }
      }
    },
    Activity: {
      fields: {
        id: { type: 'uuid', required: true },
        type: { type: 'enum', values: ['call', 'email', 'meeting', 'task', 'note'], required: true },
        subject: { type: 'string', required: true },
        description: { type: 'text', required: false },
        contactId: { type: 'uuid', required: false },
        companyId: { type: 'uuid', required: false },
        dealId: { type: 'uuid', required: false },
        userId: { type: 'uuid', required: true },
        dueDate: { type: 'datetime', required: false },
        completed: { type: 'boolean', required: true, default: false }
      }
    }
  },
  relationships: [
    { from: 'Contact', to: 'Company', type: 'many-to-one' },
    { from: 'Contact', to: 'User', type: 'many-to-one', name: 'owner' },
    { from: 'Company', to: 'User', type: 'many-to-one', name: 'owner' },
    { from: 'Deal', to: 'Company', type: 'many-to-one' },
    { from: 'Deal', to: 'Contact', type: 'many-to-one' },
    { from: 'Deal', to: 'User', type: 'many-to-one', name: 'owner' },
    { from: 'Activity', to: 'Contact', type: 'many-to-one' },
    { from: 'Activity', to: 'Company', type: 'many-to-one' },
    { from: 'Activity', to: 'Deal', type: 'many-to-one' },
    { from: 'Activity', to: 'User', type: 'many-to-one' }
  ],
  workflows: {
    leadQualification: {
      steps: ['scoreLeads', 'assignOwner', 'createTasks', 'sendWelcomeEmail']
    },
    dealProgression: {
      steps: ['updateProbability', 'notifyManager', 'createFollowUp', 'updateForecast']
    }
  },
  phase: 'confirming',
  readiness: 87,
  confidence: 0.91
}

Key Patterns Across Examples

Common Entity Patterns

  • User entity always includes email, name, and role
  • Audit fields (createdAt, updatedAt) added automatically
  • Status enums for workflow states
  • Relationships properly defined with foreign keys
  • Extraction Accuracy

  • Entity detection: 95%+ accuracy
  • Field type inference: 90%+ accuracy
  • Relationship mapping: 88%+ accuracy
  • Business logic understanding: 85%+ accuracy
  • Generation Quality

  • • All examples generate compilable code
  • Type-safe with TypeScript
  • Database-ready with proper constraints
  • API endpoints with validation
  • Using These Examples

    In Conversations

    Reference these patterns:
    "Create something like the blog example but add newsletters"
    "I need the CRM system but for real estate"
    "Similar to the task manager but for bug tracking"

    For Testing

    Use these DSLs to test generation:
    import { blogDSL } from './examples';
    const generated = await generator.generate(blogDSL);

    As Templates

    Start with these and modify:
    const myDSL = { ...blogDSL };
    myDSL.entities.Newsletter = { /* ... */ };

    Related Documentation

  • DSL Extraction
  • Entity Modeling
  • Code Generation