Job ticket 941002 · consumer · availability roster · no subscription
Doodle Free is one group poll. Deciding which eight slots it offers was the hard part.
One group poll, one booking page, one 1:1, no card — that is the whole free plan, printed. Pro is USD 11 per seat per month billed annually. The slot grid, the time-zone conversions and the four messages around it are the work, and they are not metered.
Doodle is a trademark of Doodle Deutschland GmbH. This is an independent, unaffiliated comparison built on Doodle's own published pricing page, linked below and re-read every thirty days.
The availability roster — rendered in this browser
Sample data is illustrative, not a claim about Doodle. Every Doodle figure on this page comes from the linked pricing page, read 2026-09-28.
The prompt pack
Two prompts, each mapped one-to-one onto a Doodle feature you are currently rationed on. Run them from this page with a free key, or copy them into any free chat model — the text is identical either way, and it is printed in full at the bottom of this section so it survives this site.
Loading the pack from tools.json… If this fails, the full prompt text is still readable below.
One-time unlocks only, never a subscription. If a price ever appears here it was read from Stripe in that request, not typed by hand. An unlock is client-side gating, not secure payment verification: it is stored in this browser and cannot prove payment to anyone else.
What Doodle's own pricing page says
Read from doodle.com/en/premium — Free and Premium packages on 2026-09-28. Fields we could not read are marked unconfirmed rather than filled in with a plausible number.
| The job | Doodle's own pricing page (read 2026-09-28) | What it costs | This page + a free-tier model |
|---|---|---|---|
| A group poll | One, at a time | USD 0 | Unlimited grids, no poll to create |
| Deadlines and reminders | Pro feature | USD 11/seat/mo (annual) | The four messages, written for free |
| Hiding participants | Pro feature | USD 11/seat/mo (annual) | Not needed — nothing is collected here |
| Calendar connection | Doodle's | Doodle's | Not our job; the roster never touches a calendar |
What this replaces, and what it does not
A displacement claim you cannot substantiate is a lie with good typography. This is the whole scope, including the parts where Doodle wins.
The grid, before the poll exists
A short, defensible slot table with every time converted and printed with its city — plus the reason each slot survived the cut.
The four messages
Invite, reminder, deadline and fallback, written in the organiser's voice and refused rather than guessed when a date is missing.
Nothing is collected
No poll is created, no response is gathered, no calendar is read. The table and the strings are files you keep.
Not a scheduler
No poll, no participant responses, no booking page, no video link, no calendar sync. Those are Doodle's; this page writes what goes into them.
No time-zone service
Conversions are the model's arithmetic over the cities you supply, checked against your stated date. Verify one row before you send it — the scope-honesty check is the table's own caveat column.
No nudging anyone
The desk writes the messages; it does not send them, and it does not know who has replied.
The prompts, in full, as text
Copy these into any model. They are the product; the page around them is convenience. Each block is the exact system prompt the interactive runner sends, plus the user-message template.
Prompt 01 — 1. Poll grid · doodle-poll-grid v1.0.0 · best ally: Groq Cloud — free tier · openai/gpt-oss-20b
Replaces: Choosing the slots a group poll offers and converting each participant's time zone: the design work behind the one group poll Doodle Free allows at a time.
Why this model: A grid of eight slots across five zones has to be arithmetically exact and defensible; a mid-size free instruct model at low temperature keeps the conversions consistent instead of drifting on the fifth row. Fallback ally: OpenRouter — :free model variants.
System prompt (2001 chars):
You are the availability desk for a group meeting. The organiser gives you the meeting's purpose, who must attend, the date window, the length, and each person's home city and time zone. You return a slot table that is short enough to answer and wide enough to be fair, with every time converted, plus the reasons behind the cut. You are a scheduler, not a diplomat: the table must be defensible, not popular.
Return ONLY one JSON object. No markdown fences, no commentary, no preamble.
{
"kicker": string (max 8 words),
"title": string (the table's caption, max 8 words),
"columns": [ { "label": "Slot" }, { "label": "Organiser time" }, { "label": "Participant times" }, { "label": "Why this slot survives" }, { "label": "What it costs to take it" } ],
"rows": [ [ value, value, value — one array per row, same order as the columns, every cell a short string ] ],
"notes": [ string (one short footnote each) ]
}
Hard rules:
1. Return a table with these five columns and between six and nine rows. Never more than nine rows: a longer grid is the reason a poll goes unanswered.
2. Convert every slot into every participant's local time and print the city next to the time, e.g. '09:00 London'. Never print a bare time with no zone.
3. Mark at least two rows as the recommended pair and explain in the last column what a participant gives up by taking it, in under twelve words.
4. Apply daylight saving correctly for the stated date and city. If you are not certain, add a note saying the conversion must be checked.
5. Never invent a participant, a constraint or a duration. If a person has no stated hours, write 'unstated' in their column rather than guessing.
6. The 'Why this slot survives' column must reference a stated constraint (a hard limit, a stated preference, or plain fairness), never a vague claim like 'this is a good time'.
7. Add at most three notes, each naming an assumption you made that the organiser should check.
8. Write every string in the language of the brief.
User message template:
Variables:
{{purpose}}— What the meeting decides, and why it cannot be a message (max 600 chars) sample data shipped with the tool{{people}}— Who must attend, with home city and time zone (max 500 chars) sample data shipped with the tool{{constraints}}— Date window, length, and the hard limits (max 500 chars) sample data shipped with the tool
Output schema (the answer must match this exactly):
Decoding: temperature 0.5 · max 2200 output tokens · responseMimeType application/json · budget ~500 in / ~1,000 out for a nine-slot grid · cost per run: 1 request against Groq's published free base; the relay floor needs no key at all.
Prompt 02 — 2. Poll messages · doodle-poll-messages v1.0.0 · best ally: Google Gemini API — Free usage tier · gemini-2.5-flash-lite
Replaces: The strings around the grid: the invite that says why the meeting exists, the reminder the free plan does not send, the deadline sentence, and the plan for whoever cannot make any slot.
Why this model: Four short messages judged as a set, written against a finished grid; a fast long-context free model keeps one voice across all four without a large model's slower first token. Fallback ally: Groq Cloud — free tier.
System prompt (1900 chars):
You are the message bench that sits around an availability poll. You are given a finished slot table and you return the four strings an organiser actually types: the invite, the reminder, the deadline line, and the note to the people the grid does not fit. The tone is the organiser's, not a platform's: short, specific, and it explains the cost of not replying in one sentence.
Return ONLY one JSON object. No markdown fences, no commentary, no preamble.
{
"kicker": string (max 8 words),
"title": string (the table's caption, max 8 words),
"columns": [ { "label": "String" }, { "label": "Where it goes" }, { "label": "Read it in" }, { "label": "The job it has to do" } ],
"rows": [ [ value, value, value — one array per row, same order as the columns, every cell a short string ] ],
"notes": [ string (one short footnote each) ]
}
Hard rules:
1. Return exactly four rows in this order: invite, reminder, deadline, fallback. No fifth row.
2. The invite must state what the meeting decides and by when it must be decided — never 'please fill in your availability' with no reason attached.
3. The reminder must be under 40 words and must say what happens to the slot if nobody replies, in plain terms.
4. The deadline line must be a sentence a busy person accepts: give a real date and time from the brief, and never a vague 'ASAP'.
5. The fallback must name a second option — a decision by default, a delegate, or an async round — and must be something the organiser can actually do, drawn from the brief.
6. Never invent a date, a person or a policy. If the brief gives no deadline, write [NEEDS FACT: the deadline] in the deadline row and keep going.
7. No emoji, no exclamation marks, no 'Hi team!' greeting in the invite; the first word must be the meeting's purpose.
8. The 'job it has to do' column is for the organiser, not the recipient: one clause, never more than twelve words.
User message template:
Variables:
{{grid}}— The finished slot table (max 2500 chars) sample data shipped with the tool{{voice}}— The organiser's voice, and any house rules (max 400 chars) sample data shipped with the tool
Output schema (the answer must match this exactly):
Decoding: temperature 0.6 · max 1400 output tokens · responseMimeType application/json · budget ~450 in / ~500 out for four messages · cost per run: 1 request against the Gemini free tier; no per-minute spend, no card on file.
Questions worth asking before you cancel
Is one group poll a month or at a time?
The Free card prints 'One Group Poll' with no period attached, and Pro's line is 'Unlimited Group Polls' — so the honest reading is one poll at a time, not one per month. We quote the card rather than interpret it further.
Why not just use Doodle Free?
Use it. This page exists for the part Doodle does not do for you: deciding which slots to offer, converting five time zones correctly, and writing the four messages before you are tired.
How accurate are the time zones?
They are the model's arithmetic over the cities and date you supply, with daylight saving applied where it is certain. The table carries a note whenever a conversion needs a human eye — check the one row that matters most before you send the poll.
Where do the prices come from?
Doodle's own pricing page, read 2026-09-28, in the yearly-billing view. The monthly toggle figures did not print, so we assert the annual rate and the printed annual saving and mark the rest unconfirmed.
Does it work without an API key?
Yes. Copy the printed prompt into any free chat model, paste the JSON back, and the roster renders the same table with the same columns.
Send this to someone still paying for it
Nothing is loaded from X or LinkedIn until you click, and no share is counted, logged or reported back to us — the buttons are plain links to each network's own share page.