Agendador Environment
Seed set of salon services used by the agendador assistant to describe offerings and create bookings.
services appointments scheduling seed-data catalog salon
This seed is the companion of the Agente agendador example, which fetches this catalog to list offerings and prices. The agent's ZIP already bundles the same seed, so you only need this download to seed the catalog on its own.
What's Included
The ZIP contains the Services custom type (ct:services) plus 5 documents:
| # | Name | Details |
|---|---|---|
| 1 | Corte de cabelo | R$ 50, 30 min |
| 2 | Barba | R$ 35, 20 min |
| 3 | Corte + Barba | R$ 75, 45 min |
| 4 | Hidratação capilar | R$ 60, 40 min |
| 5 | Sobrancelha | R$ 25, 15 min |
Full JSON
Custom type (custom_types.json)
Click to expand
[
{
"_id": {
"$oid": "c7a4b1e2d3f4051627384901"
},
"slug": "services",
"name": "Services",
"description": "Service catalogue. Each service defines a duration and price.",
"purpose": "Represents bookable services offered by the company. Referenced from ct:events.services[]. Use when the user asks about pricing, durations, or offerings.",
"fields": [
{
"name": "employeeId",
"description": "Provider employee.",
"schema": {
"type": "ref",
"ref": "employees",
"required": true
},
"cel": {
"label": "t('services_employeeId')"
}
},
{
"name": "name",
"description": "Service name (unique per employee).",
"schema": {
"type": "string",
"required": true,
"trim": true,
"maxLength": 64
},
"cel": {
"label": "t('name')"
}
},
{
"name": "value",
"description": "Price.",
"schema": {
"type": "number",
"required": true,
"min": 0,
"max": 1000
},
"cel": {
"label": "t('price')"
}
},
{
"name": "durationMinutes",
"description": "Duration in minutes.",
"schema": {
"type": "number",
"required": true,
"min": 5,
"max": 360
},
"cel": {
"label": "t('duration')"
}
}
],
"indexedPaths": [
"employeeId"
],
"mcpTips": [
"Every service belongs to a specific employee via employeeId.",
"Event end times are computed from sum of selected service durations (see the agenda-ensure-services-end-timestamp workflow)."
],
"cel": {
"preview": {
"lines": [
{
"parts": [
{
"type": "text",
"expr": "(has(values, 'name') && values.name != '') ? values.name : ffConcat('Service ', ffShortId(values._id))"
}
]
},
{
"parts": [
{
"type": "text",
"expr": "ffConcat(ffMoney(values.value), ' · ', values.durationMinutes, ' min')"
}
]
}
]
}
}
}
]
Seed documents (custom_type_docs.json)
Click to expand
[
{
"_id": {
"$oid": "5df3d9175e394707dd181130"
},
"customTypeId": {
"$oid": "c7a4b1e2d3f4051627384901"
},
"data": {
"employeeId": "<employee-id>",
"name": "Corte de cabelo",
"value": 50,
"durationMinutes": 30
}
},
{
"_id": {
"$oid": "dff033ceb254004cbff3c651"
},
"customTypeId": {
"$oid": "c7a4b1e2d3f4051627384901"
},
"data": {
"employeeId": "<employee-id>",
"name": "Barba",
"value": 35,
"durationMinutes": 20
}
},
{
"_id": {
"$oid": "da5bce3930518b821c531b29"
},
"customTypeId": {
"$oid": "c7a4b1e2d3f4051627384901"
},
"data": {
"employeeId": "<employee-id>",
"name": "Corte + Barba",
"value": 75,
"durationMinutes": 45
}
},
{
"_id": {
"$oid": "f1a00296350b9abde4f1fc43"
},
"customTypeId": {
"$oid": "c7a4b1e2d3f4051627384901"
},
"data": {
"employeeId": "<employee-id>",
"name": "Hidratação capilar",
"value": 60,
"durationMinutes": 40
}
},
{
"_id": {
"$oid": "87168436540bd70ff795c35a"
},
"customTypeId": {
"$oid": "c7a4b1e2d3f4051627384901"
},
"data": {
"employeeId": "<employee-id>",
"name": "Sobrancelha",
"value": 25,
"durationMinutes": 15
}
}
]
How to Import
- Download the ZIP file using the button above
- Navigate to Company Settings → Data Transfer in your AutoTalk dashboard
- Click Import and select the downloaded ZIP file
- Review the import summary and confirm
- All document IDs are automatically remapped — no manual ID editing needed
warning
The seeded documents ship with an <employee-id> placeholder. After importing, edit each service so employeeId points to one of your employees.