Workflow Hub

Share your best AI workflow. We could show it to 2M+ people.

Every day, we feature the community's top-voted AI workflow in The Rundown newsletter.

New here? Say hi + tell us what you’re working on 👋

Whether you joined five minutes ago or you’ve been lurking for months, I want to meet you! Tell us who you are and one thing you’re trying to figure out with AI. I read and reply to every intro 💜 Comment below with: Who you are: your name, what you do, and where you’re based What you’re working on: one thing you’d love to automate, speed up, or figure out with AI Your favorite tool right now (bonus points if it’s one we haven’t heard of) Your LinkedIn, if you’d like to connect. Totally optional

Brooke Benson Question
10

Build a Custom Outlook Booking Page with Claude Code

I was about to start paying for a scheduling tool when I realized I would still be stuck with someone else’s rules. Instead, I built my own booking page with Claude Code. It took two hours to go from starting the project to going live, and I use it every day now. It’s a Next.js app on Vercel with no database. Availability is read live from my Outlook calendar through Microsoft Graph, so there’s nothing to sync or keep updated. My working hours come from my Outlook settings, so when I change my hours there, the booking page follows. When someone books, it creates the calendar event and generates the meeting link. The guest chooses Zoom or Teams on the booking page, so they can use their preferred platform. The rules are the main reason I built it. Same-day bookings are not allowed, so the earliest anyone can book is my next working day. If someone visits the page after hours or on a weekend, the following working day is blocked too. The app also counts back-to-back meetings before offering a slot: if booking that time would give me a run of more than four meetings in a row, the slot does not appear. There’s also a group link that only shows times when both my business partner and I are available. I also avoided doing the setup manually. I had Claude control my Chrome browser and handle the Microsoft and Zoom developer-console work while I did something else. Step-by-step: 1. I described what I wanted to Claude Code, and it built the first working version in one shot. I then gave it my preferences to refine the app. 2. I had Claude use browser control to create a Microsoft Entra app registration, add the application permissions Calendars.ReadWrite, MailboxSettings.Read, User.Read.All, and Mail.Send, and grant admin consent. 3. I did the same for a Zoom Server-to-Server OAuth app with the meeting:write:meeting:admin scope. Teams meetings are available through Graph, so Zoom was the only additional setup. 4. The availability route pulls working hours from Graph mailboxSettings and free/busy data from calendar/getSchedule, then computes open slots across a 21-day window. Only busy and out-of-office events block a slot, so tentative invites do not reduce my availability. 5. The booking route rechecks that the slot is still free, creates the event with the guest attached, creates the Zoom or Teams meeting based on the guest’s selection, and sends me a heads-up email. 6. I deployed the app to Vercel and proxied it from my own domain so the link lives on my site with my branding.

Dean Mazlish
  • Claude Code
7

Build a Self-Improving AI Meeting Protocol for Clearer Decisions and Action Items

