Product Logic

Copy Lab: An AARRR-Driven Copy Inspiration Generator

Updated2026-07-28

Related codegenerate.js (the system prompt needs to match this version)

AARRRGrowth MarketingMessaging AnglesB2B & Consumer

Origin Story

Why I Built Copy Lab

This idea came to me as a side project while I was studying marketing theory in a systematic way. I have always felt that AI cannot really finish a piece of marketing copy for you. Tone, restraint, and a real feel for the audience are still things people understand better.

But I was curious about a narrower question: can AI help at the intersection of inspiration and consumer psychology? By mixing theories from persuasion psychology and consumer behavior with a real product scenario, it could offer an angle that has real theoretical grounding, one that still needs a person to shape it further.

Building it did two things at once. It forced me to actually use the theory I was learning and to explain clearly why each messaging angle holds up. It also let me test the limits of AI: whether it could reliably tell an external trend apart from an internal execution tactic, and whether it could stay consistent about following the writing rules.


1. Positioning

Copy Lab is an AI copy inspiration tool for growth marketers. Based on a product's lifecycle stage and a specific scenario, it draws on consumer psychology to generate three inspiration packages at once, each built around a different angle. The goal is to help marketers find direction fast, not to produce finished copy.


2. User Inputs

2.1 Basic Inputs

InputTypeDescription
Product nameFree textMust be a real product, for example Notion or BeautyPlus. A made-up name gives the AI nothing to work with: it cannot judge category, positioning, or target users
Product typeSingle selectB2B SaaS / Consumer App
Lifecycle stageSingle select5 AARRR stages
User scenario (Moment)Single selectThe specific touchpoint under each stage, see 2.2
ChannelsMulti-selectShown dynamically based on stage and product type

Product Flow

1. Product name2. Product type3. Lifecycle stage4. Choose Moment5. Choose channels6. GenerateMomentumRecallOnly Activation, Retention, and Revenue split this way. Other stages are Momentum only.

Figure 1. The six-step input flow. At step 4, choosing a Moment, Activation, Retention, and Revenue each split into two groups: Momentum and Recall.

2.2 Moment

Most Moments under each stage capture a point where the user just did something right (Momentum). Activation, Retention, and Revenue each add two Moments that capture a point where the user is starting to drift (Recall). Acquisition users have not touched the product yet, and a Referral share is a one-off event, so neither stage has an ongoing drift state to observe, and neither one gets a Recall group.

A small amber dot marks Recall. Everything else is Momentum.

B2B SaaS

Acquisition

Clicked Google AdRead G2 ReviewSaw LinkedIn PostAttended WebinarGot Peer ReferralVisited Pricing Page

Activation

Finished OnboardingAdded First Team MemberSent First ReportConnected IntegrationInvited ColleagueCompleted Key ActionPaused Mid-OnboardingSent Invite, No Response

Retention

Hit 30-Day MarkUsed Advanced FeatureIntegrated Third ToolHit Usage MilestoneExported DataStarted Recurring HabitUsage Dropped After PeakWent Quiet 2+ Weeks

Referral

Shared With NetworkLeft G2 ReviewGave Sales ReferencePosted Case StudyReferred New AccountJoined Partner Program

Revenue

Upgrade Prompt SeenFree Trial EndingSeat Limit ReachedFeature GatedROI Report ReadyAnnual Renewal DueDowngrade RequestedSeat Utilization Dropped

Consumer App

Acquisition

Saw Social Media AdGot Friend Referral LinkSearched App StoreClicked Creator ContentRead App ReviewDownloaded from Store

Activation

Completed TutorialSaved First ItemShared First PostSet Up ProfileUnlocked First BadgeUsed Core FeatureAbandoned Tutorial MidwayOpened Once, Never Returned

Retention

Came Back Day 7Set Up NotificationsShared With FriendHit Streak MilestoneDiscovered New FeatureRe-engaged After GapStreak BrokenHasn't Opened App in a While

Referral

Shared App LinkInvited Friend for RewardLeft App Store ReviewTagged Friend in ContentShared AchievementCreated Viral Content

Revenue

Saw PaywallStarted Free TrialUsed Premium FeatureGift Option ShownLimited Offer SeenSubscription RenewalStarted Cancellation FlowTrial Ending, Never Opened App

