121 emails per day. 11 minutes per hour. That is the average professional’s email burden in 2026. Most of it is low-value: newsletters you skimmed, meeting notifications, automated updates, and responses that could be handled in one sentence. AI can handle a significant fraction of that load — if you build the right system. Here is how, using Gmail and Python for the code-comfortable, and native Gmail + Claude for everyone else.
Approach 1 — No Code: Gmail + Claude Web Interface
If you do not write code, this is your path. It is manual but fast:
The Email Processing Prompt
At the start of each day, select all unread emails in Gmail, export them (File → Download → Emails), or simply open each thread. Then use this prompt template in Claude:
Here are summaries of my unread emails. For each one:
1. Assign a category: ACTION REQUIRED / FYI / PROMOTIONAL / CAN DELETE
2. If ACTION REQUIRED: write a draft reply in under 50 words
3. If FYI: write a 1-sentence summary
4. If PROMOTIONAL or CAN DELETE: just confirm the category
[Paste email subjects, senders, and first paragraph of each]
For most inboxes, this turns a 45-minute morning email session into 15 minutes.
Approach 2 — Python Script: Automated Email Classification
For the technically inclined, here is a Python script that connects to Gmail via API, reads unread emails, and uses OpenAI to classify and draft responses:
Prerequisites
pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client openai
Step 1 — Set Up Gmail API Access
Go to console.cloud.google.com → Create Project → Enable Gmail API → Download credentials.json → Move it to your project folder.
Step 2 — The Classification Script
import os, json, base64
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from openai import OpenAI
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']
oai = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
def get_gmail_service():
creds = None
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open('token.json', 'w') as token:
token.write(creds.to_json())
return build('gmail', 'v1', credentials=creds)
def get_unread_emails(service, max_results=20):
result = service.users().messages().list(
userId='me', q='is:unread', maxResults=max_results
).execute()
messages = result.get('messages', [])
emails = []
for msg in messages:
detail = service.users().messages().get(userId='me', id=msg['id']).execute()
headers = {h['name']: h['value'] for h in detail['payload']['headers']}
snippet = detail.get('snippet', '')
emails.append({
'id': msg['id'],
'from': headers.get('From', ''),
'subject': headers.get('Subject', ''),
'snippet': snippet[:300]
})
return emails
def classify_email(email):
prompt = f'''Classify this email and draft a response if needed.
From: {email['from']}
Subject: {email['subject']}
Preview: {email['snippet']}
Respond with JSON:
{{
"category": "ACTION_REQUIRED|FYI|PROMOTIONAL|SPAM",
"priority": "HIGH|MEDIUM|LOW",
"summary": "one sentence",
"draft_reply": "draft reply if ACTION_REQUIRED, else null"
}}'''
response = oai.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
response_format={"type": "json_object"}
)
return json.loads(response.choices[0].message.content)
def main():
service = get_gmail_service()
emails = get_unread_emails(service)
print(f"Processing {len(emails)} unread emails...
")
for email in emails:
result = classify_email(email)
print(f"📧 {email['subject'][:50]}")
print(f" Category: {result['category']} | Priority: {result['priority']}")
print(f" Summary: {result['summary']}")
if result.get('draft_reply'):
print(f" Draft: {result['draft_reply'][:100]}...")
print()
if __name__ == '__main__':
main()
Running the Script
# Set your OpenAI key
export OPENAI_API_KEY="your-key-here"
# Run the classifier
python3 email_classifier.py
The first run opens a browser for Gmail OAuth. After authorising, the script runs automatically and prints a classified summary of your unread emails.
Step 3 — Extend It: Auto-Draft in Google Docs
To save draft replies back to Gmail, extend the script with this function:
def create_draft(service, to, subject, body, thread_id=None):
message = {
'to': to,
'subject': f"Re: {subject}",
'body': body
}
raw = base64.urlsafe_b64encode(
f"To: {to}
Subject: Re: {subject}
{body}".encode()
).decode()
draft_body = {'message': {'raw': raw}}
if thread_id:
draft_body['message']['threadId'] = thread_id
return service.users().drafts().create(
userId='me', body=draft_body
).execute()
Email Automation Ethics
A brief but important note: when AI drafts a reply, always review it before sending. AI cannot know the nuance of your relationship with the sender, the full context of a project, or the emotional tone appropriate to a delicate situation. Use AI to draft — use your judgment to approve.
Key Takeaway: Gmail API + a small Python script (or even just a well-structured prompt) can eliminate 30-40% of your daily email time. Start with the no-code approach for immediate gains; build the Python classifier once you understand which categories appear most in your inbox.

Be the first to respond