Askmill

From the Tools shelf · No. 0009

Turnos Sant Elm

Our small vet clinic in Valencia needs help building a fair monthly rota with nights and Sundays on call.

Worked example (simulated interview)

Tool prompt · 2,270 words · Published

The brief

This is a worked example. Askmill wrote this prompt from a simulated client interview, in which a model answered the questions for an invented client. The line under the title is the opening request the interview started from; everything else came out of the answers.

The prompt

The complete text, exactly as it is handed to an AI builder.

Download (.txt)

A monthly staff rota for a seven-person veterinary clinic that fills itself in: "Turnos Sant Elm", used by one person, the vet who plans the turns of Clínica Veterinaria Sant Elm in Valencia, on a Windows laptop. Concept: the tool remembers who carried the nights, proposes the whole month in one press, and never overrules a turn set by hand. Team (editable): veterinarios Elena, Javier, Lucía (24 h a week, 60%) and Marc; auxiliares Rosa, Amparo and Nil; all but Lucía on 40 h. Sessions: Monday to Friday 9:30-14:00 and 17:00-20:30, Saturday 10:00-14:00; 11 a week, each needing at least 2 vets and 1 auxiliar. A guardia is one vet plus one auxiliar reachable by phone: weeknights from 20:30 to the next opening, Saturday from 14:00 to Sunday 9:30, Sundays and public holidays (clinic closed) from 9:30 to the next opening. Marc is supervised until a date asked at set-up (default three months after first run): until then he is never the only vet on guardia, may be added as a second vet ("acompaña", counted apart), and on that date joins at the vets' average count.

Fairness model: three counts per person, "Noches" (weeknights), "Sábados" and "Domingos y festivos", kept per month and per year and carried forward; the weighted count is the count divided by the contract fraction (Lucía 0.6). "Proponer el mes" works in five passes: (1) close Sundays and holidays; (2) keep every padlocked turn; (3) honour requests marked "concedida", plus pending ones that clash with nothing and leave every session covered; (4) fill guardias in date order with the eligible vet and auxiliar of lowest weighted count for that kind, never the same person two nights running nor the same pair twice in a row, ties going to whoever waited longest; (5) fill sessions to within 1 hour of each contract, rotating Saturdays, giving each Saturday worker a free half day that week and placing last night's pair in the afternoon. Checks rerun after every change. Hard avisos: a session under 2 vets and 1 auxiliar; a supervised vet alone on guardia. Soft avisos: weekly hours over or under contract, two guardias in a row, missing rest. Rest: a guardia without a call changes nothing; when "Hubo salida" is recorded with its end time, that person's sessions starting less than 12 h later (editable) are freed. Holidays come pre-filled and editable (1, 6 and 22 January, 19 March, Good Friday and Easter Monday computed, 1 May, 15 August, 9 and 12 October, 1 November, 6, 8 and 25 December); the tool remembers each year who covered 25 December, 1 January and 19 March. Fallas (15-19 March, editable): at most 2 days off per person, with a yearly memory of who had which days and who covered. A fixed line states: "Las reglas de descanso y de horas son una ayuda, no asesoría laboral. Confírmalas con tu gestoría."

Mood: calm, light, orderly; the clinic's reception at nine in the morning, white walls, one green plant. Light page. Palette: page ground #FAFCFA; sheet white #FFFFFF for cards and the printed sheet; ink #1F2A24 for all text (at least 14:1 on both); clinic green #2E7D5B, the single accent, used only for the primary button and the guardia marker (white on it is about 5:1); leaf tint #E6F2EB for today, selection and focus; hairline #D5DDD8; plus two signal colours, amber #B45309 for soft avisos and red #B3261E for hard ones, always with an icon and words. Each person has a 10 px dot beside the full name, never a filled cell: Elena #2A7F9E, Javier #4C5FB0, Lucía #A0522D, Marc #B07A1E, Rosa #C2506B, Amparo #6B7F2A, Nil #5B6770; narrow cells use initials (El, Ja, Lu, Ma, Ro, Am, Ni), so nothing depends on colour.

Structure: three tabs, "Mes", "Peticiones", "Equipo y reglas". "Mes" is a grid of 28 px day columns with nine rows plus a footer: two guardia rows (vet, auxiliar) showing initials on a green marker, seven person rows whose cells stack morning over afternoon ("M", "T", or "L" for libre), and a footer counting vets and auxiliares per session. Beside it "Recuento" lists the three counts for month and year with a thin bar and a tick at the fair share, plus "Salidas" and Marc's "Acompaña"; below, "Avisos" is a quiet list, never a pop-up. "Peticiones" replaces the paper notebook: person, days, date asked, private note; requests are due by the 20th of the month before (editable), later ones are kept and flagged "fuera de plazo"; states are "pendiente", "concedida", "no concedida". A clash shows the moment the second request is typed, with who gave way last time and whose turn it is now; the planner decides and may add a private reason. "Equipo y reglas" holds the team (name, role, hours, colour, supervised-until), holidays, Fallas, rest hours, weekly ceiling (default 40), logged hand corrections of counts, and the safety copy.