Build a Self-Improving AI Meeting Protocol for Teams This workflow was inspired by a question Brooke Benson posted in the Rundown Hub about meeting transcripts that miss action items or assign them to the wrong person. That felt familiar because I used to take meeting minutes as a management assistant. I often had to ask: Who said this? Was it a decision or only a suggestion? Who owns this action? Was the deadline confirmed? As a human note-taker, I could ask the people in the room and summarize while listening. A speaker might say: “Maybe Friday, but that depends on Marc.” My notes might become: “Friday is tentative and depends on Marc.” A transcriber captures more, but it also captures the verbal spaghetti. So the problem is not only transcription quality. It is ambiguity. Instead of only asking AI to interpret a messy transcript afterwards, what if the meeting itself produced clearer signals? The system has four layers: Step-by-step: 1. Meeting grammar Speaking habits that clarify speakers, decisions, actions, ownership and uncertainty. 2. Team information Context about names, roles, responsibilities, terminology and decision scope. 3. Output template A fixed structure for the meeting report. 4. Feedback loop AI compares corrections with its previous output and suggests improvements. The meeting grammar should stay lightweight. At the start, each participant states their name and role. Name the next speaker when possible: “Marc, go ahead.” “Sofie, what do you think?” Unclear contributions can be restated: “So Marc, Friday is possible only if the technical review is complete. Correct?” Mark proposals, decisions and actions differently: Proposal: “I suggest we move the launch to Friday.” Decision: “We are moving the launch to Friday.” Action: “Marc will update the schedule by Wednesday.” Tentative action: “Marc may update it, pending confirmation.” At transition points, repeat what was agreed: “The decision is Friday.” “Marc owns the schedule update.” “The deadline is Wednesday.” Uncertainty should also be explicit: “Owner to confirm.” “Deadline is provisional.” “This is a proposal, not a decision.” The AI should receive these rules directly: - Treat explicit decision language as confirmed. - Do not assign an owner unless ownership is clear. - Label tentative deadlines as tentative. - Flag uncertain speakers instead of guessing. - Prefer later explicit summaries over earlier ambiguous wording. The AI should also receive team context: name, role, responsibilities, decision authority, terminology and communication patterns. Example: Pieter Vermeulen Operations Usually responsible for scheduling and logistics. Often uses tentative language for proposals. Only assign ownership when he explicitly confirms it. These notes should stay transparent and editable. People should be able to review, change or reject notes about their own communication patterns. The report should use a fixed structure: Meeting title Date Participants Main topics Decisions Action items Owner Deadline Status Open questions Risks or dependencies Items requiring confirmation TL;DR This can be built into a shared internal assistant. It receives the meeting grammar, team information, transcript and output template. It should be conservative about certainty: Owner unclear → “Owner to confirm” Suggested deadline → “Tentative deadline” Unknown speaker → “Speaker unclear” Discussed proposal → “Proposal discussed, not confirmed” A human still reviews speaker attribution, decisions, owners, deadlines and confirmed items. Then the corrected report is fed back to the AI: “Which errors came from unclear meeting signals? Which came from missing team context? Which came from your interpretation? What should be improved?” The AI can suggest updates to the meeting grammar or team information. Example: Error: Several people discussed a task, but nobody clearly accepted ownership. Suggested grammar update: “When assigning an action, confirm owner and deadline in one sentence.” Or: Observed pattern: “Pieter often says ‘we should’ when proposing something.” Suggested profile update: “Treat ‘we should’ as a proposal unless explicitly confirmed.” Profile changes should be reviewed before they are stored. The workflow: meeting → transcript → AI report → human correction → error analysis → grammar/team-context update → review → next meeting Over time, fewer errors should need correction because the system becomes easier to interpret. The division of labor is simple: The transcriber captures everything. Humans resolve meaning and ambiguity. AI structures, summarizes and detects patterns. AI output quality depends not only on the prompt, but on the signals the AI receives. Sometimes the best improvement is to reduce ambiguity before it reaches the model.

Fien De Waele
  • ChatGPT
2

Automate Meeting Transcript Filing and Daily Call Prep in Notion

I used to open calls by asking people to remind me where we left off. The notes existed, but they were scattered across transcripts that nobody reviewed. I built two scheduled tasks that work together: one files every meeting at the end of the day, and the other sends me a prep brief every morning. At the end of each day, the first task pulls the verbatim transcript of every meeting I had into a shared Notion database. I use the transcript rather than the AI summary because summaries may be useful that afternoon but are less useful three weeks later when I need the exact thing somebody said. Each meeting becomes a page with the date, client, and attendees stored as real relations rather than text, so everything is filterable later. My business partner has access to the same database, so neither of us has to recap our calls for the other. At 7 a.m., the second task reads my Outlook calendar, finds the email thread or threads tied to each meeting, reads the associated transcripts in Notion, and writes a short prep brief for each one: what we said last time, what I owe them, and what is still open. The part that took the most thought was deciding what should not be filed in the main database. Personal meetings are skipped by keyword. Small internal meetings are screened for topics such as pay, hiring, legal matters, or client-confidential material. Those meetings are routed to a separate database with different permissions. When a meeting is ambiguous, it defaults to the restricted database. Failing toward privacy is the right default when a robot is making the decision. Step-by-step: 1. I turned on Zoom AI Companion so every meeting produces a transcript, then connected Zoom, Notion, and Outlook. 2. I built a Notion database for meeting notes with Date, Client, and Attendees as relation properties connected to existing Clients and People databases. These relations make the notes findable later. 3. I wrote the end-of-day task to pull each transcript verbatim, create a page, match the client by keyword against my client list, and add attendees based on the transcript speakers. 4. I filtered the speaker list because notetaker bots appear as attendees. I removed Fireflies, Otter, Fathom, and the other notetaker bots, and automatically created a person page for anyone who was genuinely new. 5. I deduplicated meetings using the title and date. If a page already existed as a placeholder, I updated it in place instead of creating a second one. 6. I added a skip list for personal meetings and a confidentiality screen that routes sensitive internal meetings to a separate, permission-restricted database. When the classification is unclear, it defaults to restricted. 7. I wrote the morning task to read that day’s calendar, search email and transcripts for each attendee and company, and produce one short brief per meeting covering the last contact, open commitments, and what I owe them. 8. I scheduled both tasks: the filing task for the end of the day and the briefing task for early morning.

Dean Mazlish
  • Claude
  • Notion
1