See 3.2 for how Moment type shapes the writing.

2.3 Channel Matrix

There are four channel configurations, set by stage and product type together. A Recall Moment uses the same channel configuration as its stage, so it needs no extra logic.

ConfigurationEmailSMSIn-AppPushLinkedInTikTokMeta
Acquisition, B2B
Acquisition, Consumer
Other stages, B2B
Other stages, Consumer
BranchApplies toRule
Branch AAcquisitionThe user has not installed the app yet, so In-App and Push cannot reach them. Social channels split by product type: B2B gets LinkedIn, Consumer gets TikTok and Meta
Branch BThe other 4 stagesEmail, SMS, In-App, and Push are all available. B2B and Consumer use the same channels, and the tone difference shows up in the copy instead. Social channels are only open at Acquisition; extending LinkedIn or TikTok to Referral is not planned yet

3. AI Generation Logic

Each API call generates three Trend Packages. The front end lets people flip through them with a Shuffle button, without calling the API again. A single question rarely produces the best possible idea on the first try, so Copy Lab generates three different angles at once and lets the marketer compare and choose, rather than betting that one generation is already the best answer.

3.1 Output Overview

PartWhat question it answersExample (BeautyPlus, Acquisition)
trend_textWhy does this angle work right now?"Gen Z beauty users are embracing 'skin minimalism'..."
Channel copyHow does this angle actually get written?TikTok Hook: "Your face shape deserves a contour that actually fits."
ab_planHow can this call be tested cheaply?Highlight: "This time we are betting the personalization angle beats the everyone-is-using-it angle"
calloutWhat else is worth trying that the copy does not say?"Try a duet format that contrasts a generic tutorial with the personalized recommendation"

See 3.2 through 3.6 for the details and constraints.

3.2 trend_text: The Decision and How to Write It

The JSON field is always named trend_text. The rules and examples below go straight into the system prompt, so they work as both an explanation for you and the actual rules that constrain what the AI writes. Its meaning is set by a two-step decision:

Is the stage Acquisition?yesno1. AcquisitionTrend PulseWhat is the Moment type?MomentumRecall2. Not AcquisitionMomentum Idea3. Not AcquisitionRecall Idea

Figure 2. The decision logic for trend_text. First check whether the stage is Acquisition. If yes, it is a Trend Pulse. If not, check the Moment type next, which splits into Momentum Idea or Recall Idea.

1. Acquisition to Trend Pulse

The AI should describe an external, observable trend. It can come from a shift in consumer behavior, content culture, or platform preference, and it should explain why this trend makes the current angle work. It must not use specific numbers unless they are public, verifiable industry figures, and it must not dress up internal data or an execution tactic as an external trend.

Here is an example that works: "Vertical short-form video is becoming the top acquisition channel for beauty apps. Creators are sharing unedited 'first try' content, and it gets noticeably higher engagement than polished before-and-after content. This tells us that users right now respond more to authenticity, so ad creative should lead with real, everyday use cases instead of professional-grade results." This passage follows the rule. It describes the outside world, what creators are choosing to post, not internal product data, and the closing line ties the trend back to the angle.

By contrast, this does not follow the rule: "Users who apply a filter within 24 hours of finishing the tutorial retain much better, so we should push a notification immediately after tutorial completion." That is internal data plus an execution tactic, not an external trend.

2. Not Acquisition, Momentum, to Momentum Idea

The AI should anchor on the psychological state of a user who is currently carrying momentum forward, and explain why this messaging angle will resonate. It should not generalize into something like "users typically feel...". Keep it to two or three sentences, with the last one landing on the copy strategy.

For example, take Activation, Completed Tutorial, and the Identity angle: "Someone who just finished the tutorial feels capable and curious at the same time. They just learned a skill but are not yet sure what they can make with it. This is the best moment to build identity: the copy should not describe features, it should help the user picture who they become by using this app." This anchors on the specific psychological state at the moment of finishing the tutorial, not a vague claim like "users want to grow," so it follows the rule.

3. Not Acquisition, Recall, to Recall Idea

