From d4bca6be05241fbc3c9eb41f0899f2ac235271c5 Mon Sep 17 00:00:00 2001 From: Silke Nodwell Date: Sun, 18 Jan 2026 21:43:52 +0000 Subject: [PATCH 1/9] Add code for generating an LLM summary of the meetup events Also add GitHub Actions workflow --- .github/workflows/summarise_upcoming_events | 40 ++++++ .gitignore | 2 + .../summarise_events_with_llms.py | 119 ++++++++++++++++++ 3 files changed, 161 insertions(+) create mode 100644 .github/workflows/summarise_upcoming_events create mode 100644 tools/llm_meetup_summary/summarise_events_with_llms.py diff --git a/.github/workflows/summarise_upcoming_events b/.github/workflows/summarise_upcoming_events new file mode 100644 index 0000000..0b2171c --- /dev/null +++ b/.github/workflows/summarise_upcoming_events @@ -0,0 +1,40 @@ +name: Summarise Upcoming Meetup Events + +on: + workflow_dispatch: + schedule: + - cron: '0 7 1 * *' # Monday at 7am GMT + +import-meetup: + if: github.repository == 'Women-Coding-Community/WomenCodingCommunity.github.io' + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Cache pip + uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('tools/llm_meetup_summary/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r tools/llm_meetup_summary/requirements.txt + + - name: Run summary script + run: | + cd tools/llm_meetup_summary + python summarise_events_with_llms.py + with: + token: ${{ secrets.OPENAI_API_KEY }} + token: ${{ secrets.SLACK_SUMMARY_BOT_WEBHOOK }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 673390b..e9a004f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,8 @@ lib/ pyvenv.cfg tools/blog_automation/service_account_key.json tools/blog_automation/venv +.env +tools/llm_meetup_summary/venv # Claude Code local settings (may contain personal preferences) .claude/settings.local.json diff --git a/tools/llm_meetup_summary/summarise_events_with_llms.py b/tools/llm_meetup_summary/summarise_events_with_llms.py new file mode 100644 index 0000000..cd307d5 --- /dev/null +++ b/tools/llm_meetup_summary/summarise_events_with_llms.py @@ -0,0 +1,119 @@ +import re +import logging +from datetime import date +import openai +import requests +import yaml +import dotenv +import os +import argparse + +dotenv.load_dotenv() + +# Constants +EVENTS_FILE = '../../_data/events.yml' +MODEL = "gpt-3.5-turbo" +REQUIRED_EVENT_FIELDS = ['title', 'description', 'date', 'time', 'link'] + +# Setup logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + +def summarise_events_with_llm(events_file): + try: + events = _load_events(events_file) + future_events = _filter_future_events(events) + + if not future_events: + logger.warning("No future events found") + return "No upcoming events scheduled." + + formatted_events = _format_events(future_events) + llm_summary = _get_llm_summary(formatted_events) + formatted_summary = _format_for_slack(llm_summary) + + return formatted_summary + except Exception as e: + logger.error(f"Error summarizing events: {e}", exc_info=True) + raise + +def _load_events(events_file): + try: + with open(events_file) as f: + return yaml.safe_load(f) + except FileNotFoundError: + raise FileNotFoundError(f"Events file not found: {events_file}") + except yaml.YAMLError as e: + raise ValueError(f"Invalid YAML in events file: {e}") + +def _filter_future_events(events): + today = date.today().isoformat() + return [event for event in events if event.get('date', '') > today] + +def _validate_event(event): + missing_fields = [field for field in REQUIRED_EVENT_FIELDS if field not in event] + if missing_fields: + raise ValueError(f"Event missing fields: {missing_fields}") + +def _format_events(events): + formatted = '' + for index, event in enumerate(events): + _validate_event(event) + formatted += ( + f"## Event {index}\n\n" + f"Title: {event['title']}\n\n" + f"Description: {event['description']}\n\n" + f"Date: {event['date']}\n\n" + f"Time: {event['time']}\n\n" + f"Meetup Link: {event['link'].get('path', 'N/A')}\n\n" + ) + return formatted + +def _get_llm_summary(formatted_events): + prompt = f""" + Summarise the upcoming Meetup events for our community, Women Coding Community, in the form of a Slack + message in markdown format. + Output an error message if you have any problems, in the format '#ERROR: message'. + + ## Upcoming Meetup events + {formatted_events} + """ + + response = openai.chat.completions.create( + model=MODEL, + messages=[{"role": "user", "content": prompt}] + ) + + summary = response.choices[0].message.content + + if '#ERROR:' in summary: + raise ValueError(f'LLM Error: {summary}') + + return summary + +def _format_for_slack(text): + # Convert Markdown bold to Slack format + text = text.replace('**', '*') + # Reformat Markdown links to Slack format + text = re.sub(r'\[([^\]]+)\]\(([^)]+)\)', r'<\2|\1>', text) + return text + +def _post_to_slack(message): + webhook_url = os.getenv('SLACK_SUMMARY_BOT_WEBHOOK') + if not webhook_url: + raise ValueError("SLACK_SUMMARY_BOT_WEBHOOK not set in environment variables") + + response = requests.post(webhook_url, json={'text': message}) + response.raise_for_status() + logger.info("Message posted to Slack successfully") + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Summarise upcoming Meetup events and post to Slack.") + parser.add_argument("--events_file", help="Path to the events YAML file.", default=EVENTS_FILE) + args = parser.parse_args() + try: + summary = summarise_events_with_llm(args.events_file) + _post_to_slack(summary) + except Exception as e: + logger.error(f"Failed to summarize and post events: {e}", exc_info=True) + raise \ No newline at end of file From 34b1090db264ed0338253f6bbd78e6f34b85c085 Mon Sep 17 00:00:00 2001 From: Silke Nodwell Date: Mon, 19 Jan 2026 23:40:25 +0000 Subject: [PATCH 2/9] --amend --- .github/workflows/summarise_upcoming_events | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/summarise_upcoming_events b/.github/workflows/summarise_upcoming_events index 0b2171c..46b2bb1 100644 --- a/.github/workflows/summarise_upcoming_events +++ b/.github/workflows/summarise_upcoming_events @@ -3,9 +3,10 @@ name: Summarise Upcoming Meetup Events on: workflow_dispatch: schedule: - - cron: '0 7 1 * *' # Monday at 7am GMT + - cron: '0 7 * * 1' # Monday at 7am GMT -import-meetup: +jobs: + summarise_events_with_llms: if: github.repository == 'Women-Coding-Community/WomenCodingCommunity.github.io' runs-on: ubuntu-latest @@ -35,6 +36,6 @@ import-meetup: run: | cd tools/llm_meetup_summary python summarise_events_with_llms.py - with: - token: ${{ secrets.OPENAI_API_KEY }} - token: ${{ secrets.SLACK_SUMMARY_BOT_WEBHOOK }} \ No newline at end of file + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} \ No newline at end of file From c6cc9ec2a0694b04b9e58b3d57a358100c321423 Mon Sep 17 00:00:00 2001 From: Silke Nodwell Date: Mon, 19 Jan 2026 23:44:38 +0000 Subject: [PATCH 3/9] --amend --- .github/workflows/summarise_upcoming_events | 41 --------------------- 1 file changed, 41 deletions(-) delete mode 100644 .github/workflows/summarise_upcoming_events diff --git a/.github/workflows/summarise_upcoming_events b/.github/workflows/summarise_upcoming_events deleted file mode 100644 index 46b2bb1..0000000 --- a/.github/workflows/summarise_upcoming_events +++ /dev/null @@ -1,41 +0,0 @@ -name: Summarise Upcoming Meetup Events - -on: - workflow_dispatch: - schedule: - - cron: '0 7 * * 1' # Monday at 7am GMT - -jobs: - summarise_events_with_llms: - if: github.repository == 'Women-Coding-Community/WomenCodingCommunity.github.io' - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v5 - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: '3.12' - - - name: Cache pip - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('tools/llm_meetup_summary/requirements.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r tools/llm_meetup_summary/requirements.txt - - - name: Run summary script - run: | - cd tools/llm_meetup_summary - python summarise_events_with_llms.py - env: - OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} \ No newline at end of file From f3a48ada23219cbaa95fb461804911f99fd217d1 Mon Sep 17 00:00:00 2001 From: Silke Nodwell Date: Mon, 19 Jan 2026 23:47:52 +0000 Subject: [PATCH 4/9] --amend --- .../workflows/summarise_upcoming_events.yml | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .github/workflows/summarise_upcoming_events.yml diff --git a/.github/workflows/summarise_upcoming_events.yml b/.github/workflows/summarise_upcoming_events.yml new file mode 100644 index 0000000..f078ecc --- /dev/null +++ b/.github/workflows/summarise_upcoming_events.yml @@ -0,0 +1,41 @@ +name: Summarise Upcoming Meetup Events + +on: + workflow_dispatch: + schedule: + - cron: '0 7 * * 1' # Monday at 7am GMT + +jobs: + summarise_events_with_llms: + if: github.repository == 'Women-Coding-Community/WomenCodingCommunity.github.io' + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Cache pip + uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('tools/llm_meetup_summary/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r tools/llm_meetup_summary/requirements.txt + + - name: Run summary script + run: | + cd tools/llm_meetup_summary + python summarise_events_with_llms.py + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} \ No newline at end of file From 3adca3e04f0d144fa97b1d4b28f42d7f158b6878 Mon Sep 17 00:00:00 2001 From: Silke Nodwell Date: Sat, 24 Jan 2026 20:18:44 +0000 Subject: [PATCH 5/9] Add fewshot examples to prompt --- tools/README.md | 12 ++ .../examples/01_example_events.md | 1 + .../llm_meetup_summary/examples/01_summary.md | 1 + .../examples/02_example_events.md | 1 + .../llm_meetup_summary/examples/02_summary.md | 1 + .../examples/03_example_events.md | 1 + .../llm_meetup_summary/examples/03_summary.md | 1 + .../examples/current_prompt.md | 118 ++++++++++++++ tools/llm_meetup_summary/requirements.txt | 22 +++ .../summarise_events_with_llms.py | 124 ++++++++++++--- tools/llm_meetup_summary/tests/tests.py | 149 ++++++++++++++++++ 11 files changed, 411 insertions(+), 20 deletions(-) create mode 100644 tools/llm_meetup_summary/examples/01_example_events.md create mode 100644 tools/llm_meetup_summary/examples/01_summary.md create mode 100644 tools/llm_meetup_summary/examples/02_example_events.md create mode 100644 tools/llm_meetup_summary/examples/02_summary.md create mode 100644 tools/llm_meetup_summary/examples/03_example_events.md create mode 100644 tools/llm_meetup_summary/examples/03_summary.md create mode 100644 tools/llm_meetup_summary/examples/current_prompt.md create mode 100644 tools/llm_meetup_summary/requirements.txt create mode 100644 tools/llm_meetup_summary/tests/tests.py diff --git a/tools/README.md b/tools/README.md index 12a5c82..a8de8e1 100644 --- a/tools/README.md +++ b/tools/README.md @@ -10,6 +10,16 @@ 5) `automation_prepare_adhoc_availability.py`: updates mentors data with specified availability hours in `samples/adhoc-prep.xlsx` in preparation for monthly ad-hoc mentorship. +6) `llm_meetup_summary\summarise_events_with_llms` sends a Slack summary of our upcoming Meetup events. Note - currently set up to use Silke's API key on the GitHub repo. Please don't abuse this :) This can be run with the GitHub Actions workflow `summarise_upcoming_events.yml` OR run manually from the llm_meetup_summary directory: +1. `python -m venv venv` (first time only) +2. `source venv/bin/activate` +3. `pip install -r requirements.txt` +4. `python summarise_events_with_llms.py [--test] [--events-file]` + +If using the test flag, then the Meetup summary will be posted to #test-meetup-summaries channel. Otherwise it will be posted to the #events channel. + +And currently the LLM prompt is very basic - it's open to improvement suggestions! + ### Dependencies python 3.11 or above @@ -102,3 +112,5 @@ Hence, to run the GHA workflow, you only need to provide: - the month value (e.g 9 for September) For more information on the GC service account configurations, you can read the [README](blog_automation/README.md) in the blog automation folder. + + diff --git a/tools/llm_meetup_summary/examples/01_example_events.md b/tools/llm_meetup_summary/examples/01_example_events.md new file mode 100644 index 0000000..7d9f8c5 --- /dev/null +++ b/tools/llm_meetup_summary/examples/01_example_events.md @@ -0,0 +1 @@ +## Event 1\n\nTitle: January Book Club: Radical Candor\n\nDescription: Women Coding Community Book Club! This month's Book: Radical Candor by Kim Scott "Reading Radical Candor will help you build, lead, and inspire teams to do the best work of their lives. Kim Scott's insights--based on her experience, keen observational intelligence and analysis--will help you be a better leader and create a more effective organization." Sheryl Sandberg author of the New York Times bestseller Lean In If you would like to have a say in our next book club read, do join our channel progbookclub. If you would like to volunteer, do join our volunteering channel bookclubvolunteers. Schedule: 19:00 - 19:10 Introduction to Women Coding Community 19:10 - 20:00: Book Summary Discussion Host: Silke Nodwell LinkedIn Silke holds an MSci Mathematics, First Class Honours, from Imperial College London. She has two years of experience in data science and machine learning. Silke is also a Lead at Women Coding Community, where she runs the bookclub and organizes talks by inspirational women. In her free time, she enjoys running and hiking. She has just completed her first marathon in May 2025. Co-host: Prabha Venkatesh LinkedIn Prabha is the Lead Data Scientist at Milbotix. She’s previously worked as a Full-stack Software Developer and holds a Master’s degree from Lancaster University. She’s also a Lead at the Women Coding Community. Her interests include reading books, travel and cinema. About Women Coding Community Empowering women in their tech careers through education, mentorship, community building, and career services is our mission. We provide workshops and events, connect members with industry mentors, foster a supportive community through meetups and conferences, and raise awareness for more inclusive industry practices. Website LinkedIn Slack Instagram X Code of Conduct At Women Coding Community we are committed to a vibrant, supportive community. When attending our events, all members should follow our Code of Conduct. The full version can be found by following the link.\n\nDate: MON, JAN 26, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/311641238/\n\n## Event 2\n\nTitle: Fireside Chat with Meena - The Engineer Who Became a Manager\n\nDescription: Most engineering managers step into leadership roles with little preparation for what truly awaits them. Beyond learning new skills or processes, the transition often triggers a deeper internal struggle - an identity shift that reshapes how they see their value, their work, and themselves. In this fireside chat, Meena draws from her newly published book, The Engineer Who Became a Manager, to explore the rarely discussed psychological journey of moving from individual contributor to engineering leader. Together, we’ll unpack why the transition feels so disorienting, why common management training often falls short, and why many new managers quietly question whether they’ve made the right choice. Rather than focusing on frameworks or tactics, this conversation goes beneath the surface to examine the loss of technical identity, the emotional weight of leadership, and the search for meaning that accompanies this career shift. Expect an honest, thoughtful discussion that validates the experience many engineering managers have but rarely articulate. Date: 28th Jan 2026 Time: 7:00 PM BST Who should attend First-time engineering managers Senior engineers considering a management path Leaders and mentors supporting engineers through career transitions What you’ll gain A clearer understanding of the identity shift behind the manager transition Make sense of the emotional challenges Language to make sense of common struggles new managers face A more grounded perspective on leadership beyond technical expertise Speaker: Meena Venkataraman LinkedIn Founder of Code to Leadership, inspired by watching too many brilliant engineers struggle not with competence, but with identity, during the transition into management. With over 20 years of experience working with technology teams and leaders, she brings a rare blend of technical context, leadership insight, and deep empathy for first-time managers. An ICF-credentialed coach, Meena works closely with new engineering managers to help them develop leadership approaches that are sustainable, human, and true to who they are, rather than forcing them into one-size-fits-all management models. The Engineer Who Became a Manager is her first book, exploring the often unspoken psychological journey engineers face when stepping into leadership roles. Host: Madhura Chaganty LinkedIn About Women Coding Community: We empower women in tech through education, mentorship, and career support. Join us for hands-on workshops, events, and a welcoming community. Website: https:www.womencodingcommunity.com Code of Conduct: We are committed to inclusivity and respect. Please review our community guidelines. Follow us : LinkedIn Instagram YouTube Meetup GitHub Slack email\n\nDate: WED, JAN 28, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312820191/\n\n## Event 3\n\nTitle: DevOps++: Turning Green IT Ambition into Daily Engineering Actions\n\nDescription: Many organizations assume that moving workloads to renewable energy or buying efficient hardware is enough to become sustainable. In practice, software can run on green power and still waste energy through idle compute, over allocation, and inefficient design choices. This session reframes Green IT as an engineering discipline: reduce waste through concrete, repeatable actions and use CO2 as validation rather than the primary steering mechanism. You will be introduced to DevOps, a practical framework that embeds sustainability into the daily work of DevOps teams by integrating measurable sustainability actions directly into the delivery lifecycle. We will walk through the DevOps playbook: Detect, Expose, Fix, Validate. You will see how observability and AI can surface inefficiencies, how testing can make sustainability signals visible earlier, how pipelines can automate improvements in code and infrastructure as code, and how Ops and FinOps can validate outcomes using energy, emissions, cost, and performance. Attendees will leave with a clear, end to end approach to turn sustainability ambition into operational habits and measurable impact. Speaker: Wilco Burggraaf, Sustainable Digital Architect Transformation Lead LinkedIn Wilco Burggraaf is the Principal Lead of Green Software Engineering at HighTech Innovators, based in Rijen, The Netherlands. With over 20 years of experience in software development (primarily C), Wilco has worked as a developer, architect, agile tester, and IT advisor. Since 2024, he has focused on advancing sustainable digital practices, specializing in performance-driven, low-impact software systems. A recognized Green Software Champion, Wilco shares practical insights through talks and hands-on articles on topics like energy profiling, architecture, and real-world green coding. He’s passionate about bridging the gap between DevOps and sustainability, empowering engineers to write software that runs smarter and lasts longer. Explore his work on Medium: https:medium.comwilco.burggraaf About Women Coding Community: We empower women in tech through education, mentorship, and career support. Join us for hands-on workshops, events, and a welcoming community. Website: https:www.womencodingcommunity.com Code of Conduct: We are committed to inclusivity and respect. Please review our community guidelines. Follow us : LinkedIn Instagram YouTube Meetup GitHub Slack email\n\nDate: WED, FEB 04, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312842063/\n\n## Event 4\n\nTitle: Java bootcamp Launch\n\nDescription: Do you want to build strong Java skills but don't know where to start? Do you feel overwhelmed juggling tutorials, documentation, and scattered resources while trying to learn Java on your own? Our Java Bootcamp is designed to give you a clear, structured path to build practical Java skills through hands-on coding, not endless theory. But here's the thing: we're building this bootcamp WITH you, not just FOR you. What you'll learn: Learn essential development skills, from basic syntax to advanced features. Build a solid foundation to masterJAVA and use any framework in future. We need your input to shape the program around what the community actually needs. Help us design it: Your preferences, availability, and experience level will determine how we structure this journey. Whether you're starting from scratch or ready to level up. To get the place, follow the link Java Bootcamp Form to register! We’re planning a two-phase series Beginner Advanced Java Bootcamp for developers who want to build strong, practical Java skills through hands-on coding practice. The goal is to help you gain confidence with Javawhether you’re just starting or aiming to write clean, production-grade code using best practices. What to expect: The bootcamp will be self-paced based on JetBrains Academy, with learning structured across Beginner and Advanced phases so you can progress step by step at your own pace. Schedule: 19:00 - 19:20 Kick-off 19:20 - 20:00 Hands-on and QA Earn a Certificate: Upon completing the course, including participation in discussions and submission of the homework, you will receive a certificate recognising your achievements. Host: Adriana Zencke Zimmermann Senior Software Engineer LinkedIn Github Adriana Zencke Zimmermann is the Founder Director of Women Coding Community, a senior software engineer at Centric Software with over 15 years of experience. Throughout her career, she has specialized in building robust backend systems, leading engineering teams, and driving technology initiatives in industries such as compliance, data management, and enterprise solutions. Adriana is passionate about inclusion in tech, empowering others through mentorship, and fostering environments where women can thrive both professionally and personally Host: Sonali Goel Senior Software Engineer at Tesco Tech Website LinkedIn Award-winning (Women in Tech Award 2025 Winner) Senior Software Development Engineer with 15 years of experience specialising in large-scale e-commerce, cloud-native Java architectures, and Agentic AI. As a core leader at the Women Coding Community (WCC), she blends technical depth with a passion for mentorship, community initiatives, open source contributions and more. About Women Coding Community Empowering women in their tech careers through education, mentorship, community building, and career services is our mission. We provide workshops and events, connect members with industry mentors, foster a supportive community through meetups and conferences, and raise awareness for more inclusive industry practices. Website LinkedIn Slack Instagram(5Bwww.instagram.comwomencodingcommunity5D(www.instagram.comwomencodingcommunity))) Code of Conduct At Women Coding Community, we are committed to a vibrant, supportive community. When attending our events, all members should follow our Code of Conduct. The full version you can find by following the link: https:womencodingcommunity.comcode-of-conduct\n\nDate: THU, FEB 05, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312920485/\n\n \ No newline at end of file diff --git a/tools/llm_meetup_summary/examples/01_summary.md b/tools/llm_meetup_summary/examples/01_summary.md new file mode 100644 index 0000000..56d8abd --- /dev/null +++ b/tools/llm_meetup_summary/examples/01_summary.md @@ -0,0 +1 @@ +Hey team! Here are our upcoming Women Coding Community events to look forward to:\n\n1️⃣ **January Book Club: Radical Candor** \n🗓️ Mon, Jan 26, 2026 | 7:00 PM GMT \nJoin host Silke Nodwell and co-host Prabha Venkatesh to dive into *Radical Candor* by Kim Scott — a must-read for leadership and team inspiration. \nMeetup link: https://www.meetup.com/women-coding-community/events/311641238/\n\n2️⃣ **Fireside Chat with Meena - The Engineer Who Became a Manager** \n🗓️ Wed, Jan 28, 2026 | 7:00 PM GMT \nExplore the psychological journey new engineering managers face, with insights from Meena Venkataraman’s new book. Hosted by Madhura Chaganty. \nMeetup link: https://www.meetup.com/women-coding-community/events/312820191/\n\n3️⃣ **DevOps++: Turning Green IT Ambition into Daily Engineering Actions** \n🗓️ Wed, Feb 4, 2026 | 7:00 PM GMT \nLearn how to embed sustainability into DevOps with Wilco Burggraaf, focusing on actionable steps to reduce IT energy waste. \nMeetup link: https://www.meetup.com/women-coding-community/events/312842063/\n\n4️⃣ **Java Bootcamp Launch** \n🗓️ Thu, Feb 5, 2026 | 7:00 PM GMT \nKickstart or level up your Java skills with hands-on coding! Help us shape the bootcamp to fit community needs. Hosted by Adriana Zencke Zimmermann & Sonali Goel. \nMeetup link: https://www.meetup.com/women-coding-community/events/312920485/\n\nDon’t miss these opportunities to learn, connect, and grow together. Let’s keep empowering women in tech! 💪✨ \ No newline at end of file diff --git a/tools/llm_meetup_summary/examples/02_example_events.md b/tools/llm_meetup_summary/examples/02_example_events.md new file mode 100644 index 0000000..81c2627 --- /dev/null +++ b/tools/llm_meetup_summary/examples/02_example_events.md @@ -0,0 +1 @@ +## Event 1\n\nTitle: January Book Club: Radical Candor\n\nDescription: Women Coding Community Book Club! This month's Book: Radical Candor by Kim Scott "Reading Radical Candor will help you build, lead, and inspire teams to do the best work of their lives. Kim Scott's insights--based on her experience, keen observational intelligence and analysis--will help you be a better leader and create a more effective organization." Sheryl Sandberg author of the New York Times bestseller Lean In If you would like to have a say in our next book club read, do join our channel progbookclub. If you would like to volunteer, do join our volunteering channel bookclubvolunteers. Schedule: 19:00 - 19:10 Introduction to Women Coding Community 19:10 - 20:00: Book Summary Discussion Host: Silke Nodwell LinkedIn Silke holds an MSci Mathematics, First Class Honours, from Imperial College London. She has two years of experience in data science and machine learning. Silke is also a Lead at Women Coding Community, where she runs the bookclub and organizes talks by inspirational women. In her free time, she enjoys running and hiking. She has just completed her first marathon in May 2025. Co-host: Prabha Venkatesh LinkedIn Prabha is the Lead Data Scientist at Milbotix. She’s previously worked as a Full-stack Software Developer and holds a Master’s degree from Lancaster University. She’s also a Lead at the Women Coding Community. Her interests include reading books, travel and cinema. About Women Coding Community Empowering women in their tech careers through education, mentorship, community building, and career services is our mission. We provide workshops and events, connect members with industry mentors, foster a supportive community through meetups and conferences, and raise awareness for more inclusive industry practices. Website LinkedIn Slack Instagram X Code of Conduct At Women Coding Community we are committed to a vibrant, supportive community. When attending our events, all members should follow our Code of Conduct. The full version can be found by following the link.\n\nDate: MON, JAN 26, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/311641238/\n\n## Event 2\n\nTitle: Fireside Chat with Meena - The Engineer Who Became a Manager\n\nDescription: Most engineering managers step into leadership roles with little preparation for what truly awaits them. Beyond learning new skills or processes, the transition often triggers a deeper internal struggle - an identity shift that reshapes how they see their value, their work, and themselves. In this fireside chat, Meena draws from her newly published book, The Engineer Who Became a Manager, to explore the rarely discussed psychological journey of moving from individual contributor to engineering leader. Together, we’ll unpack why the transition feels so disorienting, why common management training often falls short, and why many new managers quietly question whether they’ve made the right choice. Rather than focusing on frameworks or tactics, this conversation goes beneath the surface to examine the loss of technical identity, the emotional weight of leadership, and the search for meaning that accompanies this career shift. Expect an honest, thoughtful discussion that validates the experience many engineering managers have but rarely articulate. Date: 28th Jan 2026 Time: 7:00 PM BST Who should attend First-time engineering managers Senior engineers considering a management path Leaders and mentors supporting engineers through career transitions What you’ll gain A clearer understanding of the identity shift behind the manager transition Make sense of the emotional challenges Language to make sense of common struggles new managers face A more grounded perspective on leadership beyond technical expertise Speaker: Meena Venkataraman LinkedIn Founder of Code to Leadership, inspired by watching too many brilliant engineers struggle not with competence, but with identity, during the transition into management. With over 20 years of experience working with technology teams and leaders, she brings a rare blend of technical context, leadership insight, and deep empathy for first-time managers. An ICF-credentialed coach, Meena works closely with new engineering managers to help them develop leadership approaches that are sustainable, human, and true to who they are, rather than forcing them into one-size-fits-all management models. The Engineer Who Became a Manager is her first book, exploring the often unspoken psychological journey engineers face when stepping into leadership roles. Host: Madhura Chaganty LinkedIn \n\nDate: WED, JAN 28, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312820191/\n\n## Event 3\n\nTitle: DevOps++: Turning Green IT Ambition into Daily Engineering Actions\n\nDescription: Many organizations assume that moving workloads to renewable energy or buying efficient hardware is enough to become sustainable. In practice, software can run on green power and still waste energy through idle compute, over allocation, and inefficient design choices. This session reframes Green IT as an engineering discipline: reduce waste through concrete, repeatable actions and use CO2 as validation rather than the primary steering mechanism. You will be introduced to DevOps, a practical framework that embeds sustainability into the daily work of DevOps teams by integrating measurable sustainability actions directly into the delivery lifecycle. We will walk through the DevOps playbook: Detect, Expose, Fix, Validate. You will see how observability and AI can surface inefficiencies, how testing can make sustainability signals visible earlier, how pipelines can automate improvements in code and infrastructure as code, and how Ops and FinOps can validate outcomes using energy, emissions, cost, and performance. Attendees will leave with a clear, end to end approach to turn sustainability ambition into operational habits and measurable impact. Speaker: Wilco Burggraaf, Sustainable Digital Architect Transformation Lead LinkedIn Wilco Burggraaf is the Principal Lead of Green Software Engineering at HighTech Innovators, based in Rijen, The Netherlands. With over 20 years of experience in software development (primarily C), Wilco has worked as a developer, architect, agile tester, and IT advisor. Since 2024, he has focused on advancing sustainable digital practices, specializing in performance-driven, low-impact software systems. A recognized Green Software Champion, Wilco shares practical insights through talks and hands-on articles on topics like energy profiling, architecture, and real-world green coding. He’s passionate about bridging the gap between DevOps and sustainability, empowering engineers to write software that runs smarter and lasts longer. Explore his work on Medium: https:medium.comwilco.burggraaf About Women Coding Community: We empower women in tech through education, mentorship, and career support. Join us for hands-on workshops, events, and a welcoming community. Website: https:www.womencodingcommunity.com Code of Conduct: We are committed to inclusivity and respect. Please review our community guidelines. Follow us : LinkedIn Instagram YouTube Meetup GitHub Slack email\n\nDate: WED, FEB 04, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312842063/\n\n## Event 4\n\nTitle: Java bootcamp Launch\n\nDescription: Do you want to build strong Java skills but don't know where to start? Do you feel overwhelmed juggling tutorials, documentation, and scattered resources while trying to learn Java on your own? Our Java Bootcamp is designed to give you a clear, structured path to build practical Java skills through hands-on coding, not endless theory. But here's the thing: we're building this bootcamp WITH you, not just FOR you. What you'll learn: Learn essential development skills, from basic syntax to advanced features. Build a solid foundation to masterJAVA and use any framework in future. We need your input to shape the program around what the community actually needs. Help us design it: Your preferences, availability, and experience level will determine how we structure this journey. Whether you're starting from scratch or ready to level up. To get the place, follow the link Java Bootcamp Form to register! We’re planning a two-phase series Beginner Advanced Java Bootcamp for developers who want to build strong, practical Java skills through hands-on coding practice. The goal is to help you gain confidence with Javawhether you’re just starting or aiming to write clean, production-grade code using best practices. What to expect: The bootcamp will be self-paced based on JetBrains Academy, with learning structured across Beginner and Advanced phases so you can progress step by step at your own pace. Schedule: 19:00 - 19:20 Kick-off 19:20 - 20:00 Hands-on and QA Earn a Certificate: Upon completing the course, including participation in discussions and submission of the homework, you will receive a certificate recognising your achievements. Host: Adriana Zencke Zimmermann Senior Software Engineer LinkedIn Github Adriana Zencke Zimmermann is the Founder Director of Women Coding Community, a senior software engineer at Centric Software with over 15 years of experience. Throughout her career, she has specialized in building robust backend systems, leading engineering teams, and driving technology initiatives in industries such as compliance, data management, and enterprise solutions. Adriana is passionate about inclusion in tech, empowering others through mentorship, and fostering environments where women can thrive both professionally and personally Host: Sonali Goel Senior Software Engineer at Tesco Tech Website LinkedIn Award-winning (Women in Tech Award 2025 Winner) Senior Software Development Engineer with 15 years of experience specialising in large-scale e-commerce, cloud-native Java architectures, and Agentic AI. As a core leader at the Women Coding Community (WCC), she blends technical depth with a passion for mentorship, community initiatives, open source contributions and more. About Women Coding Community Empowering women in their tech careers through education, mentorship, community building, and career services is our mission. We provide workshops and events, connect members with industry mentors, foster a supportive community through meetups and conferences, and raise awareness for more inclusive industry practices. Website LinkedIn Slack Instagram(5Bwww.instagram.comwomencodingcommunity5D(www.instagram.comwomencodingcommunity))) Code of Conduct At Women Coding Community, we are committed to a vibrant, supportive community. When attending our events, all members should follow our Code of Conduct. The full version you can find by following the link: https:womencodingcommunity.comcode-of-conduct\n\nDate: THU, FEB 05, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312920485/\n\n \ No newline at end of file diff --git a/tools/llm_meetup_summary/examples/02_summary.md b/tools/llm_meetup_summary/examples/02_summary.md new file mode 100644 index 0000000..ae05c8e --- /dev/null +++ b/tools/llm_meetup_summary/examples/02_summary.md @@ -0,0 +1 @@ +Hey everyone! Here are our upcoming Women Coding Community Meetup events:\n\n1️⃣ January Book Club: *Radical Candor* \n🗓️ Mon, Jan 26, 2026 | 7:00 PM GMT \nJoin us for a discussion on *Radical Candor* by Kim Scott. Get inspired to lead and build better teams! \nHost: Silke Nodwell & Co-host: Prabha Venkatesh \n🔗 RSVP: https://www.meetup.com/women-coding-community/events/311641238/\n\n2️⃣ Fireside Chat with Meena: *The Engineer Who Became a Manager* \n🗓️ Wed, Jan 28, 2026 | 7:00 PM GMT \nExplore the emotional and identity shifts when transitioning into engineering leadership with Meena Venkataraman. \nHost: Madhura Chaganty \n🔗 RSVP: https://www.meetup.com/women-coding-community/events/312820191/\n\n3️⃣ DevOps++: *Turning Green IT Ambition into Daily Engineering Actions* \n🗓️ Wed, Feb 4, 2026 | 7:00 PM GMT \nLearn practical steps to integrate sustainability into DevOps workflows with Wilco Burggraaf. \n🔗 RSVP: https://www.meetup.com/women-coding-community/events/312842063/\n\n4️⃣ Java Bootcamp Launch \n🗓️ Thu, Feb 5, 2026 | 7:00 PM GMT \nKickstart or level up your Java skills with a hands-on bootcamp designed WITH your input! \nHosts: Adriana Zencke Zimmermann & Sonali Goel \n🔗 Register here: https://www.meetup.com/women-coding-community/events/312920485/\n\nLooking forward to seeing you there and growing together! 🚀\n\n#WomenInTech #Community #Meetups \ No newline at end of file diff --git a/tools/llm_meetup_summary/examples/03_example_events.md b/tools/llm_meetup_summary/examples/03_example_events.md new file mode 100644 index 0000000..6405694 --- /dev/null +++ b/tools/llm_meetup_summary/examples/03_example_events.md @@ -0,0 +1 @@ +## Event 1\n\nTitle: Build Better Flows, Reduce Bugs, Think Like a Product Person\n\nDescription: Understanding user journeys is one of the most powerful skills you can develop whether you’re a software developer, a future Product Manager, or someone transitioning into tech. In this hands-on workshop, we’ll map a real product flow step-by-step and explore how clear journeys improve development speed, reduce bugs, and create better user experiences. You will learn: What a user journey really is Happy path vs. edge cases (and why both matter) Common mistakes in product flows How journeys shape API needs, validations and error handling How clearer journeys improve communication between devs, PMs, and designers A live exercise: building the Password Reset flow together Who should come: No product background required just curiosity. Perfect for developers, PM candidates, designers, and career switchers who want to strengthen their product thinking. Tugce Kizilcakar LinkedIn Product Manager with 10 years of experience in fintech and large-scale payment platforms. She has built mobile payment and QR solutions used by millions, and worked across banks, startups and high-growth tech teams. Known for her clear, structured approach to product thinking, Tugce mentors women in tech and helps them navigate career transitions, user journeys and communication with technical teams. About Women Coding Community: We empower women in tech through education, mentorship, and career support. Join us for hands-on workshops, events, and a welcoming community. Website: https:www.womencodingcommunity.com Code of Conduct: We are committed to inclusivity and respect. Please review our community guidelines. Follow us : LinkedIn Instagram YouTube Meetup GitHub Slack email\n\nDate: WED, JAN 07, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312393688/\n\n## Event 2\n\nTitle: January Book Club: Radical Candor\n\nDescription: Women Coding Community Book Club! This month's Book: Radical Candor by Kim Scott "Reading Radical Candor will help you build, lead, and inspire teams to do the best work of their lives. Kim Scott's insights--based on her experience, keen observational intelligence and analysis--will help you be a better leader and create a more effective organization." Sheryl Sandberg author of the New York Times bestseller Lean In If you would like to have a say in our next book club read, do join our channel progbookclub. If you would like to volunteer, do join our volunteering channel bookclubvolunteers. Schedule: 19:00 - 19:10 Introduction to Women Coding Community 19:10 - 20:00: Book Summary Discussion Host: Silke Nodwell LinkedIn Silke holds an MSci Mathematics, First Class Honours, from Imperial College London. She has two years of experience in data science and machine learning. Silke is also a Lead at Women Coding Community, where she runs the bookclub and organizes talks by inspirational women. In her free time, she enjoys running and hiking. She has just completed her first marathon in May 2025. Co-host: Prabha Venkatesh LinkedIn Prabha is the Lead Data Scientist at Milbotix. She’s previously worked as a Full-stack Software Developer and holds a Master’s degree from Lancaster University. She’s also a Lead at the Women Coding Community. Her interests include reading books, travel and cinema. About Women Coding Community Empowering women in their tech careers through education, mentorship, community building, and career services is our mission. We provide workshops and events, connect members with industry mentors, foster a supportive community through meetups and conferences, and raise awareness for more inclusive industry practices. Website LinkedIn Slack Instagram X Code of Conduct At Women Coding Community we are committed to a vibrant, supportive community. When attending our events, all members should follow our Code of Conduct. The full version can be found by following the link.\n\nDate: MON, JAN 26, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/311641238/\n\n \ No newline at end of file diff --git a/tools/llm_meetup_summary/examples/03_summary.md b/tools/llm_meetup_summary/examples/03_summary.md new file mode 100644 index 0000000..e0a3e8e --- /dev/null +++ b/tools/llm_meetup_summary/examples/03_summary.md @@ -0,0 +1 @@ +Hey @here! Here are the upcoming Women Coding Community Meetup events to look forward to:\n\n1️⃣ **Build Better Flows, Reduce Bugs, Think Like a Product Person** \n📅 Date: Wed, Jan 7, 2026 \n⏰ Time: 7:00 PM GMT \n📍 Join a hands-on workshop to learn user journey mapping, improving dev speed, and product thinking with Tugce Kizilcakar, a seasoned Product Manager. No prior product experience needed! \n🔗 RSVP here: https://www.meetup.com/women-coding-community/events/312393688/\n\n2️⃣ **January Book Club: Radical Candor** \n📅 Date: Mon, Jan 26, 2026 \n⏰ Time: 7:00 PM GMT \n📍 Dive into Radical Candor by Kim Scott with hosts Silke Nodwell and Prabha Venkatesh. Great chance to discuss leadership and team inspiration. \n🔗 RSVP here: https://www.meetup.com/women-coding-community/events/311641238/\n\nDon’t miss these opportunities to learn, connect, and grow. See you there! 💪✨ diff --git a/tools/llm_meetup_summary/examples/current_prompt.md b/tools/llm_meetup_summary/examples/current_prompt.md new file mode 100644 index 0000000..820b52d --- /dev/null +++ b/tools/llm_meetup_summary/examples/current_prompt.md @@ -0,0 +1,118 @@ + +Summarise the upcoming Meetup events for our community, Women Coding Community, in the form of a Slack +message in markdown format. Start directly with the summary without any introduction. + +Output an error message if you have any problems, in the format '#ERROR: message'. + +# About Women Coding Community +Empowering women in their tech careers through education, mentorship, community building, and career +services is our mission. We provide workshops and events, connect members with industry mentors, foster +a supportive community through meetups and conferences, and raise awareness for more inclusive industry +practices. + +# Example Events 1 +## Event 1\n\nTitle: January Book Club: Radical Candor\n\nDescription: Women Coding Community Book Club! This month's Book: Radical Candor by Kim Scott "Reading Radical Candor will help you build, lead, and inspire teams to do the best work of their lives. Kim Scott's insights--based on her experience, keen observational intelligence and analysis--will help you be a better leader and create a more effective organization." Sheryl Sandberg author of the New York Times bestseller Lean In If you would like to have a say in our next book club read, do join our channel progbookclub. If you would like to volunteer, do join our volunteering channel bookclubvolunteers. Schedule: 19:00 - 19:10 Introduction to Women Coding Community 19:10 - 20:00: Book Summary Discussion Host: Silke Nodwell LinkedIn Silke holds an MSci Mathematics, First Class Honours, from Imperial College London. She has two years of experience in data science and machine learning. Silke is also a Lead at Women Coding Community, where she runs the bookclub and organizes talks by inspirational women. In her free time, she enjoys running and hiking. She has just completed her first marathon in May 2025. Co-host: Prabha Venkatesh LinkedIn Prabha is the Lead Data Scientist at Milbotix. She’s previously worked as a Full-stack Software Developer and holds a Master’s degree from Lancaster University. She’s also a Lead at the Women Coding Community. Her interests include reading books, travel and cinema. About Women Coding Community Empowering women in their tech careers through education, mentorship, community building, and career services is our mission. We provide workshops and events, connect members with industry mentors, foster a supportive community through meetups and conferences, and raise awareness for more inclusive industry practices. Website LinkedIn Slack Instagram X Code of Conduct At Women Coding Community we are committed to a vibrant, supportive community. When attending our events, all members should follow our Code of Conduct. The full version can be found by following the link.\n\nDate: MON, JAN 26, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/311641238/\n\n## Event 2\n\nTitle: Fireside Chat with Meena - The Engineer Who Became a Manager\n\nDescription: Most engineering managers step into leadership roles with little preparation for what truly awaits them. Beyond learning new skills or processes, the transition often triggers a deeper internal struggle - an identity shift that reshapes how they see their value, their work, and themselves. In this fireside chat, Meena draws from her newly published book, The Engineer Who Became a Manager, to explore the rarely discussed psychological journey of moving from individual contributor to engineering leader. Together, we’ll unpack why the transition feels so disorienting, why common management training often falls short, and why many new managers quietly question whether they’ve made the right choice. Rather than focusing on frameworks or tactics, this conversation goes beneath the surface to examine the loss of technical identity, the emotional weight of leadership, and the search for meaning that accompanies this career shift. Expect an honest, thoughtful discussion that validates the experience many engineering managers have but rarely articulate. Date: 28th Jan 2026 Time: 7:00 PM BST Who should attend First-time engineering managers Senior engineers considering a management path Leaders and mentors supporting engineers through career transitions What you’ll gain A clearer understanding of the identity shift behind the manager transition Make sense of the emotional challenges Language to make sense of common struggles new managers face A more grounded perspective on leadership beyond technical expertise Speaker: Meena Venkataraman LinkedIn Founder of Code to Leadership, inspired by watching too many brilliant engineers struggle not with competence, but with identity, during the transition into management. With over 20 years of experience working with technology teams and leaders, she brings a rare blend of technical context, leadership insight, and deep empathy for first-time managers. An ICF-credentialed coach, Meena works closely with new engineering managers to help them develop leadership approaches that are sustainable, human, and true to who they are, rather than forcing them into one-size-fits-all management models. The Engineer Who Became a Manager is her first book, exploring the often unspoken psychological journey engineers face when stepping into leadership roles. Host: Madhura Chaganty LinkedIn About Women Coding Community: We empower women in tech through education, mentorship, and career support. Join us for hands-on workshops, events, and a welcoming community. Website: https:www.womencodingcommunity.com Code of Conduct: We are committed to inclusivity and respect. Please review our community guidelines. Follow us : LinkedIn Instagram YouTube Meetup GitHub Slack email\n\nDate: WED, JAN 28, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312820191/\n\n## Event 3\n\nTitle: DevOps++: Turning Green IT Ambition into Daily Engineering Actions\n\nDescription: Many organizations assume that moving workloads to renewable energy or buying efficient hardware is enough to become sustainable. In practice, software can run on green power and still waste energy through idle compute, over allocation, and inefficient design choices. This session reframes Green IT as an engineering discipline: reduce waste through concrete, repeatable actions and use CO2 as validation rather than the primary steering mechanism. You will be introduced to DevOps, a practical framework that embeds sustainability into the daily work of DevOps teams by integrating measurable sustainability actions directly into the delivery lifecycle. We will walk through the DevOps playbook: Detect, Expose, Fix, Validate. You will see how observability and AI can surface inefficiencies, how testing can make sustainability signals visible earlier, how pipelines can automate improvements in code and infrastructure as code, and how Ops and FinOps can validate outcomes using energy, emissions, cost, and performance. Attendees will leave with a clear, end to end approach to turn sustainability ambition into operational habits and measurable impact. Speaker: Wilco Burggraaf, Sustainable Digital Architect Transformation Lead LinkedIn Wilco Burggraaf is the Principal Lead of Green Software Engineering at HighTech Innovators, based in Rijen, The Netherlands. With over 20 years of experience in software development (primarily C), Wilco has worked as a developer, architect, agile tester, and IT advisor. Since 2024, he has focused on advancing sustainable digital practices, specializing in performance-driven, low-impact software systems. A recognized Green Software Champion, Wilco shares practical insights through talks and hands-on articles on topics like energy profiling, architecture, and real-world green coding. He’s passionate about bridging the gap between DevOps and sustainability, empowering engineers to write software that runs smarter and lasts longer. Explore his work on Medium: https:medium.comwilco.burggraaf About Women Coding Community: We empower women in tech through education, mentorship, and career support. Join us for hands-on workshops, events, and a welcoming community. Website: https:www.womencodingcommunity.com Code of Conduct: We are committed to inclusivity and respect. Please review our community guidelines. Follow us : LinkedIn Instagram YouTube Meetup GitHub Slack email\n\nDate: WED, FEB 04, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312842063/\n\n## Event 4\n\nTitle: Java bootcamp Launch\n\nDescription: Do you want to build strong Java skills but don't know where to start? Do you feel overwhelmed juggling tutorials, documentation, and scattered resources while trying to learn Java on your own? Our Java Bootcamp is designed to give you a clear, structured path to build practical Java skills through hands-on coding, not endless theory. But here's the thing: we're building this bootcamp WITH you, not just FOR you. What you'll learn: Learn essential development skills, from basic syntax to advanced features. Build a solid foundation to masterJAVA and use any framework in future. We need your input to shape the program around what the community actually needs. Help us design it: Your preferences, availability, and experience level will determine how we structure this journey. Whether you're starting from scratch or ready to level up. To get the place, follow the link Java Bootcamp Form to register! We’re planning a two-phase series Beginner Advanced Java Bootcamp for developers who want to build strong, practical Java skills through hands-on coding practice. The goal is to help you gain confidence with Javawhether you’re just starting or aiming to write clean, production-grade code using best practices. What to expect: The bootcamp will be self-paced based on JetBrains Academy, with learning structured across Beginner and Advanced phases so you can progress step by step at your own pace. Schedule: 19:00 - 19:20 Kick-off 19:20 - 20:00 Hands-on and QA Earn a Certificate: Upon completing the course, including participation in discussions and submission of the homework, you will receive a certificate recognising your achievements. Host: Adriana Zencke Zimmermann Senior Software Engineer LinkedIn Github Adriana Zencke Zimmermann is the Founder Director of Women Coding Community, a senior software engineer at Centric Software with over 15 years of experience. Throughout her career, she has specialized in building robust backend systems, leading engineering teams, and driving technology initiatives in industries such as compliance, data management, and enterprise solutions. Adriana is passionate about inclusion in tech, empowering others through mentorship, and fostering environments where women can thrive both professionally and personally Host: Sonali Goel Senior Software Engineer at Tesco Tech Website LinkedIn Award-winning (Women in Tech Award 2025 Winner) Senior Software Development Engineer with 15 years of experience specialising in large-scale e-commerce, cloud-native Java architectures, and Agentic AI. As a core leader at the Women Coding Community (WCC), she blends technical depth with a passion for mentorship, community initiatives, open source contributions and more. About Women Coding Community Empowering women in their tech careers through education, mentorship, community building, and career services is our mission. We provide workshops and events, connect members with industry mentors, foster a supportive community through meetups and conferences, and raise awareness for more inclusive industry practices. Website LinkedIn Slack Instagram(5Bwww.instagram.comwomencodingcommunity5D(www.instagram.comwomencodingcommunity))) Code of Conduct At Women Coding Community, we are committed to a vibrant, supportive community. When attending our events, all members should follow our Code of Conduct. The full version you can find by following the link: https:womencodingcommunity.comcode-of-conduct\n\nDate: THU, FEB 05, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312920485/\n\n + +# Summary 1 +Hey team! Here are our upcoming Women Coding Community events to look forward to:\n\n1️⃣ **January Book Club: Radical Candor** \n🗓️ Mon, Jan 26, 2026 | 7:00 PM GMT \nJoin host Silke Nodwell and co-host Prabha Venkatesh to dive into *Radical Candor* by Kim Scott — a must-read for leadership and team inspiration. \nMeetup link: https://www.meetup.com/women-coding-community/events/311641238/\n\n2️⃣ **Fireside Chat with Meena - The Engineer Who Became a Manager** \n🗓️ Wed, Jan 28, 2026 | 7:00 PM GMT \nExplore the psychological journey new engineering managers face, with insights from Meena Venkataraman’s new book. Hosted by Madhura Chaganty. \nMeetup link: https://www.meetup.com/women-coding-community/events/312820191/\n\n3️⃣ **DevOps++: Turning Green IT Ambition into Daily Engineering Actions** \n🗓️ Wed, Feb 4, 2026 | 7:00 PM GMT \nLearn how to embed sustainability into DevOps with Wilco Burggraaf, focusing on actionable steps to reduce IT energy waste. \nMeetup link: https://www.meetup.com/women-coding-community/events/312842063/\n\n4️⃣ **Java Bootcamp Launch** \n🗓️ Thu, Feb 5, 2026 | 7:00 PM GMT \nKickstart or level up your Java skills with hands-on coding! Help us shape the bootcamp to fit community needs. Hosted by Adriana Zencke Zimmermann & Sonali Goel. \nMeetup link: https://www.meetup.com/women-coding-community/events/312920485/\n\nDon’t miss these opportunities to learn, connect, and grow together. Let’s keep empowering women in tech! 💪✨ + +# Example Events 2 +## Event 1\n\nTitle: January Book Club: Radical Candor\n\nDescription: Women Coding Community Book Club! This month's Book: Radical Candor by Kim Scott "Reading Radical Candor will help you build, lead, and inspire teams to do the best work of their lives. Kim Scott's insights--based on her experience, keen observational intelligence and analysis--will help you be a better leader and create a more effective organization." Sheryl Sandberg author of the New York Times bestseller Lean In If you would like to have a say in our next book club read, do join our channel progbookclub. If you would like to volunteer, do join our volunteering channel bookclubvolunteers. Schedule: 19:00 - 19:10 Introduction to Women Coding Community 19:10 - 20:00: Book Summary Discussion Host: Silke Nodwell LinkedIn Silke holds an MSci Mathematics, First Class Honours, from Imperial College London. She has two years of experience in data science and machine learning. Silke is also a Lead at Women Coding Community, where she runs the bookclub and organizes talks by inspirational women. In her free time, she enjoys running and hiking. She has just completed her first marathon in May 2025. Co-host: Prabha Venkatesh LinkedIn Prabha is the Lead Data Scientist at Milbotix. She’s previously worked as a Full-stack Software Developer and holds a Master’s degree from Lancaster University. She’s also a Lead at the Women Coding Community. Her interests include reading books, travel and cinema. About Women Coding Community Empowering women in their tech careers through education, mentorship, community building, and career services is our mission. We provide workshops and events, connect members with industry mentors, foster a supportive community through meetups and conferences, and raise awareness for more inclusive industry practices. Website LinkedIn Slack Instagram X Code of Conduct At Women Coding Community we are committed to a vibrant, supportive community. When attending our events, all members should follow our Code of Conduct. The full version can be found by following the link.\n\nDate: MON, JAN 26, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/311641238/\n\n## Event 2\n\nTitle: Fireside Chat with Meena - The Engineer Who Became a Manager\n\nDescription: Most engineering managers step into leadership roles with little preparation for what truly awaits them. Beyond learning new skills or processes, the transition often triggers a deeper internal struggle - an identity shift that reshapes how they see their value, their work, and themselves. In this fireside chat, Meena draws from her newly published book, The Engineer Who Became a Manager, to explore the rarely discussed psychological journey of moving from individual contributor to engineering leader. Together, we’ll unpack why the transition feels so disorienting, why common management training often falls short, and why many new managers quietly question whether they’ve made the right choice. Rather than focusing on frameworks or tactics, this conversation goes beneath the surface to examine the loss of technical identity, the emotional weight of leadership, and the search for meaning that accompanies this career shift. Expect an honest, thoughtful discussion that validates the experience many engineering managers have but rarely articulate. Date: 28th Jan 2026 Time: 7:00 PM BST Who should attend First-time engineering managers Senior engineers considering a management path Leaders and mentors supporting engineers through career transitions What you’ll gain A clearer understanding of the identity shift behind the manager transition Make sense of the emotional challenges Language to make sense of common struggles new managers face A more grounded perspective on leadership beyond technical expertise Speaker: Meena Venkataraman LinkedIn Founder of Code to Leadership, inspired by watching too many brilliant engineers struggle not with competence, but with identity, during the transition into management. With over 20 years of experience working with technology teams and leaders, she brings a rare blend of technical context, leadership insight, and deep empathy for first-time managers. An ICF-credentialed coach, Meena works closely with new engineering managers to help them develop leadership approaches that are sustainable, human, and true to who they are, rather than forcing them into one-size-fits-all management models. The Engineer Who Became a Manager is her first book, exploring the often unspoken psychological journey engineers face when stepping into leadership roles. Host: Madhura Chaganty LinkedIn \n\nDate: WED, JAN 28, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312820191/\n\n## Event 3\n\nTitle: DevOps++: Turning Green IT Ambition into Daily Engineering Actions\n\nDescription: Many organizations assume that moving workloads to renewable energy or buying efficient hardware is enough to become sustainable. In practice, software can run on green power and still waste energy through idle compute, over allocation, and inefficient design choices. This session reframes Green IT as an engineering discipline: reduce waste through concrete, repeatable actions and use CO2 as validation rather than the primary steering mechanism. You will be introduced to DevOps, a practical framework that embeds sustainability into the daily work of DevOps teams by integrating measurable sustainability actions directly into the delivery lifecycle. We will walk through the DevOps playbook: Detect, Expose, Fix, Validate. You will see how observability and AI can surface inefficiencies, how testing can make sustainability signals visible earlier, how pipelines can automate improvements in code and infrastructure as code, and how Ops and FinOps can validate outcomes using energy, emissions, cost, and performance. Attendees will leave with a clear, end to end approach to turn sustainability ambition into operational habits and measurable impact. Speaker: Wilco Burggraaf, Sustainable Digital Architect Transformation Lead LinkedIn Wilco Burggraaf is the Principal Lead of Green Software Engineering at HighTech Innovators, based in Rijen, The Netherlands. With over 20 years of experience in software development (primarily C), Wilco has worked as a developer, architect, agile tester, and IT advisor. Since 2024, he has focused on advancing sustainable digital practices, specializing in performance-driven, low-impact software systems. A recognized Green Software Champion, Wilco shares practical insights through talks and hands-on articles on topics like energy profiling, architecture, and real-world green coding. He’s passionate about bridging the gap between DevOps and sustainability, empowering engineers to write software that runs smarter and lasts longer. Explore his work on Medium: https:medium.comwilco.burggraaf About Women Coding Community: We empower women in tech through education, mentorship, and career support. Join us for hands-on workshops, events, and a welcoming community. Website: https:www.womencodingcommunity.com Code of Conduct: We are committed to inclusivity and respect. Please review our community guidelines. Follow us : LinkedIn Instagram YouTube Meetup GitHub Slack email\n\nDate: WED, FEB 04, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312842063/\n\n## Event 4\n\nTitle: Java bootcamp Launch\n\nDescription: Do you want to build strong Java skills but don't know where to start? Do you feel overwhelmed juggling tutorials, documentation, and scattered resources while trying to learn Java on your own? Our Java Bootcamp is designed to give you a clear, structured path to build practical Java skills through hands-on coding, not endless theory. But here's the thing: we're building this bootcamp WITH you, not just FOR you. What you'll learn: Learn essential development skills, from basic syntax to advanced features. Build a solid foundation to masterJAVA and use any framework in future. We need your input to shape the program around what the community actually needs. Help us design it: Your preferences, availability, and experience level will determine how we structure this journey. Whether you're starting from scratch or ready to level up. To get the place, follow the link Java Bootcamp Form to register! We’re planning a two-phase series Beginner Advanced Java Bootcamp for developers who want to build strong, practical Java skills through hands-on coding practice. The goal is to help you gain confidence with Javawhether you’re just starting or aiming to write clean, production-grade code using best practices. What to expect: The bootcamp will be self-paced based on JetBrains Academy, with learning structured across Beginner and Advanced phases so you can progress step by step at your own pace. Schedule: 19:00 - 19:20 Kick-off 19:20 - 20:00 Hands-on and QA Earn a Certificate: Upon completing the course, including participation in discussions and submission of the homework, you will receive a certificate recognising your achievements. Host: Adriana Zencke Zimmermann Senior Software Engineer LinkedIn Github Adriana Zencke Zimmermann is the Founder Director of Women Coding Community, a senior software engineer at Centric Software with over 15 years of experience. Throughout her career, she has specialized in building robust backend systems, leading engineering teams, and driving technology initiatives in industries such as compliance, data management, and enterprise solutions. Adriana is passionate about inclusion in tech, empowering others through mentorship, and fostering environments where women can thrive both professionally and personally Host: Sonali Goel Senior Software Engineer at Tesco Tech Website LinkedIn Award-winning (Women in Tech Award 2025 Winner) Senior Software Development Engineer with 15 years of experience specialising in large-scale e-commerce, cloud-native Java architectures, and Agentic AI. As a core leader at the Women Coding Community (WCC), she blends technical depth with a passion for mentorship, community initiatives, open source contributions and more. About Women Coding Community Empowering women in their tech careers through education, mentorship, community building, and career services is our mission. We provide workshops and events, connect members with industry mentors, foster a supportive community through meetups and conferences, and raise awareness for more inclusive industry practices. Website LinkedIn Slack Instagram(5Bwww.instagram.comwomencodingcommunity5D(www.instagram.comwomencodingcommunity))) Code of Conduct At Women Coding Community, we are committed to a vibrant, supportive community. When attending our events, all members should follow our Code of Conduct. The full version you can find by following the link: https:womencodingcommunity.comcode-of-conduct\n\nDate: THU, FEB 05, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312920485/\n\n + +# Summary 2 +Hey everyone! Here are our upcoming Women Coding Community Meetup events:\n\n1️⃣ January Book Club: *Radical Candor* \n🗓️ Mon, Jan 26, 2026 | 7:00 PM GMT \nJoin us for a discussion on *Radical Candor* by Kim Scott. Get inspired to lead and build better teams! \nHost: Silke Nodwell & Co-host: Prabha Venkatesh \n🔗 RSVP: https://www.meetup.com/women-coding-community/events/311641238/\n\n2️⃣ Fireside Chat with Meena: *The Engineer Who Became a Manager* \n🗓️ Wed, Jan 28, 2026 | 7:00 PM GMT \nExplore the emotional and identity shifts when transitioning into engineering leadership with Meena Venkataraman. \nHost: Madhura Chaganty \n🔗 RSVP: https://www.meetup.com/women-coding-community/events/312820191/\n\n3️⃣ DevOps++: *Turning Green IT Ambition into Daily Engineering Actions* \n🗓️ Wed, Feb 4, 2026 | 7:00 PM GMT \nLearn practical steps to integrate sustainability into DevOps workflows with Wilco Burggraaf. \n🔗 RSVP: https://www.meetup.com/women-coding-community/events/312842063/\n\n4️⃣ Java Bootcamp Launch \n🗓️ Thu, Feb 5, 2026 | 7:00 PM GMT \nKickstart or level up your Java skills with a hands-on bootcamp designed WITH your input! \nHosts: Adriana Zencke Zimmermann & Sonali Goel \n🔗 Register here: https://www.meetup.com/women-coding-community/events/312920485/\n\nLooking forward to seeing you there and growing together! 🚀\n\n#WomenInTech #Community #Meetups + +# Example Events 3 +## Event 1\n\nTitle: Build Better Flows, Reduce Bugs, Think Like a Product Person\n\nDescription: Understanding user journeys is one of the most powerful skills you can develop whether you’re a software developer, a future Product Manager, or someone transitioning into tech. In this hands-on workshop, we’ll map a real product flow step-by-step and explore how clear journeys improve development speed, reduce bugs, and create better user experiences. You will learn: What a user journey really is Happy path vs. edge cases (and why both matter) Common mistakes in product flows How journeys shape API needs, validations and error handling How clearer journeys improve communication between devs, PMs, and designers A live exercise: building the Password Reset flow together Who should come: No product background required just curiosity. Perfect for developers, PM candidates, designers, and career switchers who want to strengthen their product thinking. Tugce Kizilcakar LinkedIn Product Manager with 10 years of experience in fintech and large-scale payment platforms. She has built mobile payment and QR solutions used by millions, and worked across banks, startups and high-growth tech teams. Known for her clear, structured approach to product thinking, Tugce mentors women in tech and helps them navigate career transitions, user journeys and communication with technical teams. About Women Coding Community: We empower women in tech through education, mentorship, and career support. Join us for hands-on workshops, events, and a welcoming community. Website: https:www.womencodingcommunity.com Code of Conduct: We are committed to inclusivity and respect. Please review our community guidelines. Follow us : LinkedIn Instagram YouTube Meetup GitHub Slack email\n\nDate: WED, JAN 07, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/312393688/\n\n## Event 2\n\nTitle: January Book Club: Radical Candor\n\nDescription: Women Coding Community Book Club! This month's Book: Radical Candor by Kim Scott "Reading Radical Candor will help you build, lead, and inspire teams to do the best work of their lives. Kim Scott's insights--based on her experience, keen observational intelligence and analysis--will help you be a better leader and create a more effective organization." Sheryl Sandberg author of the New York Times bestseller Lean In If you would like to have a say in our next book club read, do join our channel progbookclub. If you would like to volunteer, do join our volunteering channel bookclubvolunteers. Schedule: 19:00 - 19:10 Introduction to Women Coding Community 19:10 - 20:00: Book Summary Discussion Host: Silke Nodwell LinkedIn Silke holds an MSci Mathematics, First Class Honours, from Imperial College London. She has two years of experience in data science and machine learning. Silke is also a Lead at Women Coding Community, where she runs the bookclub and organizes talks by inspirational women. In her free time, she enjoys running and hiking. She has just completed her first marathon in May 2025. Co-host: Prabha Venkatesh LinkedIn Prabha is the Lead Data Scientist at Milbotix. She’s previously worked as a Full-stack Software Developer and holds a Master’s degree from Lancaster University. She’s also a Lead at the Women Coding Community. Her interests include reading books, travel and cinema. About Women Coding Community Empowering women in their tech careers through education, mentorship, community building, and career services is our mission. We provide workshops and events, connect members with industry mentors, foster a supportive community through meetups and conferences, and raise awareness for more inclusive industry practices. Website LinkedIn Slack Instagram X Code of Conduct At Women Coding Community we are committed to a vibrant, supportive community. When attending our events, all members should follow our Code of Conduct. The full version can be found by following the link.\n\nDate: MON, JAN 26, 2026\n\nTime: 07:00 PM GMT\n\nMeetup Link: https://www.meetup.com/women-coding-community/events/311641238/\n\n + +# Summary 3 +Hey @here! Here are the upcoming Women Coding Community Meetup events to look forward to:\n\n1️⃣ **Build Better Flows, Reduce Bugs, Think Like a Product Person** \n📅 Date: Wed, Jan 7, 2026 \n⏰ Time: 7:00 PM GMT \n📍 Join a hands-on workshop to learn user journey mapping, improving dev speed, and product thinking with Tugce Kizilcakar, a seasoned Product Manager. No prior product experience needed! \n🔗 RSVP here: https://www.meetup.com/women-coding-community/events/312393688/\n\n2️⃣ **January Book Club: Radical Candor** \n📅 Date: Mon, Jan 26, 2026 \n⏰ Time: 7:00 PM GMT \n📍 Dive into Radical Candor by Kim Scott with hosts Silke Nodwell and Prabha Venkatesh. Great chance to discuss leadership and team inspiration. \n🔗 RSVP here: https://www.meetup.com/women-coding-community/events/311641238/\n\nDon’t miss these opportunities to learn, connect, and grow. See you there! 💪✨ + +--- + +Now summarise the following upcoming events: + +# Upcoming Meetup Events +## Event 0 + +Title: Book Club: (TBD) + + +Description: Book: TBD If you would like to have a say in our next book club read, do join our channel progbookclub. + + +Date: MON, JAN 26, 2026 + +Time: 07:00 PM GMT + +Meetup Link: https://www.meetup.com/women-coding-community/events/311641238/ + +## Event 1 + +Title: January Book Club: Radical Candor + + +Description: Women Coding Community Book Club! Book: Radical Candor by Kim Scott If you would like to have a say in our next book club read, do join our channel progbookclub. + + +Date: MON, JAN 26, 2026 + +Time: 07:00 PM GMT + +Meetup Link: https://www.meetup.com/women-coding-community/events/311641238/ + +## Event 2 + +Title: Build Better Flows, Reduce Bugs, Think Like a Product Person + + +Description: Understanding user journeys is one of the most powerful skills you can develop whether you’re a software developer, a future Product Manager, or someone transitioning into tech. + + +Date: WED, JAN 07, 2026 + +Time: 07:00 PM GMT + +Meetup Link: https://www.meetup.com/women-coding-community/events/312393688/ + +## Event 3 + +Title: Fireside Chat with Meena - The Engineer Who Became a Manager + + +Description: Most engineering managers step into leadership roles with little preparation for what truly awaits them. + +Date: WED, JAN 28, 2026 + +Time: 07:00 PM GMT + +Meetup Link: https://www.meetup.com/women-coding-community/events/312820191/ + +## Event 4 + +Title: DevOps++: Turning Green IT Ambition into Daily Engineering Actions + + +Description: Many organizations assume that moving workloads to renewable energy or buying efficient hardware is enough to become sustainable. + +Date: WED, FEB 04, 2026 + +Time: 07:00 PM GMT + +Meetup Link: https://www.meetup.com/women-coding-community/events/312842063/ + +## Event 5 + +Title: Java bootcamp Launch + +Description: Do you want to build strong Java skills but don't know where to start? Do you feel overwhelmed juggling tutorials, documentation, and scattered resources while trying to learn Java on your own? Our Java Bootcamp is designed to give you a clear, structured path to build practical Java skills through hands-on coding, not endless theory. + + +Date: THU, FEB 05, 2026 + +Time: 07:00 PM GMT + +Meetup Link: https://www.meetup.com/women-coding-community/events/312920485/ + + + \ No newline at end of file diff --git a/tools/llm_meetup_summary/requirements.txt b/tools/llm_meetup_summary/requirements.txt new file mode 100644 index 0000000..ef26d34 --- /dev/null +++ b/tools/llm_meetup_summary/requirements.txt @@ -0,0 +1,22 @@ +annotated-types==0.7.0 +anyio==4.12.1 +certifi==2026.1.4 +charset-normalizer==3.4.4 +distro==1.9.0 +dotenv==0.9.9 +h11==0.16.0 +httpcore==1.0.9 +httpx==0.28.1 +idna==3.11 +jiter==0.12.0 +openai==2.15.0 +pydantic==2.12.5 +pydantic_core==2.41.5 +python-dotenv==1.2.1 +PyYAML==6.0.3 +requests==2.32.5 +sniffio==1.3.1 +tqdm==4.67.1 +typing-inspection==0.4.2 +typing_extensions==4.15.0 +urllib3==2.6.3 diff --git a/tools/llm_meetup_summary/summarise_events_with_llms.py b/tools/llm_meetup_summary/summarise_events_with_llms.py index cd307d5..8d2291c 100644 --- a/tools/llm_meetup_summary/summarise_events_with_llms.py +++ b/tools/llm_meetup_summary/summarise_events_with_llms.py @@ -10,33 +10,47 @@ dotenv.load_dotenv() +# Get current folder +current_folder = os.path.dirname(os.path.abspath(__file__)) + # Constants -EVENTS_FILE = '../../_data/events.yml' -MODEL = "gpt-3.5-turbo" +EVENTS_FILE = os.path.join(current_folder, '../../_data/events.yml') +MODEL = "gpt-4.1-nano" REQUIRED_EVENT_FIELDS = ['title', 'description', 'date', 'time', 'link'] +try: + SLACK_TEST_WEBHOOK= os.getenv('SLACK_BOT_TEST_WEBHOOK') + SLACK_WEBHOOK= os.getenv('SLACK_BOT_WEBHOOK') +except KeyError as e: + raise KeyError(f"Environment variable not set: {e}") + # Setup logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) -def summarise_events_with_llm(events_file): +def summarise_events_with_llm(events_file=EVENTS_FILE): try: events = _load_events(events_file) future_events = _filter_future_events(events) + + print("Future Events:\n", future_events) if not future_events: logger.warning("No future events found") return "No upcoming events scheduled." - formatted_events = _format_events(future_events) + formatted_events = _format_events_as_markdown(future_events) + + print("Formatted Events for LLM:\n", formatted_events[:2000]) + llm_summary = _get_llm_summary(formatted_events) - formatted_summary = _format_for_slack(llm_summary) - - return formatted_summary except Exception as e: logger.error(f"Error summarizing events: {e}", exc_info=True) raise + formatted_summary = _format_for_slack(llm_summary) + return formatted_summary + def _load_events(events_file): try: with open(events_file) as f: @@ -46,19 +60,32 @@ def _load_events(events_file): except yaml.YAMLError as e: raise ValueError(f"Invalid YAML in events file: {e}") +def get_date_of_event_iso(event): + event_date = event.get('expiration') # should be in the format 'YYYYMMDD' + assert len(event_date)==8 + event_date_formatted = event_date[:4] + event_date[4:6] + event_date[6:8] + return event_date_formatted + def _filter_future_events(events): today = date.today().isoformat() - return [event for event in events if event.get('date', '') > today] + return [event for event in events if get_date_of_event_iso(event) > today] def _validate_event(event): missing_fields = [field for field in REQUIRED_EVENT_FIELDS if field not in event] if missing_fields: raise ValueError(f"Event missing fields: {missing_fields}") -def _format_events(events): +def _format_events_as_markdown(events): formatted = '' for index, event in enumerate(events): _validate_event(event) + + event_description = event['description'] + wcc_description_idx = event['description'].find('About Women Coding Community') + + if wcc_description_idx != -1: + event_description = event_description[:wcc_description_idx] + formatted += ( f"## Event {index}\n\n" f"Title: {event['title']}\n\n" @@ -70,14 +97,57 @@ def _format_events(events): return formatted def _get_llm_summary(formatted_events): + from pathlib import Path + + examples_dir = Path(__file__).parent / "examples" + + Example1 = (examples_dir / "01_example_events.md").read_text() + Example2 = (examples_dir / "02_example_events.md").read_text() + Example3 = (examples_dir / "03_example_events.md").read_text() + + Summary1 = (examples_dir / "01_summary.md").read_text() + Summary2 = (examples_dir / "02_summary.md").read_text() + Summary3 = (examples_dir / "03_summary.md").read_text() + prompt = f""" - Summarise the upcoming Meetup events for our community, Women Coding Community, in the form of a Slack - message in markdown format. - Output an error message if you have any problems, in the format '#ERROR: message'. +Summarise the upcoming Meetup events for our community, Women Coding Community, in the form of a Slack +message in markdown format. Start directly with the summary without any introduction. - ## Upcoming Meetup events - {formatted_events} +Output an error message if you have any problems, in the format '#ERROR: message'. + +# About Women Coding Community +Empowering women in their tech careers through education, mentorship, community building, and career +services is our mission. We provide workshops and events, connect members with industry mentors, foster +a supportive community through meetups and conferences, and raise awareness for more inclusive industry +practices. + +# Example Events 1 +{Example1} + +# Summary 1 +{Summary1} + +# Example Events 2 +{Example2} + +# Summary 2 +{Summary2} + +# Example Events 3 +{Example3} + +# Summary 3 +{Summary3} +--- + +Now summarise the following upcoming events: + +# Upcoming Meetup Events +{formatted_events} """ + + with open(os.path.join(examples_dir, "current_prompt.md"), 'w') as txt: + txt.write(prompt) # save for reference response = openai.chat.completions.create( model=MODEL, @@ -92,28 +162,42 @@ def _get_llm_summary(formatted_events): return summary def _format_for_slack(text): + if text is None: + raise ValueError("No text provided for Slack formatting") # Convert Markdown bold to Slack format text = text.replace('**', '*') # Reformat Markdown links to Slack format text = re.sub(r'\[([^\]]+)\]\(([^)]+)\)', r'<\2|\1>', text) return text -def _post_to_slack(message): - webhook_url = os.getenv('SLACK_SUMMARY_BOT_WEBHOOK') - if not webhook_url: - raise ValueError("SLACK_SUMMARY_BOT_WEBHOOK not set in environment variables") +def _post_to_slack(message, slack_webhook_url=SLACK_TEST_WEBHOOK): + if not slack_webhook_url: + raise ValueError("SLACK_SUMMARY_WEBHOOK not set in environment variables") - response = requests.post(webhook_url, json={'text': message}) + response = requests.post(slack_webhook_url, json={'text': message}) response.raise_for_status() logger.info("Message posted to Slack successfully") if __name__ == "__main__": parser = argparse.ArgumentParser(description="Summarise upcoming Meetup events and post to Slack.") + parser.add_argument( + "--test", + action="store_true", + help="Post the summary to the test Slack channel #test-meetup-summaries. Otherwise, post to #events." + ) parser.add_argument("--events_file", help="Path to the events YAML file.", default=EVENTS_FILE) args = parser.parse_args() + + test_mode_activated = args.test + + if test_mode_activated: + slack_webhook_url = SLACK_TEST_WEBHOOK + else: + slack_webhook_url = SLACK_WEBHOOK + try: summary = summarise_events_with_llm(args.events_file) - _post_to_slack(summary) + _post_to_slack(summary, slack_webhook_url) except Exception as e: logger.error(f"Failed to summarize and post events: {e}", exc_info=True) raise \ No newline at end of file diff --git a/tools/llm_meetup_summary/tests/tests.py b/tools/llm_meetup_summary/tests/tests.py new file mode 100644 index 0000000..04febac --- /dev/null +++ b/tools/llm_meetup_summary/tests/tests.py @@ -0,0 +1,149 @@ +import pytest + +from llm_meetup_summary.summarise_events_with_llms import summarize_meetup_events_with_llms + +import pytest +from unittest.mock import patch, mock_open, MagicMock +from pathlib import Path +import sys +import os + +# Add parent directory to path for absolute imports +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from llm_meetup_summary.summarise_events_with_llms import ( + _get_llm_summary, + _format_for_slack, + _validate_event, + _load_events, + get_date_of_event_iso, +) + +class TestGetLlmSummary: + """Tests for _get_llm_summary function""" + + @patch("tools.llm_meetup_summary.summarise_events_with_llms.openai.chat.completions.create") + @patch("builtins.open", new_callable=mock_open) + @patch("pathlib.Path.read_text") + def test_get_llm_summary_success(self, mock_read_text, mock_file, mock_openai): + """Test successful LLM summary generation""" + mock_read_text.return_value = "Example content" + + mock_response = MagicMock() + mock_response.choices[0].message.content = "Here's a summary of upcoming events" + mock_openai.return_value = mock_response + + result = _get_llm_summary("## Event 1\nTitle: Test Event") + + assert result == "Here's a summary of upcoming events" + assert mock_openai.called + + @patch("tools.llm_meetup_summary.summarise_events_with_llms.openai.chat.completions.create") + @patch("pathlib.Path.read_text") + def test_get_llm_summary_error_response(self, mock_read_text, mock_openai): + """Test when LLM returns error message""" + mock_read_text.return_value = "Example content" + + mock_response = MagicMock() + mock_response.choices[0].message.content = "#ERROR: Invalid event format" + mock_openai.return_value = mock_response + + with pytest.raises(ValueError, match="LLM Error"): + _get_llm_summary("## Event 1") + + @patch("tools.llm_meetup_summary.summarise_events_with_llms.openai.chat.completions.create") + @patch("pathlib.Path.read_text") + def test_get_llm_summary_creates_prompt_file(self, mock_read_text, mock_openai): + """Test that prompt is saved to current_prompt.md""" + mock_read_text.return_value = "Example content" + + mock_response = MagicMock() + mock_response.choices[0].message.content = "Summary content" + mock_openai.return_value = mock_response + + with patch("builtins.open", mock_open()) as mock_file: + _get_llm_summary("## Event 1") + mock_file.assert_called() + + +class TestFormatForSlack: + """Tests for _format_for_slack function""" + + def test_format_for_slack_converts_bold(self): + """Test markdown bold conversion to Slack format""" + result = _format_for_slack("This is **bold** text") + assert result == "This is *bold* text" + + def test_format_for_slack_converts_links(self): + """Test markdown link conversion to Slack format""" + result = _format_for_slack("[Click here](https://example.com)") + assert result == "" + + def test_format_for_slack_multiple_conversions(self): + """Test multiple markdown conversions""" + result = _format_for_slack("**Bold** and [link](https://example.com)") + assert "*Bold*" in result + assert "" in result + + def test_format_for_slack_none_input(self): + """Test that None input raises ValueError""" + with pytest.raises(ValueError, match="No text provided"): + _format_for_slack(None) + + +class TestValidateEvent: + """Tests for _validate_event function""" + + def test_validate_event_valid(self): + """Test validation passes for complete event""" + event = { + 'title': 'Test', + 'description': 'Desc', + 'date': '2024-01-01', + 'time': '18:00', + 'link': {'path': 'https://example.com'} + } + _validate_event(event) # Should not raise + + def test_validate_event_missing_field(self): + """Test validation fails for missing field""" + event = { + 'title': 'Test', + 'description': 'Desc', + 'date': '2024-01-01' + } + with pytest.raises(ValueError, match="missing fields"): + _validate_event(event) + + +class TestLoadEvents: + """Tests for _load_events function""" + + @patch("builtins.open", new_callable=mock_open, read_data="- title: Event1\n description: Desc") + @patch("yaml.safe_load") + def test_load_events_success(self, mock_yaml, mock_file): + """Test successful event loading""" + mock_yaml.return_value = [{'title': 'Event1'}] + result = _load_events("test.yml") + assert result == [{'title': 'Event1'}] + + def test_load_events_file_not_found(self): + """Test FileNotFoundError for missing file""" + with pytest.raises(FileNotFoundError): + _load_events("/nonexistent/path.yml") + + +class TestGetDateOfEventIso: + """Tests for get_date_of_event_iso function""" + + def test_get_date_of_event_iso_valid(self): + """Test date formatting from YYYYMMDD""" + event = {'expiration': '20240115'} + result = get_date_of_event_iso(event) + assert result == '20240115' + + def test_get_date_of_event_iso_invalid_length(self): + """Test assertion error for invalid date length""" + event = {'expiration': '2024011'} + with pytest.raises(AssertionError): + get_date_of_event_iso(event) \ No newline at end of file From 14f8f55be03b993417ae71f385af4b285704c1ea Mon Sep 17 00:00:00 2001 From: Silke Nodwell <51339213+silkenodwell@users.noreply.github.com> Date: Sun, 25 Jan 2026 19:11:14 +0000 Subject: [PATCH 6/9] Minor text suggestion on PR Co-authored-by: Adriana Zencke Zimmermann --- tools/llm_meetup_summary/summarise_events_with_llms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/llm_meetup_summary/summarise_events_with_llms.py b/tools/llm_meetup_summary/summarise_events_with_llms.py index 8d2291c..b3c64e3 100644 --- a/tools/llm_meetup_summary/summarise_events_with_llms.py +++ b/tools/llm_meetup_summary/summarise_events_with_llms.py @@ -110,7 +110,7 @@ def _get_llm_summary(formatted_events): Summary3 = (examples_dir / "03_summary.md").read_text() prompt = f""" -Summarise the upcoming Meetup events for our community, Women Coding Community, in the form of a Slack +Summarise the upcoming events for our community, Women Coding Community, in the form of a Slack message in markdown format. Start directly with the summary without any introduction. Output an error message if you have any problems, in the format '#ERROR: message'. From 35c708d5d0c2025462e3ca5082adfdd1b1d6438e Mon Sep 17 00:00:00 2001 From: Silke Nodwell Date: Sun, 25 Jan 2026 19:18:38 +0000 Subject: [PATCH 7/9] Add .example.env file for reference --- tools/llm_meetup_summary/.example.env | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 tools/llm_meetup_summary/.example.env diff --git a/tools/llm_meetup_summary/.example.env b/tools/llm_meetup_summary/.example.env new file mode 100644 index 0000000..9837d5a --- /dev/null +++ b/tools/llm_meetup_summary/.example.env @@ -0,0 +1,8 @@ +# To run summarise_events_with_llm, create a .env file of the format below, replacing the secret values +# with the ones found in the WCC GitHub Actions folder: +# https://github.com/Women-Coding-Community/WomenCodingCommunity.github.io/settings/secrets/actions + +OPENAI_API_KEY = openaikey + +SLACK_BOT_TEST_WEBHOOK=https://hooks.slack.com/services/123456 +SLACK_BOT_WEBHOOK=https://hooks.slack.com/services/123456 \ No newline at end of file From bdc23b33272fb88aafd918507c5869a4a42bb8c6 Mon Sep 17 00:00:00 2001 From: Silke Nodwell Date: Sun, 25 Jan 2026 19:21:42 +0000 Subject: [PATCH 8/9] Update README to clarify local .env instructions --- tools/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/README.md b/tools/README.md index a8de8e1..d8715f1 100644 --- a/tools/README.md +++ b/tools/README.md @@ -10,7 +10,9 @@ 5) `automation_prepare_adhoc_availability.py`: updates mentors data with specified availability hours in `samples/adhoc-prep.xlsx` in preparation for monthly ad-hoc mentorship. -6) `llm_meetup_summary\summarise_events_with_llms` sends a Slack summary of our upcoming Meetup events. Note - currently set up to use Silke's API key on the GitHub repo. Please don't abuse this :) This can be run with the GitHub Actions workflow `summarise_upcoming_events.yml` OR run manually from the llm_meetup_summary directory: +6) `llm_meetup_summary\summarise_events_with_llms` sends a Slack summary of our upcoming Meetup events. Note - currently set up to use Silke's API key on the GitHub repo. Please don't abuse this :) This can be run with the GitHub Actions workflow `summarise_upcoming_events.yml` OR run manually from the llm_meetup_summary directory. To run locally, you need to create a .env file with OPENAI_API_KEY, SLACK_BOT_TEST_WEBHOOK, and SLACK_BOT_WEBHOOK keys. See .example.env for reference. The secret values can be found in https://github.com/Women-Coding-Community/WomenCodingCommunity.github.io/settings/secrets/actions. + +Then run the following commands from the terminal: 1. `python -m venv venv` (first time only) 2. `source venv/bin/activate` 3. `pip install -r requirements.txt` From 79d485dc0dfaeca30bbb777f6e3ec3d07960d02b Mon Sep 17 00:00:00 2001 From: Silke Nodwell Date: Sun, 25 Jan 2026 19:28:40 +0000 Subject: [PATCH 9/9] Remove duplicated book club event in the events.yml file --- _data/events.yml | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/_data/events.yml b/_data/events.yml index 8d2ddcb..5670e23 100644 --- a/_data/events.yml +++ b/_data/events.yml @@ -1488,25 +1488,6 @@ title: View meetup event target: _target -- title: | - Book Club: (TBD) - description: | - Book: TBD If you would like to have a say in our next book club read, do join our channel progbookclub. - category_style: book-club - category_name: Book Club - date: MON, JAN 26, 2026 - expiration: "20260126" - host: "Silke Nodwell and Prabha Venkatesh" - speaker: "" - time: 07:00 PM GMT - image: - path: "https://secure.meetupstatic.com/photos/event/c/0/1/4/600_530869172.jpeg" - alt: WCC Meetup event image - link: - path: https://www.meetup.com/women-coding-community/events/311641238/ - title: View meetup event - target: _target - - title: Writing Club description: | Welcome to Writing Club! We are re-launching our popular Writing Club.