Round-Robin Booking
Spread incoming bookings across a team so the next available person takes the slot.
What it adds
A shared booking page backed by a pool of team members, assigning each booking to one of them by an explicit rule.
What your agent is told to do
5
What your agent is told to do
5-
1
Start with the minimum coherent version: a named pool of members, a merged availability view, and one assignment rule. Weighted pools, priority tiers, and per-member routing rules should be deferred until the simple pool is in use.
-
2
Compute the offered slots by merging every eligible member's real availability, and record which member a slot came from so the assignment at booking time is not a second, separate guess.
-
3
Assign on commit, not on render. Two people looking at the same slot must not both be promised the same member, and the assignment must be written in the same transaction that creates the booking.
-
4
Build on the app's existing calendar connections and on Time Zone-Aware Scheduling rather than adding a parallel availability system. If Calendly Booking Sync is present, treat its externally held busy time as authoritative when merging.
-
5
Do not assign by a simple rotating counter. A counter ignores cancellations, absences, and caps, and drifts into giving one person every booking within a week.
Edge cases it handles
8
Edge cases it handles
8- Members who are away, off shift, or already at their daily cap must be excluded from the pool before slots are computed, not filtered out after a slot has already been offered.
- Distribution must stay fair once cancellations and no-shows are counted. If a cancelled booking still counts against the member's turn, whoever gets cancelled on most ends up with the least work.
- Availability from members in different zones must be merged as instants, not as local wall-clock times, or a slot will appear that is outside one member's actual working hours.
- When no member can honour a time, show no slot. Offering a slot and then reassigning or apologising afterwards is worse than an emptier calendar.
- If the assigned member becomes unavailable between booking and start, reassignment must follow a stated rule and notify both the attendee and the new member. Silent reassignment leaves the attendee expecting the wrong person.
- A booking that names a specific member directly must bypass the pool and still consume that member's availability and daily cap.
- Removing a member from the pool must not orphan their existing bookings. Decide explicitly whether those stay with them or are reassigned.
- Buffer time between bookings must be applied per member, so back-to-back slots are not offered against a member who needs a gap.
Definition of done
9
Definition of done
9- A booking page backed by a member pool offers merged availability across the whole pool.
- Members who are away or at their daily cap contribute no slots.
- Assignment happens atomically at booking time and cannot give one slot to two attendees.
- Distribution stays balanced after cancellations and no-shows.
- Availability across zones merges correctly and no unhonourable slot is ever offered.
- Reassignment when a member drops out follows a documented rule and notifies both sides.
- The feature reuses the app's existing calendar connections and time zone handling.
- The feature matches the existing design system.
- No existing functionality is broken.
Related features
Content Reporting
Content Reporting
Let users flag content that needs a human to look at it.
What it does
A reporting flow that captures a reason, a snapshot of context, and enough signal for a moderator — without exposing the reporter.
How it works
- 1 Add a report action to every user-generated surface: posts, comments, profiles, files, messages. Offer a short list of concrete reasons plus an optional free-text field.
- 2 Capture the context a moderator needs at the moment of reporting — the content ID, its current body, the author, and a timestamp — so the review is not dependent on the content still existing.
- 3 Give the reporter an immediate self-serve action alongside the report: hide this item, mute this author, or both. A report that takes hours to review leaves the user staring at the thing they reported.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/content-reporting
Maintenance Mode
Maintenance Mode
Pause the app on purpose instead of serving a generic 500.
What it does
An operator-controlled outage window that shows a real maintenance page, lets staff through, and tells API clients the truth.
How it works
- 1 Make the mode a runtime flag an operator can flip without a deploy, and store it somewhere that stays reachable when the database is the thing being maintained.
- 2 Allowlist bypass for authenticated staff and for the health check endpoint, so the people fixing the problem can still use the app and the load balancer does not remove every instance.
- 3 Return 503 with a Retry-After header for API and crawler requests, and render the maintenance page for browsers. A 200 on a maintenance page tells search engines your content is now an apology.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/maintenance-mode
Audit Log
Audit Log
Know who did what, and when.
What it does
An append-only record of security- and data-sensitive actions.
How it works
- 1 Log the actions that matter: sign-ins, permission changes, deletions, exports, billing changes, admin actions.
- 2 Capture actor, action, target, timestamp, and IP.
- 3 Make it append-only. An audit log that can be edited is not an audit log.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/audit-log
How it works
-
1
Copy the link
Grab the Markdown instruction URL for this feature.
-
2
Give it to your AI
Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.
-
3
It inspects, then implements
Your agent reads your existing app first, then adds the feature to fit it.
Works with your stack
These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.
Need it tighter than that? Customize the feature and tell it exactly what you're running.