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
Extraction Accuracy
Generation Quality
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 = { /* ... */ };