Lead GenerationPythonPlaywrightOpenAI

Personalized Cold Outreach Messages — 3 Minutes Instead of 30

An internal agency tool: the script opens a business's public Instagram profile, pulls the context out of it, and drafts three versions of a personal message in different tones. A manager picks one, edits it if needed, and sends it herself.

30 min → 3 min
Time per message
~20
Profiles per run
3 tones
Drafts per profile
Client
Concept Agency
Goal
Lead generation
Channel
Instagram Direct
AI Model
GPT-5 (OpenAI)

// Problem

Personalization Works. It Just Doesn't Scale.

A cold message only gets read when it's obvious it was written for that specific business. To write one like that, the manager opened the profile, read the bio, scrolled the recent posts, worked out what the account actually does and what an AI assistant would give it — and only then started writing. Half an hour per contact.

The alternative is familiar: a template. "Hi! We offer AI solutions for your business" gets recognized in the first line and closed unread. So the choice was between personalization that eats the whole day and outreach that doesn't work.

At thirty minutes a contact, the list is always longer than the working day. We needed a way to keep the personalization but remove its slowest part — reading the profile by hand.

// Solution

The Script Reads the Profile, the Person Decides

We split the work in half: the routine — reading the profile and drafting the text — went to the script, while choosing, editing, and sending stayed with the manager.

Reads the profile for you

Playwright opens the account's public page and collects the context: bio, niche, follower count, recent posts, website link, and the language the account speaks.

Three drafts, three tones

For every profile the model writes three messages in different tones — from restrained and businesslike to warmer. The manager picks whichever fits that account.

An offer shaped by the business

A language-school owner and a hotel owner get different texts: the tool starts from what the business actually does and what an AI assistant in Direct would do for it.

A finished sheet, not scattered drafts

Everything lands in Google Sheets, one tab at a time. The text can be edited right there in the table before it goes out.

// How It Works

From a Profile Link to a Finished Message

  1. A list of profiles goes in

    The manager gathers the Instagram account links herself and hands the script a batch — around twenty per run. Finding the accounts stayed a manual job.

  2. Playwright opens the public page

    A headless browser visits the profile and reads what any visitor sees without logging in: the bio, the description, recent posts, links.

  3. The findings become a business card

    The profile data is condensed into a short brief: what the account does, who it serves, what language it speaks, what it has been posting lately.

  4. The model writes three versions

    GPT-5 gets the business brief and the task — offer an AI assistant for Direct. Out come three messages that differ in tone, not just in word order.

  5. The manager picks one and sends it

    It all lands in Google Sheets. The manager reads the options, edits if needed, and sends the message herself. The script sends nothing on its own.

// Technology

Technology Stack

A deliberately plain stack: the tool solves one task, so there is no agent orchestration and no queues — the route is linear.

PythonPlaywrightOpenAI GPT-5Google Sheets APIVPS

Why OpenAI?

The job here isn't conversation, it's good text on the first try — three versions that genuinely read differently. GPT-5 handles Ukrainian confidently and tells tones apart, so edits were rare. The project needed no heavier architecture: profile → business brief → three drafts → spreadsheet.

// Key Capabilities

What the Tool Can Do

Public profile data

Bio, niche, follower count, recent posts, website link, account language — everything a visitor to the profile can see.

Three tones to choose from

Not three rewordings of one text, but three genuinely different tones for different kinds of reader.

Tied to the niche

The text is built around what the business does: a language school, a hotel, and a local shop each get a different offer.

Export to Google Sheets

Results are laid out across spreadsheet tabs, with the text editable in place.

A person in the loop

The script prepares drafts and stops there. Picking a version, editing it, and sending it are the manager's calls.

Works in batches

One run covers about twenty profiles. The batch size was set by hand to match the task at hand.

// Results

What Changed in the Manager's Day

self-reported — the agency's own internal tool

Before and after implementation
MetricBeforeAfter
Preparing one message30 minutes3 minutes
Reading the profileBy hand, before every textAlready done before the sheet opens
Text optionsOne — whatever there was time to writeThree distinct tones to choose from
A batch of twenty profilesAbout ten hours of manual workA single script run

Personalization stopped being expensive. The manager no longer spends half an hour studying an account — she opens a sheet that already holds the business brief and three drafts, picks one, and sends it. The decision and the send button stayed with a person.

Ready to start?

A quick audit to pinpoint where you're losing time and money right now — and whether AI can fix it

Get a free audit