Day Planner Agent
Agent-ready recipe for creating a daily planning workflow in andibase
This recipe tells an agent exactly how to build a daily planning workflow in andibase.
Goal
Create three things in one workspace:
- A
day-plandata definition. - A
day-plan-itemdata definition. - One agent that builds, updates, and tracks daily plans.
Expected outcome
After following this recipe, the workspace should have:
- a
day-plandefinition for one daily plan - a
day-plan-itemdefinition for tasks, blocks, and priorities inside the plan - a
day-planner-agentagent
Use the API documented in:
Agent instructions
When an agent executes this recipe, it should follow these rules:
- Create the
day-plandefinition first. - Create the
day-plan-itemdefinition second. - In the current API, data definition handles are generated from
name. Usename: "Day Plan"andname: "Day Plan Item"so the created handles normalize today-planandday-plan-item. - If your execution environment can resolve the created day-plan definition id, wire the item-to-plan link as a
relationshipfield. If it cannot, use a text foreign key such asplanRecordIdinstead, because the public HTTP API still expectsdataDefinitionIdfor relationship fields. - Create the day-planner agent with instructions focused on turning goals, meetings, and constraints into an actionable day plan.
- Use sensible defaults and ask the user only when a missing choice materially changes the schedule, such as the plan date, time window, or non-movable commitments.
- Do not pretend that calendar integrations or external scheduling tools exist unless the execution environment actually has them. Use the current workspace data tools as the source of truth.
Step 1: Create the data model
Create two data definitions: day-plan and day-plan-item.
1. Day Plan definition
Use name: "Day Plan". The current API derives the handle from the name, so this will create the day-plan handle.
Recommended fields:
{
"name": "Day Plan",
"description": "Tracks one planned day, its priorities, and overall status.",
"fields": {
"title": {
"name": "Title",
"type": "text"
},
"planDate": {
"name": "Plan date",
"type": "date"
},
"ownerName": {
"name": "Owner name",
"type": "text"
},
"focusTheme": {
"name": "Focus theme",
"type": "text"
},
"status": {
"name": "Status",
"type": "select",
"options": [
{ "value": "draft", "label": "Draft", "color": "zinc" },
{ "value": "ready", "label": "Ready", "color": "blue" },
{ "value": "in-progress", "label": "In progress", "color": "green" },
{ "value": "completed", "label": "Completed", "color": "emerald" },
{ "value": "abandoned", "label": "Abandoned", "color": "stone" }
]
},
"dayStart": {
"name": "Day start",
"type": "text"
},
"dayEnd": {
"name": "Day end",
"type": "text"
},
"topPriorities": {
"name": "Top priorities",
"type": "json"
},
"constraints": {
"name": "Constraints",
"type": "json"
},
"summary": {
"name": "Summary",
"type": "text",
"variant": "long-text"
},
"pendingItems": {
"name": "Pending items",
"type": "json"
},
"itemsCount": {
"name": "Items count",
"type": "number"
},
"completedItemsCount": {
"name": "Completed items count",
"type": "number"
}
}
}Recommended defaults for agent-created plan rows:
status:readytopPriorities:[]constraints:[]pendingItems:[]itemsCount:0completedItemsCount:0
2. Day Plan Item definition
Use name: "Day Plan Item". The current API derives the handle from the name, so this will create the day-plan-item handle.
Recommended fields:
{
"name": "Day Plan Item",
"description": "Tracks one task, block, or commitment inside a daily plan.",
"fields": {
"planRecordId": {
"name": "Plan record id",
"description": "Store the linked day-plan row id when the client only has public HTTP API access.",
"type": "text"
},
"title": {
"name": "Title",
"type": "text"
},
"itemType": {
"name": "Item type",
"type": "select",
"options": [
{ "value": "task", "label": "Task", "color": "blue" },
{ "value": "focus-block", "label": "Focus block", "color": "violet" },
{ "value": "meeting", "label": "Meeting", "color": "amber" },
{ "value": "admin", "label": "Admin", "color": "zinc" },
{ "value": "break", "label": "Break", "color": "green" }
]
},
"priority": {
"name": "Priority",
"type": "select",
"options": [
{ "value": "low", "label": "Low", "color": "zinc" },
{ "value": "medium", "label": "Medium", "color": "blue" },
{ "value": "high", "label": "High", "color": "amber" },
{ "value": "critical", "label": "Critical", "color": "red" }
]
},
"status": {
"name": "Status",
"type": "select",
"options": [
{ "value": "planned", "label": "Planned", "color": "blue" },
{ "value": "in-progress", "label": "In progress", "color": "amber" },
{ "value": "done", "label": "Done", "color": "green" },
{ "value": "skipped", "label": "Skipped", "color": "stone" }
]
},
"startTime": {
"name": "Start time",
"type": "text"
},
"endTime": {
"name": "End time",
"type": "text"
},
"durationMinutes": {
"name": "Duration minutes",
"type": "number"
},
"notes": {
"name": "Notes",
"type": "text",
"variant": "long-text"
}
}
}If your client already has the created day-plan definition id, you can replace planRecordId with:
{
"planId": {
"name": "Plan",
"type": "relationship",
"dataDefinitionId": "<day-plan-definition-id>"
}
}3. Example create requests
Create the definitions with POST /api/v1/data-definitions.
Current API note:
- the create payload uses
name,description, andfields - the handle is derived from
name - data rows are created with
data, notattributes
Example for day-plan:
curl -X POST "https://andibase.com/api/v1/data-definitions" \
-H "Authorization: Bearer $ANDI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Day Plan",
"description": "Tracks one planned day, its priorities, and overall status.",
"fields": {
"title": { "name": "Title", "type": "text" },
"planDate": { "name": "Plan date", "type": "date" },
"focusTheme": { "name": "Focus theme", "type": "text" },
"status": {
"name": "Status",
"type": "select",
"options": [
{ "value": "ready", "label": "Ready", "color": "blue" },
{ "value": "in-progress", "label": "In progress", "color": "green" },
{ "value": "completed", "label": "Completed", "color": "emerald" }
]
},
"summary": { "name": "Summary", "type": "text", "variant": "long-text" },
"itemsCount": { "name": "Items count", "type": "number" },
"completedItemsCount": { "name": "Completed items count", "type": "number" }
}
}'Create sample plan rows with POST /api/v1/data-definitions/day-plan/data/upsert-many.
curl -X POST "https://andibase.com/api/v1/data-definitions/day-plan/data/upsert-many" \
-H "Authorization: Bearer $ANDI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"data": {
"title": "Friday plan",
"planDate": "2026-03-20",
"ownerName": "Gonzalo",
"focusTheme": "Ship key product work before noon",
"status": "ready",
"dayStart": "09:00",
"dayEnd": "18:00",
"topPriorities": [
"Finish docs updates",
"Review builder workflow",
"Clear urgent messages"
],
"constraints": [
"Team sync at 11:00",
"Customer call at 16:00"
],
"summary": "Front-load deep work, keep meetings contained, and leave the afternoon for follow-up tasks.",
"itemsCount": 0,
"completedItemsCount": 0
}
}
]
}'Step 2: Create the day planner agent
Create one workspace agent with handle day-planner-agent.
Recommended behavior:
- turn goals, meetings, and constraints into a realistic day plan
- create one plan row for the target day
- create plan-item rows for tasks, meetings, focus blocks, and breaks
- rebalance the day when the user adds, removes, or reprioritizes work
- update completion counts on the parent plan as items are marked done
- make tradeoffs explicit when not everything fits
Recommended agent payload:
{
"name": "Day Planner Agent",
"handle": "day-planner-agent",
"description": "Builds and updates daily plans from goals, meetings, and constraints.",
"model": "openai/gpt-5.4",
"capabilities": {
"webAccess": false,
"browserAccess": false,
"objectsAccess": true
},
"instructions": "You manage a workspace daily planning workflow. Use the day-plan and day-plan-item data definitions as the source of truth. Be action-oriented: make reasonable assumptions, complete the work when the intended outcome is clear, and avoid asking for confirmation on every small step. When the user asks for a plan, create one day-plan row and the related day-plan-item rows needed to make the schedule actionable. Use realistic time blocks, leave some buffer, and surface tradeoffs when the day is overbooked. When the user marks an item done, update that item and refresh the parent plan completedItemsCount. When the user changes priorities or constraints, update the current plan instead of creating duplicates unless they explicitly ask for a separate plan."
}Create the agent with POST /api/v1/agents.
Step 3: Expected operating flow
When a user asks for a day plan, the agent should:
- Resolve the target day.
- Capture goals, constraints, and fixed commitments.
- Create one
day-planrow. - Create the needed
day-plan-itemrows. - Keep the plan updated as the day changes.
Recommended acceptance checks
An agent should consider the recipe complete only if all of the following are true:
day-planexists and includes the required fields.day-plan-itemexists and includes either theplanIdrelationship or theplanRecordIdfallback used by the current public HTTP API flow.day-planner-agentexists.- At least one sample day-plan row can be created successfully.
- At least one sample day-plan-item row can be created successfully.
- The agent can update the plan status or item status without runtime auth errors.
Minimal delivery summary
When the agent finishes, it should report:
- the created data definition handles
- the created agent handle
- any assumptions made for working hours, priorities, or fixed commitments