The AI should acknowledge that some time has passed, but stay neutral in tone and avoid asking why. It should land on how easy it is to pick back up, not on what the user has already invested. Guilt, blame, or overly emotional language is not allowed. Do not write things like "we miss you" or "why did you stop".

For example, take Retention, Streak Broken, and the Curiosity or contrast angle: "Once a streak breaks, people tend to slip into thinking the streak is already gone, so what is the point. The copy here should not remind them that they failed. It should offer a fresh, specific reason that shifts their attention away from the broken streak and toward something new worth checking out, lowering the barrier to opening the app again."

By contrast, this does not follow the rule: "The user has not opened the app in 14 days, retention risk is high, send a discount code immediately." That is an execution tactic, not a diagnosis of the user's state of mind right now.

Moment type also shapes the angle recommendations in 3.3 and the Recall-only tone rule in 3.6.

3.3 The Messaging Mashup

This is the Messaging Angle. Each of the 3 Packages generated must use a different angle. All seven angles are backed by psychology or consumer behavior research; the full write-up is in the appendix at the end.

AngleCore logicTheoretical basis
Social proofOthers use it or like it, so I should tooCialdini (1984), the social proof principle
Urgency / FOMOIf I do not act now, I will miss outCialdini (1984) scarcity principle; Przybylski et al. (2013)
Identity / aspirationUsing this product makes me a certain kind of personSirgy (1982), self-congruity theory
How-to / taskTell me how, help me get this doneBandura (1977), self-efficacy theory
Curiosity / contrastThis is unexpected, I want to know moreLoewenstein (1994), information gap theory
Peer anxietyMy peers already use this, I will fall behindFestinger (1954), social comparison theory
ROI / time costThis is worth my time, money, or effortA common-sense cost-benefit judgment, no dedicated theory

What the stage-to-angle guidance means: the table below is not a hard rule, it is the AI's default preference. At Acquisition, for instance, the AI normally picks from Social proof, Curiosity or contrast, and Identity or aspiration first, but it can choose a different angle if that fits the product better this time. The only hard requirement is that the 3 Packages cannot repeat an angle. This keeps the angle choice grounded and matched to the stage's psychology most of the time, while still leaving room for the AI to use its own judgment instead of being locked into a fixed set.

Stage / Moment typeRecommended anglesAvoid
AcquisitionSocial proof, Curiosity/contrast, Identity/aspirationNone
Activation, MomentumIdentity/aspiration, How-to/task, Curiosity/contrastPeer anxiety (the user just joined, comparison would feel like pressure)
Retention, MomentumPeer anxiety, Urgency/FOMO, Identity/aspirationNone
ReferralSocial proof, Identity/aspiration, ROI/time-costHow-to/task
Revenue, MomentumROI/time-cost, Urgency/FOMOHow-to/task
Activation / Retention / Revenue, Recall (shared)Curiosity/contrast, How-to/task, ROI/time-costPeer anxiety (can read as blame, which pushes people further away)

The three Recall rows are combined into one because the psychological state driving them is really the same thing in each case: attention has drifted, and the person needs an easy, low-pressure reason to start again. That does not change by stage.

3.4 A/B Test

Why is it designed this way? Copy Lab already generates 3 Packages with different angles on every run. Instead of inventing a comparison group that the user can never see, it makes more sense to let these 3 Packages serve as each other's reference point. The comparison is real, and the user can flip over and look at it directly instead of taking a claim on faith.

What is it? Each of the 3 Packages carries its own ab_plan. This is not about pulling 2 of the 3 out to run a separate comparison; every Package comes with its own suggestion for which of the other two would make a good reference point if you wanted to test this angle. One generation produces 3 separate ab_plans, and each one points at one of the other two Packages.

How does it work? The model generates all 3 Packages in the same call, so when it writes the ab_plan for Package N, it already knows what angle the other two are using. It picks whichever of the other two is the most interesting comparison right now and writes that into the comparison field. This is not a fixed pairing like Package 1 against Package 2 and Package 2 against Package 3; each Package makes its own judgment about which comparison is most worth making.

Is this a strict A/B test? A rigorous A/B test usually needs to satisfy three things: it changes only one variable while holding everything else constant, it locks in the metric to watch and what happens after a win or a loss before the test starts, and it has random assignment and enough sample size to separate a real difference from noise. Here is an honest comparison against how Copy Lab is designed:

