Systems & engineeringnew

Sponsored placements

First-party ads, strict track gating and privacy-preserving measurement.

Last updated 13 Aug 2026

Overview

CareerTruss runs its own ad system rather than embedding a third-party network. That choice is deliberate: no trackers follow students off the platform, every creative is reviewed by Site Superintendent, and relevance is decided by career track rather than by surveillance.

Placements

PlacementAspectWhere it appears
Rail portrait4:5Right rail on desktop — Dashboard, Opportunities, Applications, Saved
Inline landscape16:9Inside the internship detail page, between content blocks
Mobile inline4:5Below the main content under lg — so rail inventory is not lost on phones

Recommended creative sizes are 600×750 for rail and1200×675 for inline. Uploads are capped at 2 MB and must be images.

Targeting

  1. Resolve the viewer's track

    The viewer's career track is derived from their preferred roles via the same role-to-track map the ranking engine uses.
  2. Filter by placement and page

    Ads declare a placement and an optional target page. An ad with no target page is eligible everywhere its placement renders.
  3. Apply strict track gating

    If an ad declares a target_track, it renders only when the viewer's resolved track matches exactly. If the track cannot be resolved, every track-targeted ad is suppressed.
  4. Spotlight track matches

    Track-matched ads take priority. Untargeted house ads fill the slot only when no track-matched ad is eligible, so a Biology campaign can never surface to a Technology student.

Fail closed, not open

Unknown track means fewer ads, never a wrong ad. An irrelevant sponsored slot next to a career recommendation damages the credibility of the recommendation itself.

Campaign fields

FieldPurpose
title / bodyHeadline and one-line supporting copy
image_urlCreative — uploaded to a private bucket and served via a signed URL
cta_label / cta_urlAction. Internal paths route in-app; external links open out
sponsor_nameAttribution shown on the card
placementrail or inline
target_pagedashboard, internships, internship_detail, applications, saved, or any
target_trackA career track, or empty for a house ad
priorityTie-breaker among eligible ads
is_active / starts_atScheduling and kill switch

Measurement

  • Impressions and clicks increment through a single server function,increment_ad_metric.
  • Click-through rate is computed in the admin table as clicks ÷ impressions.
  • No cross-site identifiers, no third-party pixels, no behavioural profiles.

Creatives live in a private bucket

Uploaded images are stored privately and served through long-lived signed URLs. Only admins can write to the bucket, so a compromised client cannot inject creatives into the ad surface.

Tip

Sponsors: the highest-performing slot is the rail and inline on Opportunities page, because intent is at its peak there. Target the track, not the whole audience.