Freedom Sale
Independence Day Special — Unlock the AI Path 70% off our most popular AI course · Limited time offer
--Days
--Hrs
--Min
--Sec
Claim Your Discount
✦ Beginner ⏱ 20 min

📋 Build a Meeting Notes Summariser with Gemini

🎯 What You'll Build

A meeting notes summariser that takes raw transcript text and outputs key decisions, action items with owners, and an executive summary using Gemini.

📋 What You'll Need

1

Summarise a meeting transcript

A structured prompt tells Gemini exactly what format to produce.

import google.generativeai as genai, os

genai.configure(api_key=os.environ.get('GEMINI_API_KEY') or 'your-key-here')
model = genai.GenerativeModel('gemini-1.5-flash')

TRANSCRIPT = """
Sarah: OK let us get started. We need to decide on the website redesign timeline.
John: I think we can have the designs done by September 15th.
Sarah: That works. Maria, can your team handle the dev side by October 30th?
Maria: Yes, but we will need the final designs a week before — so October 7th.
John: Agreed. I will send you everything by October 7th.
Sarah: Perfect. Also we need to discuss the marketing launch. Tom?
Tom: We are planning a social media push starting November 1st. I need the live link by October 28th.
Maria: October 28th is tight but doable if we get the content by October 20th.
Sarah: Tom, can you get all copy to Maria by October 20th?
Tom: Yes, I will do that.
Sarah: Great. Let us aim for a full launch on November 1st.
"""

def summarise_meeting(transcript):
    prompt = f"""Analyse this meeting transcript and produce a structured summary.

Format your response EXACTLY as follows:

## Executive Summary
[2-3 sentences describing the main outcome of the meeting]

## Key Decisions
- [Decision 1]
- [Decision 2]

## Action Items
| Owner | Task | Deadline |
|-------|------|----------|
| Name  | What to do | Date |

## Next Meeting
[Any next steps or follow-up meeting mentioned, or "Not discussed"]

Transcript:
{transcript}"""

    return model.generate_content(prompt).text

print(summarise_meeting(TRANSCRIPT))
## Executive Summary
The team aligned on a website redesign timeline leading to a November 1st launch.
Key milestones were agreed between the design, development, and marketing teams,
with clear handoffs and deadlines assigned to each owner.

## Key Decisions
- Website redesign designs to be completed by September 15th
- Development to be completed by October 30th
- Full website launch targeted for November 1st

## Action Items
| Owner | Task                          | Deadline    |
|-------|-------------------------------|-------------|
| John  | Send final designs to Maria   | October 7   |
| Tom   | Send all marketing copy       | October 20  |
| Maria | Deliver live link             | October 28  |

## Next Meeting
Not discussed
2

Process a transcript from a text file

Add file input so any .txt transcript can be summarised in one command.

import sys

def main():
    if len(sys.argv) > 1:
        # Usage: python summarise.py meeting.txt
        with open(sys.argv[1], encoding='utf-8') as f:
            transcript = f.read()
    else:
        print("Paste your transcript below. Type DONE on a new line when finished.\n")
        lines = []
        while True:
            line = input()
            if line.strip() == 'DONE': break
            lines.append(line)
        transcript = '\n'.join(lines)

    print("\nSummarising...\n")
    summary = summarise_meeting(transcript)
    print(summary)

    # Save to file
    out_file = 'meeting_summary.md'
    with open(out_file, 'w', encoding='utf-8') as f:
        f.write(summary)
    print(f"\nSaved to {out_file}")

main()
💡 Tip: Add a language instruction to the prompt to summarise in any language: "Respond in Hindi." or "Respond in the same language as the transcript." — Gemini handles multilingual summaries natively.

🎉 You Did It!

One prompt replaced 20 minutes of manual note-writing. The structured output format (Markdown table for action items) is deliberate — it makes the summary easy to paste into Notion, Confluence, or a Slack message.

Found something wrong?

Spotted a bug, broken code, or something that doesn't look right? Tell us what's off and we'll fix it.