Office Manager
One vote per person, results at 11 AM, no more Slack threads.
You order lunch for a team of 15 every Friday. Currently you post in Slack asking what everyone wants, get a messy thread with emoji votes, changed minds, and replies to the wrong message. By the time you tally it up, half the team has not voted and you are guessing. You want a simple poll that each person fills out once, closes before the lunch order deadline, and shows results you can hand to the restaurant.
“I need a quick poll for Friday team lunch -- everyone votes once”
Create a lunch poll form with restaurant choice and dietary notes. Use uniqueBy on name so each person can only vote once, and set closesAt to Friday at 11 AM so votes stop before the order deadline.
POST /api/forms
{
"name": "Friday Lunch Poll",
"fields": [
{ "name": "name", "label": "Your Name", "type": "text", "required": true },
{
"name": "restaurant",
"label": "Where should we order from?",
"type": "select",
"required": true,
"options": ["Thai Palace", "Pizza Corner", "Burrito Bar", "Salad Place", "Sushi Express"]
},
{
"name": "dietary",
"label": "Dietary Notes",
"type": "textarea",
"required": false,
"placeholder": "Any allergies or restrictions?"
}
],
"uniqueBy": ["name"],
"closesAt": "2026-03-06T11:00:00Z",
"successMessage": "Vote recorded! Results will be shared at 11 AM.",
"submitLabel": "Cast My Vote"
}→ Lunch poll created with one-vote-per-name uniqueness and a Friday 11 AM deadline. Returns formId, hostedFormUrl to share in Slack, and submitUrl.
Create a public dashboard with a pie chart of restaurant votes and a total vote count so the team can watch results live.
POST /api/dashboards
{
"title": "Friday Lunch Results",
"formId": "FORM_ID",
"isPublic": true,
"dsl": {
"version": 1,
"widgets": [
{ "type": "pie_chart", "title": "Restaurant Votes", "groupBy": "restaurant" },
{ "type": "metric_card", "title": "Total Votes", "value": "count(*)" }
]
}
}→ Public dashboard created. Share the dashboard URL in Slack so the team can watch the vote tally update in real time. The pie chart shows which restaurant is winning.
Slack polls get buried in threads and nobody knows if they voted already. This is a dedicated form link you post once. Each person votes, the uniqueBy constraint prevents double-voting, and at 11 AM the form closes automatically. The public dashboard link lets everyone see which restaurant is winning without you manually tallying anything. Next Friday, duplicate the form with a new closesAt and you are done in 30 seconds. An agent could set this up end-to-end — create the poll form with uniqueness constraints, configure the deadline, and build the public dashboard — in a single conversation.
The uniqueBy constraint on name means a second submission from the same name will be rejected. If someone genuinely needs to change their vote, you can delete their original submission via the API (DELETE /api/forms/{formId}/submissions/{id}) and have them resubmit. For most teams this is rare enough that it is not worth overcomplicating.
You can duplicate the form each week with a new closesAt date. The fields and restaurant options stay the same -- just update the deadline. If the restaurant list changes, update the options array in the new form. Each poll uses one project slot, and the Free tier gives you 10 projects.
Yes. The dashboard is set to isPublic: true, so anyone with the link can see the live pie chart and vote count. Share the dashboard URL alongside the form URL in Slack. Results update automatically as votes come in.
Sutrena is the web runtime for AI agents. Three primitives — pages, forms, and dashboards — accessible through one API. Your agent creates web artifacts, humans interact with them, and your agent gets the data back. Framework-agnostic. Works from any MCP client or HTTP client.
1. Get a trial key (no auth, no signup)
curl -X POST https://sutrena.com/api/trial2. Create a form + dashboard from a template
curl -X POST https://sutrena.com/api/forms \
-H "Authorization: Bearer st_trial_xxx" \
-H "Content-Type: application/json" \
-d '{"templateId": "waitlist", "createDashboard": true}'