Skip to main content

Campaign Lifecycle

Every Tap campaign follows the same journey: define a mission, configure the audience, launch invitations, monitor responses, and analyze results. This page walks through each phase in detail, explaining what happens at every step and what the campaign creator experiences.

For a quick checklist of everything that's built, see Current State. For the participant's side of the story, see Participant Experience.

The Five Phases

Summary: A campaign moves through five distinct phases. The creator starts by defining their question with AI assistance, then configures and launches the campaign. While responses come in, they monitor progress. Once enough feedback is collected, they complete the campaign and view AI-generated analysis.

Color key: Pink = AI-powered, Purple = Frontend, Blue = Email, Orange = Backend

Phase 1: Define the Mission

The campaign starts with a single question: "What do you want to learn?"

The creator types a plain-language description of their feedback goal — anything from "How do employees feel about the new remote work policy?" to just "product feedback." The AI mission wizard takes it from there.

How the Wizard Works

The AI extracts three pieces of information from the creator's input:

  • Topic — What the feedback is about
  • Audience — Who should provide the feedback
  • Success Criteria — What the creator hopes to learn or achieve

If any of these are unclear, the AI asks one focused clarifying question at a time. It never asks how to collect feedback (that's always Tap) — only what, who, and why.

Once all three pieces are clear, the AI generates three polished question options. Each option is:

  • Open-ended (never yes/no)
  • Checked for bias and leading language
  • Accompanied by a rationale explaining why it works

The creator picks their preferred option, and the AI confirms the final question plus a formal mission statement. Finally, the AI generates a warm, inviting 2-3 sentence summary that will appear in invitation emails to participants.

Summary: The mission wizard guides the creator through a conversational flow — from a rough idea to a refined, unbiased question and a compelling email summary, typically in 2-4 exchanges.

What Gets Created

At the end of the wizard, the campaign record in the database has:

FieldDescriptionExample
nameCampaign name"Remote Work Pulse Check"
mission_textFormal mission statement"Gather feedback on remote work from engineering to assess satisfaction"
initial_questionThe refined opening question"What aspects of our remote work setup work well for you, and where do you see room for improvement?"
mission_summaryEmail-friendly summary"Your experience with remote work matters to us. We'd love to hear what's working and what could be better..."

Phase 2: Configure the Campaign

After the mission is defined, the creator configures the campaign settings and audience.

Campaign Settings

SettingOptionsDefault
Audience typeInternal (employees) or External (customers)Internal
AnonymityAnonymous or identified responsesIdentified
Max follow-upsNumber of AI follow-up questions per participant (1-5)3
Reminder intervalHours between automated reminder emailsConfigurable

Uploading Participants

The creator uploads a CSV file with participant names and email addresses. The system:

  1. Parses the CSV (supports columns named name/Name and email/Email)
  2. Validates email formats using a ReDoS-safe email validator
  3. Generates a unique token (UUID) for each participant
  4. Saves all participants to the database with "pending" status
  5. Updates the campaign's participant count

Participants can also be removed from a draft campaign if the creator needs to start over.

Campaign State: Draft

During this phase, the campaign is in Draft status. The creator can freely edit settings, change the question, add or remove participants, or delete the entire campaign. Nothing has been sent yet.

Phase 3: Launch

When the creator hits "Launch," two things happen simultaneously:

  1. Invitation emails are sent to every pending participant
  2. The campaign status changes from Draft to Active

The Invitation Email

Each participant receives a styled HTML email containing:

  • The campaign name as the heading
  • A personalized greeting ("Hi Sarah" or "Hi there" for anonymous campaigns)
  • The mission summary (generated by the AI in Phase 1)
  • An estimated time commitment ("about 3-5 minutes")
  • A prominent "Share Your Feedback" button linking to their unique URL
  • A plain-text link as a fallback

The unique URL format is: app.tap.yelin.io/respond/{participant_token}

Each participant gets their own token, so responses are tracked individually. The email is sent through Resend with a glassmorphism-style design (dark gradient background with frosted glass card).

What Happens in the Database

When invitations are sent:

  • Each participant's status changes from pending to invited
  • The invited_at timestamp is recorded
  • The campaign status becomes active
  • Failed email deliveries are tracked and reported back to the creator

Summary: Launch is a one-click action. The backend loops through all pending participants, sends styled invitation emails with unique links, updates their status, and activates the campaign.

Phase 4: Monitor

Once the campaign is active, the creator can monitor progress in real time from their dashboard.

What the Dashboard Shows

  • Response progress — How many participants have responded vs. total invited
  • Completion rate — Percentage of participants who finished the full conversation
  • Participant status — Individual tracking (pending, invited, in progress, completed)
  • Live transcripts — The creator can read any participant's full conversation as it happens

Automated Reminders

An hourly cron job checks for participants who were invited but haven't responded. If the configured reminder interval has passed, they receive a follow-up email with an amber-colored "Complete Survey Now" button (distinct from the original purple invitation).

Campaign Controls

While a campaign is active, the creator can:

  • Pause — Temporarily stop accepting responses (status changes to Paused). Existing conversation links stop working until the campaign is resumed.
  • Resume — Reactivate a paused campaign (status returns to Active)

Phase 5: Analyze

When the creator decides enough responses have been collected, they complete the campaign. This triggers the full AI analysis pipeline.

Completing the Campaign

Marking a campaign as complete:

  • Changes the status to Completed
  • Disables all participant response links (new clicks show a "campaign completed" message)
  • Makes the analysis dashboard available

What the Analysis Includes

Four AI functions run in parallel to generate:

Analysis TypeWhat It Produces
Sentiment AnalysisPercentage breakdown — positive, neutral, negative
Theme ExtractionUp to 10 recurring themes, sorted by frequency
Executive SummaryOverview paragraph, key findings, top themes, recommendations
Conversation GroupingConversations clustered by theme (e.g., "Price Concerns", "Feature Requests")

Beyond the automated analysis, creators can ask free-form questions about their data:

  • "What are the main complaints?"
  • "How do people feel about the timeline?"
  • "What suggestions came up most?"

The AI answers using only the actual responses, provides supporting quotes, and rates its own confidence level.

Caching

Analysis results are cached in the database. The cache is valid as long as the response count hasn't changed. If the creator regenerates the analysis (or new responses arrived before completion), all four functions run fresh and the cache is replaced.

After Analysis

Once a campaign is completed and analyzed, the creator can:

  • Archive — Move the campaign out of the main list (data is preserved)
  • Unarchive — Restore an archived campaign to the completed list
  • Clone — Create a copy of the campaign settings in Draft status for reuse

Campaign State Machine

Summary: A campaign progresses through a defined set of states. The creator controls transitions through the dashboard — launch, pause, resume, complete, archive, and unarchive.

TransitionWhat Triggers ItWhat Happens
Draft → ActiveCreator clicks LaunchEmails sent, participants get unique links
Active → PausedCreator clicks PauseResponse links temporarily disabled
Paused → ActiveCreator clicks ResumeResponse links re-enabled
Active → CompletedCreator clicks CompleteResponse links permanently disabled, analysis available
Completed → ArchivedCreator clicks ArchiveCampaign hidden from main list (data preserved)
Archived → CompletedCreator clicks UnarchiveCampaign restored to completed list

Draft campaigns can also be deleted entirely (permanently removed) or cloned (settings copied to a new draft).