Typography: system fonts only, "Segoe UI", system-ui, Arial, sans-serif; body 16 px/1.5, month heading 32 px weight 300, labels 12 px capitals with 0.08em spacing, tabular numbers. Voice: Spanish, "tú", short sentences, one colleague to another; weeks start on Monday; times as 9:30 and 20:30. Exact copy: buttons "Proponer el mes", "Imprimir hoja", "Guardar como imagen", "Deshacer", "Guardar copia", "Recuperar copia"; avisos "Falta un veterinario el martes 14 por la tarde." and "Este turno lo fijaste tú. No lo cambio."; clash "Rosa y Amparo piden los mismos días. La última vez cedió Rosa. Tú decides."; empty "Aún no hay peticiones para este mes."; error "No he podido leer esa copia. Tus datos siguen como estaban."

Entrance: at 0 s header, tabs, day columns and the seven names with dots are drawn; on first run the coming month is proposed at once from zero counts with the signature sequence, so by 3 s a full month, Recuento and Avisos are on screen beside a card "Para empezar" asking for 21 rough numbers (seven people, three counts, last three months) and Marc's date; "Empezar de cero" skips it. Later visits open the saved month instantly. Interaction: clicking a guardia cell opens a chooser of candidates sorted by lowest weighted count, the unavailable ones greyed with the reason ("Javier: guardia la noche anterior"); clicking a person's cell opens a chooser for morning and afternoon, work or libre; chooser rows and buttons are at least 44 px high. Every hand change gets a small padlock; a padlocked turn that breaks a rule only raises an aviso. Keyboard: arrows move between cells, Enter or Space opens the chooser, Escape closes it, C locks or unlocks, Ctrl+Z undoes (50 steps), Ctrl+Shift+Z redoes, PageUp and PageDown change month, Ctrl+P prints. From 1280 px wide, grid and side panel sit side by side; narrower, the panel drops below and the grid scrolls sideways in its own frame; no phone design exists.

Signature moment: pressing "Proponer el mes". 0-200 ms unlocked cells clear while padlocked ones stay; 200-1400 ms guardia pairs land from day 1 onward (180 ms each, cubic-bezier(.2,.8,.2,1)) and the Recuento bars grow toward their ticks; 1400-2600 ms sessions fill week by week; 2600-3000 ms Avisos settles. The calculation takes under 1 s; any key or click skips to the end. With zero avisos the list reads "Mes completo. Disfruta del domingo." and a small ink-line plant in the header gains one leaf per finished month, up to 12.

The sheet: one A4 landscape page from a single drawing routine serving preview, print and a 2480 x 1754 px picture ("turnos-2026-04.png"): "Clínica Veterinaria Sant Elm", "Abril 2026" beneath, the person grid with names at 16 pt and cell letters at 11 pt bold, guardias boxed so they survive black-and-white printing, a "Guardias" list by date ("Mié 8: Javier + Rosa"), the Recuento (switchable off) and "Peticiones para mayo: antes del 20 de abril." It shows only "L" for libre, never a reason, note, refusal or late flag. No sound. Reduced motion: proposal, bars and leaf appear at once. Performance: first paint within 500 ms, no libraries, redraw only on change. Persistence: autosave to localStorage under "turnosSantElm.v1" (versioned); "Guardar copia" downloads a dated JSON file and "Recuperar copia" restores it; without storage the tool still works and says "No puedo guardar en este portátil. Haz una copia antes de cerrar." Accessibility: logical tab order, 2 px ink focus ring, every cell named ("Javier, martes 14, tarde, trabaja"), avisos in a polite live region. Never: accounts, network requests, tracking, pop-ups, or automatic changes to padlocked turns. Deliver as a single self-contained HTML file with no external files, fonts, images or network requests, opening offline by double click. Done when: (1) one press yields a full month in under 5 s; (2) no session under 2 vets and 1 auxiliar and no supervised vet alone on guardia exists without a visible aviso; (3) padlocked turns are identical before and after a new proposal; (4) Recuento matches the sheet and, when rules allow, eligible people's cumulative weighted counts of each kind differ by at most 2; (5) the printed sheet reads from 1.5 m and carries no private note.