What a strict A/B test requiresHow Copy Lab is designed
1. Changes only one variableThis one does not hold. The comparison is between two complete creative directions, since the angle shapes the opening logic of trend_text and runs through the copy on every channel, not a single isolated variable with everything else held equal. This is a deliberate tradeoff: Copy Lab is testing whether an entire angle is worth pursuing, not whether one word in a CTA performs better. Anyone who wants a strict single-variable test needs to align the other elements, such as the CTA and visuals, between the two Packages themselves before launching
2. Locks in the metric and decision rule firstThis one holds. The highlight, comparison, signal, and decision are all fixed the moment the Package is generated, before any result comes in to reason backward from
3. Random assignment, sample size, significanceThis is outside what Copy Lab is responsible for. It belongs to the actual platform running the test, such as an ad account or an ESP. Copy Lab's job stops at the hypothesis and the test plan; execution is not its job
FieldDescription
highlightA one-line, plain-language summary that gives the user the fastest possible read
comparisonPoints to another package from this same generation, by number and angle name
signalThe single metric best suited to judging the outcome at this stage. It does not have to happen earlier than the final conversion; when the two are already close together, using the final metric directly is fine
decisionSplit into two separate fields, if_win and if_flat, instead of one merged block of text

Example. Using BeautyPlus and Acquisition again, if the 3 Packages generated each use a different angle, their comparison fields might point at each other like this:

PackageAngleab_plan.comparison points to
Package 1Identity/aspirationPackage 2, Social proof
Package 2Social proofPackage 3, Curiosity/contrast
Package 3Curiosity/contrastPackage 1, Identity/aspiration

This is just one possible pattern, not a fixed loop of 1 to 2 to 3 to 1. The actual choice is up to the model's judgment about which comparison is more interesting.

JSON structure:

"ab_plan": { "highlight": "one-line, plain-language summary", "comparison": { "package_index": 2, "angle": "Social proof" }, "signal": "the single metric best suited to judging this stage", "decision": { "if_win": "what to do if this angle clearly wins", "if_flat": "what to do if there is no clear difference" } }

A full ab_plan example for Package 1:

Highlight: this time we are betting that the personalization and self-expression angle beats the everyone-is-using-it angle Comparison: vs. Package 2, Social proof Signal: install rate after the ad click Decision . clearly better: lean future creative toward full personalization . about the same: try blending both angles into one asset

3.5 Callout

Why does this field exist? Copy Lab is positioned as a starting point for ideas, not as finished copy. The point of Callout is to hand over one more execution idea, beyond the copy itself, that the user probably would not have thought of on their own.

The rule: The AI picks whichever of the four directions below fits the current package best and writes just that one; it does not need to cover all four. It must not touch send timing, audience segmentation, or channel sequencing, and it must not suggest product features either. Those are areas marketers already know better than this tool does, and it should not overstep into them.

DirectionDescription
1. A visual or format techniqueA concrete shooting, editing, or layout technique, such as a duet contrast, a split screen, or caption pacing
2. A bolder variantWhat happens if this idea is pushed further, toward something more extreme
3. An overlooked audience angleA niche group that might respond to this especially well
4. A cross-channel moveHow this angle could also work on a channel that was not selected

The payoff: For the user, this is the single most memorable part of the output, and it raises the odds they come back or share it. For the product, it cheaply separates an AI copy tool from an AI inspiration tool, which reinforces what Copy Lab is meant to be.

3.6 AI Writing Constraints

The sections above cover what to do. This one covers the hard limits on what not to do, plus the format limits for each channel.

  • Never invent specific numbers, such as user counts, percentages, or days, unless they come directly from the selected Moment (for example, "Came Back Day 7" can mention "7 days")
  • Once an angle is set for a Package, it cannot switch midway or introduce a new framing
  • Never name the selected Moment directly in the copy (do not write "you just finished the tutorial")
  • Never generate fields for a channel that was not selected
  • A Recall Moment must never use a guilty, blaming, or overly emotional tone
  • If the AI cannot recognize the product name because it looks made up, it must not invent a category or positioning and force a generation. It should show "This product could not be recognized, please check the name" and stop

Format limits by channel

