Skip to main content

Codex Challenge

Promotional push and in-app notifications for the Codex Creator Challenge partnership campaign (Codex x Handshake). Runs weekly for 5 weeks (3/29 - 4/26 2026) with two audience tracks.

Attribute
Channelsin-app, push
User typesStudents
RegionsNA, EU
Platformsweb, iOS, Android
Product areaMarketing
Notification preferencemarketing_communications
Notification config/v1/codex_challenge.yml

Audience

All students from all majors, split into two tracks:

  • Track 1 (have NOT clicked offer): Suppress users who have clicked the Codex offer button OR submitted to the Creator Challenge
  • Track 2 (have clicked offer): Suppress users who have submitted to the Creator Challenge

Trigger

This notification is sent using the Notifications Send Blaster. It is not triggered organically. Each week, two blast runs are executed (one per track) with the week and track attributes.

Required Attributes

AttributeValuesDescription
week1-5Campaign week (1 = 3/29, 2 = 4/5, ..., 5 = 4/26)
track1-21 = have not clicked offer, 2 = have clicked offer

Schedule

WeekDate
13/29
24/5
34/12
44/19
54/26

Example Blast Commands

# Track 1 - Week 1
CONFIRM=true USE_BUCKET_CSV=true \
GOOGLE_CLOUD_STORAGE_BUCKET=handshake-production-notifications-scratch \
GOOGLE_CLOUD_STORAGE_PATH=codex_challenge_track1_week1.csv \
bundle exec rails "notifications:send_notifications['notification_name=codex_challenge&notification_version=1&attributes[week]=1&attributes[track]=1']"

# Track 2 - Week 1
CONFIRM=true USE_BUCKET_CSV=true \
GOOGLE_CLOUD_STORAGE_BUCKET=handshake-production-notifications-scratch \
GOOGLE_CLOUD_STORAGE_PATH=codex_challenge_track2_week1.csv \
bundle exec rails "notifications:send_notifications['notification_name=codex_challenge&notification_version=1&attributes[week]=1&attributes[track]=2']"

How to test

Send a test notification to a single user via rails console (staging or local dev):

# On staging: seira staging handshake pods connect --dedicated
# Then open rails console: bundle exec rails c

Notifications::NotificationSendingWorker.new.perform(
Notifications::NotificationSendingWorker.nss_parameters(
name: 'codex_challenge',
version: '1',
attributes: { week: '1', track: '1' },
user_id: USER_ID,
idempotency_id: SecureRandom.uuid
)
)

Additional info

Email

Marketing emails for this campaign are handled separately via Iterable by the marketing team. The notifications team also adds a Codex Creator Challenge banner to the weekly job recommendation digest email.

Implementation

Push Channel

  • Firebase
  • Template: Notifications::Push::CodexChallenge

In-App Channel

  • Presenter: Next::Student::InAppNotifications::V1::CodexChallenge
  • Category: handshake_blast

Aliases

  • Codex Creator Challenge
  • Codex x Handshake
  • Codex Campaign Notifications