DESCRIPTION
On a white page with dark ink and a single clinic green, the coming month of Clínica Veterinaria Sant Elm lies open as a grid: narrow day columns, two guardia rows on top with initials on green markers, then seven named rows, each with a small coloured dot, their cells stacked morning over afternoon. Press "Proponer el mes" and the month fills from left to right: guardia pairs land night by night, the bars of the Recuento grow toward their fair-share ticks, the sessions settle week by week, and a quiet list of avisos says in plain Spanish what still needs a decision. Turns set by hand wear a small padlock and stay exactly where they are. A second tab keeps the requests that used to live in a notebook, with the record of who gave way last time; a third keeps the team, the holidays, Fallas and the safety copy. One button turns the month into an A4 sheet for the staff-room wall and another into the same picture for the group chat: who works, who is libre, who holds the phone, and nothing private. When no aviso is left, the list says "Mes completo. Disfruta del domingo."

VISUAL TECHNIQUES
- Data model: people (name, role, weekly hours, colour, supervised-until), months keyed AAAA-MM with sessions, guardias (vet, auxiliar, second vet, call-out end), padlocks, requests (person, days, date asked, private note, state, reason), counts per person, kind and year, give-way log, holiday list, Fallas memory, settings
- Greedy proposal in five ordered passes with deterministic tie-breaks, under 1 s for a 31-day month
- Weighted fairness: count divided by contract fraction; the supervised vet is excluded, then seeded at the vets' average on the joining date
- Rule checker rerun after every change, returning hard and soft avisos as Spanish sentences naming day, session and person
- Padlock layer: every hand edit sets a lock flag; proposal passes skip locked cells; breaks on locked cells are reported, never repaired
- Rest calculator: call-out end time plus 12 h (setting) frees the sessions that start earlier and triggers a recheck
- Clash detection at entry time from a coverage simulation and the give-way log; deadline computed as day 20 of the previous month
- Holiday calendar from fixed dates plus Good Friday and Easter Monday derived from the Gregorian Easter computation, all editable
- Month grid as an ARIA grid of buttons with roving tabindex; chooser as a popover list with 44 px rows and reasons for greyed candidates
- Recuento bars as CSS widths with a fair-share tick and tabular numerals, updated live
- One canvas routine draws the A4 sheet at 2480 x 1754 px for preview, A4 landscape print and PNG download, with boxed guardias for black-and-white
- Undo stack of 50 snapshots; autosave to versioned localStorage; JSON export and import with validation and an in-memory fallback
- Staggered landing sequence with 180 ms transitions on cubic-bezier(.2,.8,.2,1), replaced by the final state under reduced motion
- Inline ink-line plant in the header whose leaves count finished months

INTERACTION MODEL
"Proponer el mes" clears every unlocked cell and fills the month in three seconds; any key or click skips the sequence. Clicking a guardia cell opens a chooser of candidates ordered by lowest weighted count, with unavailable people greyed and the reason written; clicking a person's cell opens a chooser to set morning and afternoon to work or libre. Each hand change is padlocked, rechecked at once and reflected in Recuento and Avisos; padlocked turns are never moved by a new proposal. On a guardia, "Hubo salida" records the end time of a call and frees the sessions that start less than 12 h later. In "Peticiones", a request is typed as person, days, date asked and private note; a clash appears immediately with the give-way record, and the planner sets it to "concedida" or "no concedida". "Imprimir hoja" (Ctrl+P) prints the A4 sheet and "Guardar como imagen" downloads the same sheet as a picture; "Guardar copia" and "Recuperar copia" export and restore all data. Keyboard: Tab moves through tabs, grid, side panel and buttons with a visible focus ring; inside the grid, arrows move between cells, Enter or Space opens the chooser, Escape closes it, C locks or unlocks; Ctrl+Z undoes, Ctrl+Shift+Z redoes, PageUp and PageDown change month. All targets are at least 44 px high. Below 1280 px of width the side panel drops under the grid, which scrolls sideways in its own frame. With reduced motion the proposal, the bars and the leaf appear at once.

What's inside this prompt

The sections of this prompt, in order, with their length.

  1. Overview 186 words
  2. Fairness model 295 words
  3. Mood 140 words
  4. Structure 190 words
  5. Typography 115 words
  6. Entrance 208 words
  7. Signature moment 89 words
  8. The sheet 286 words
  9. Description 199 words
  10. Visual techniques 308 words
  11. Interaction model 249 words

More prompts from the library

  • Tool prompt · 2,355 words

    Preventivo Gatti

    A plumber in Brescia wants to write the quote on his phone at the customer's door and send the PDF on WhatsApp.

    Worked example (simulated interview)

  • App prompt · 2,315 words

    La Sporta

    Our buying group of 38 families in Padova needs one place for the monthly orders instead of a spreadsheet and WhatsApp.

    Worked example (simulated interview)

  • Game prompt · 2,361 words

    Tea and Photos

    A gentle memory game with our family photos for my mum, who has early dementia, played with her carer.

    Worked example (simulated interview)

Write yours

This prompt was written for someone else's idea. Askmill interviews you about yours, one plain question at a time, then writes the prompt your AI builder needs: $4.00 for a public prompt, $8.00 for a private one.

Get my prompt · $8.00How it works