ChannelFieldLimit
EmailSubject60 characters or fewer
Preview90 characters or fewer
Bodyan opening line, a value line, and [CTA text]
SMSText160 characters or fewer, conversational, with a clear action or [link]
In-AppHeadline8 words or fewer
Body20 words or fewer
CTA4 words or fewer, plus an arrow
PushTitle40 characters or fewer
Body90 characters or fewer
LinkedInHeadline70 characters or fewer
Intro150 characters or fewer, professional tone
CTA4 words or fewer
TikTokHook15 words or fewer, needs to grab attention in the first 3 seconds
Script80 words or fewer, voiceover or caption script for a 15 to 30 second video
CTA10 words or fewer, the call to action at the end of the video
MetaPrimary Text125 characters or fewer, benefit-driven
Headline40 characters or fewer, short and punchy
CTAbutton text, such as Learn More or Download Now

4. Frontend Interaction

4.1 Form Flow

Enter product name -> Choose B2B / Consumer (switching resets channels to default) -> Choose Stage (channels update, Moments for that stage appear) -> Choose Moment (Activation/Retention/Revenue show Momentum and Recall as separate groups; this enables Generate Brief) -> Adjust the channel selection if needed -> Click Generate -> Loading -> Result

4.2 Result Layout

AreaContent
Trend Pulse / Momentum Idea / Recall IdeaThe current Package's trend_text, labeled based on Stage and Moment type; an "N/3" counter and a Shuffle button sit on the right
Copy by ChannelOnly the channels the user selected are shown, each with its own set of fields
A/B Test PlanThe highlight line sits at the top; comparison is a clickable reference that jumps to the package it points to; decision is shown in two columns, if_win and if_flat
One CalloutThe single tip chosen from the four directions; the front end does not show which direction was picked, only the final content
Brief Ready BarA green status bar at the bottom with a Copy All button

Shuffle logic. It switches between the 3 already-generated Packages without calling the API again. Copy All logic. It copies the entire content of the currently shown Trend Package to the clipboard.


Appendix: Theoretical Grounding

Appendix: Theory

AARRR: A Practical Framework, Not an Academic Theory

AARRR (Acquisition, Activation, Retention, Referral, Revenue) was first shared publicly by Dave McClure in 2007, in a talk called Startup Metrics for Pirates. He kept refining and re-presenting the framework over the following decade. The original material can be found on his SlideShare account (slideshare.net/dmc500hats) and his blog, Master of 500 Hats (500hats.com). McClure is a founding partner of the venture capital firm 500 Startups.

To be honest about it: AARRR is a practical metrics framework built for startups, not a peer-reviewed academic paper, and there is no original research paper for "AARRR itself" to cite. It is better understood as a simplified, easy-to-remember, practical version of the larger idea of customer lifecycle management.

Related Academic Framework: Lemon & Verhoef (2016)

Overall framework: customer journey management

Lemon, K. N., & Verhoef, P. C. (2016). Understanding Customer Experience Throughout the Customer Journey. Journal of Marketing, 80(6), 69-96. Read the paper

Published in the Journal of Marketing, this paper traces how the ideas of customer experience and customer journey developed in the marketing field. It argues that a customer should not be understood as a single conversion event, but as an ongoing process that spans many touchpoints and channels and evolves over time. In the context of Copy Lab, this paper is the academic version of the core intuition behind managing a customer relationship stage by stage, and AARRR can be seen as a simplified, practical version of that same idea.

The Theory Behind the 7 Messaging Angles

Tap a card to open it.

Cialdini, R. B. (1984). Influence: The Psychology of Persuasion.

Cialdini laid out six principles of persuasion: reciprocity, commitment and consistency, social proof, authority, liking, and scarcity. In 2016, in Pre-Suasion, he added a seventh: unity. He is professor emeritus of psychology and marketing at Arizona State University, and these principles distill a large body of his own empirical research. Social proof maps directly onto his social proof principle: when a situation is uncertain, watching what other people choose is the easiest judgment to make.

This is an internal product logic document for Copy Lab. Every theory cited here comes from published academic literature, and the links in the appendix point to publicly accessible publisher or university pages. Implementation details will change as development continues, so the latest version is always the source of truth.