Skip to main content

Use Cases

This page documents how ads are created, reviewed, and managed in the Jod platform. It is written for non-technical team members — no coding knowledge needed.

No Billing Required (Early Access)

In the current deployment, ads run without billing integration. Companies can create and submit campaigns freely. Billing (placement credits) will be enforced in a later release.

#Use CaseWhoHow it starts
UC1Creates a CampaignCompany or AdminClicks "Create Campaign" in employer dashboard or Team Portal
UC2Submits Campaign for ReviewCompany or AdminClicks "Submit for Review" on a draft campaign
UC3Admin Approves a CampaignAdminClicks "Approve" on a pending_review campaign
UC4Admin Rejects a CampaignAdminClicks "Reject" with a note explaining the issue
UC5Company Revises and ResubmitsCompanyEdits campaign after rejection and resubmits
UC6Campaign Goes LiveSystemAutomatic — runs daily when scheduled start date is reached
UC7Marketplace Serves an AdPublic visitorVisits any page with an active ad slot
UC8Daily Credit ConsumptionSystemAutomatic daily billing job (billing integration TBD)
UC9User Views an AdUser (browser)Ad scrolls into viewport
UC10User Clicks an AdUserClicks the ad image or CTA
UC11Campaign CancelledCompany or AdminClicks "Cancel Campaign" on an approved campaign
UC12Company Views Campaign AnalyticsCompanyOpens campaign detail page
UC13Company Reuses a CreativeCompanySelects existing creative when adding a placement
UC14Campaign CompletesSystemAutomatic — runs daily when end date is reached
UC15Admin Manages Placement InventoryAdminNavigates to Team Portal → Ads → Placements

UC1 — Creates a Campaign

A campaign is the top-level container for your advertising. Inside a campaign, you add one or more placements — each placement is a specific ad slot (e.g. Home Hero Banner) with a creative image and duration.

Step 1 — Open the Campaigns Page

Navigate to Employer Dashboard → Ads → Campaigns. You will see your existing campaigns here.

Campaign list page


Step 2 — Create a New Campaign

Click "New Campaign" (or the equivalent button). Enter a campaign name. The start date is optional — if left blank, all placements will go live 1 day after admin approval.

Create campaign form

Create campaign form filled

After saving, you will be taken to the campaign detail page. The campaign is in Draft status.

Campaign detail page after creation


Step 3 — Add a Placement to Your Campaign

Go to the campaign detail page. Since the campaign has no placements yet, click "Create your first placement".

Campaign detail - no placements

The Add Placement form lets you configure one ad unit within your campaign:

Add placement form - empty

Select a Placement — choose the ad slot (e.g. Home Page - Hero Banner).

Placement selected in form

Select a Price — radio buttons appear showing the available durations and credit costs for that slot.

Price option selected


Step 4 — Select or Upload a Creative

Click "Select Creative" to open the creative modal. This modal has two tabs:

  • Select Existing — pick from images you have already uploaded
  • Upload New — upload a brand new image directly here

Creative modal — Select Existing tab

If you have no suitable image yet, click the "Upload New" tab. The placement is already pre-filled — the form knows which dimensions to validate against.

Creative modal — Upload New tab

Upload your image (JPG, PNG, WebP — max 2MB). A preview shows the image and its detected dimensions.

Creative modal — image uploaded with preview

Give the creative a name, then click "Upload Creative".

Creative modal — upload form filled and ready

After uploading, the modal automatically switches back to "Select Existing" where your new creative appears. Click it to select it for this placement.

Creative modal — new creative visible, ready to select

The placement form now shows a preview card of the selected creative.

Add placement form — creative selected


Step 5 — Complete the Placement

Fill in the Destination URL (where users land when they click the ad — must be a jodapp.com URL) and Headline, then click "Add Placement".

Add placement form fully filled

You will return to the campaign detail page with the placement listed.

Campaign with placement added

Click "+ Add Placement" to add more placements to the same campaign.

Creative Library

Creatives are stored in your company's library (Ads → Creatives) and can be reused across campaigns — no need to re-upload the same image. See UC13 for details.


Admin Variant — Creating on Behalf of a Company

When a company requests help, an admin can create the campaign from Team Portal → Ads → Campaigns → New Campaign. The form is identical except for two extra fields at the top:

  • Company — search and select which company this campaign belongs to
  • Created By — search and select the user within that company who is the campaign owner (determines who receives email notifications)

Admin create campaign form — extra Company and Created By fields

Admin create campaign form — filled

After saving, the admin sees the same campaign detail page with the full set of actions: Edit, Add Placement, Submit for Review, and Cancel.

Admin campaign detail — draft status showing all action buttons

The rest of the flow (add placement, submit, approval) is identical to the company flow above.


UC2 — Submits Campaign for Review

Once you are satisfied with your campaign and all its placements, submit it to the admin team for review.

On the campaign detail page, click "Submit for Review". This button is disabled if the campaign has no placements.

Campaign ready to submit

A confirmation modal summarises what you are submitting.

Submit for review confirmation modal

After confirming, the campaign status changes to Pending Review. The campaign is now locked — no edits are possible until the admin reviews it.

Campaign now pending review

What happens to credits?

In the billing-enabled version: placement credits are reserved at this point. They are not consumed yet — just held until the campaign is approved or rejected.

In the current deployment (no billing): this step has no credit impact.


UC3 — Admin Approves a Campaign

When a campaign is submitted for review, admin can approve or reject it from the Team Portal → Ads → Campaigns page.

Campaign List with Pending Campaigns

The admin campaign list shows all campaigns with their current status. Campaigns in pending_review status display Approve and Reject action buttons directly in the row.

Admin campaign list

View Campaign Detail

Click "View" to open the campaign detail page and review the placements, creative images, and configuration before approving.

Admin campaign detail page

Scroll down on the detail page to review the placement configuration, creative, and scheduling.

Admin campaign detail scrolled

Approving

Click "Approve" on the campaign row (or from the detail page). A confirmation modal appears showing what will happen — start dates and placement activation schedule.

Approve confirmation modal

After confirming, the campaign status changes to Approved. Each placement is scheduled to go live on the requested start date (or the next day if no date was set).

Campaign approved

Start Date Logic
  • If the company set a future start date → placements activate on that date automatically
  • If no start date was set → placements go live the next day after approval at 00:00 SGT
  • If the admin approves after the requested start date has already passed → placements go live immediately

Approval Email Notification

After approval, the system automatically sends an email to the company contact who created the campaign. The email confirms the campaign name and includes the placement schedule.

Approval notification email


UC4 — Admin Rejects a Campaign

If a campaign has issues (e.g. inappropriate creative, wrong dimensions, invalid URL), the admin rejects it with a note explaining what needs to be fixed.

Campaign List — Reject Button

The Reject button appears next to Approve for pending_review campaigns.

Admin list showing Approve/Reject buttons

Rejection Dialog

Click "Reject". A dialog box appears where you must enter a rejection note explaining the issue to the company.

Reject campaign dialog

Write a clear, helpful note so the company knows exactly what to fix.

Rejection notes filled in

After confirming, the campaign is rejected and the company's credits are released back (in billing-enabled mode).

Campaign rejected in admin list

Company Sees the Rejection

On the company side, the campaign detail page shows the rejection with the admin's notes. The campaign is editable again — the company can fix the issues and re-submit.

Company view of rejected campaign with admin notes

Rejection Email Notification

The company contact also receives an email notification explaining that the campaign was rejected and including the admin's rejection notes.

Rejection notification email


UC5 — Company Revises and Resubmits After Rejection

After a rejection the company can edit their campaign placements and resubmit without creating a new campaign.

Step 1 — Review the Rejection Note

The rejection note from admin is shown as a red alert at the top of the campaign detail page. The campaign status is back to a state where edits are allowed.

Rejected campaign detail with rejection note

Scroll down to see the existing placements. An Edit button is available on each placement.

Rejected campaign — placements listed with Edit option

Step 2 — Edit the Placement

Click Edit on the placement that needs fixing. The edit form looks identical to the add-placement form.

Edit placement form

Click "Change Creative" (or "Select Creative") to open the creative modal and upload or swap the image.

Step 3 — Resubmit

Once the fix is saved, click "Submit for Review" on the campaign detail page. The same confirmation modal appears.

Resubmit confirmation modal

After confirming, the campaign returns to pending_review and waits for admin to review again.

Campaign resubmitted — back to pending_review


UC6 — Campaign Placement Goes Live (Scheduled → Active)

This is an automatic process — no manual action needed.

A daily background job runs and checks for placements where start_time ≤ now. Matching placements transition from Scheduled → Active and start appearing on the website.

note

If the admin approves a campaign after its requested start date has already passed, the placement goes live immediately at approval time — it never enters "Scheduled" state.


UC7 — Marketplace Serves an Ad (What Visitors See)

When a visitor opens a page on jodapp.com that contains an ad slot, the ad appears automatically. Here is what it looks like from a visitor's perspective.

Home page — Hero Banner

The top of the home page shows the hero banner ad.

Home page with live ad in hero slot

Scrolling down reveals additional ad slots further down the page.

Home page scrolled — more ad slots

Job Listings page

An inline ad appears between job listings in the search results.

Job listings page with inline ad

How serving works (for reference)

When a page loads an ad slot, the system:

  1. Finds all active placements for that slot
  2. Uses fair rotation — picks the placement that was served least recently, so all active advertisers get equal exposure
  3. Records an impression and returns the ad data to the browser

If no active ads exist for a slot, the slot falls back to Google AdSense — no blank space is ever shown to visitors.


UC8 — Daily Credit Consumption

Billing Integration Pending

This use case applies once billing is enabled. Currently, credits are not consumed.

Each day, for every active placement, the system deducts a proportional credit amount:

daily_units = credit_cost_snapshot ÷ duration_days

Credits are consumed from the reserved hold. Revenue is recognised proportionally each day.


UC9 — User Views an Ad (Viewport Tracking)

When an ad enters the user's visible area (viewport), the browser fires a beacon:

PATCH /marketplace/ads/impressions/:uuid/viewed

This marks the impression's viewed_at timestamp. An ad served (UC7) but never scrolled into view will have a null viewed_at. This distinction drives the View Rate metric in analytics.


UC10 — User Clicks an Ad

When a user clicks the ad:

  1. The browser redirects to an API endpoint that records a Click (tied to the impression and placement)
  2. The user is then redirected to the campaign's destination_url

Click tracking is server-side, so it works even with ad-blockers or script restrictions.


UC11 — Campaign Cancelled

Either the company or an admin can cancel an approved campaign at any time — for example, if a promotion ends early or the ad content is no longer valid.

How to Cancel

On the campaign detail page, the "Cancel Campaign" button appears for approved campaigns.

Approved campaign with Cancel button visible

Click it. A confirmation modal explains what will happen.

Cancel campaign confirmation modal

After confirming, the campaign status changes to Cancelled. All running placements stop immediately.

Campaign after cancellation — Cancelled status

What happens to credits?

  • All scheduled and active placements are stopped immediately
  • Reserved credits for unused days are released back to available (billing-enabled mode)
  • Credits already consumed (for days the ad was already running) are not refunded
  • The campaign record stays visible in the dashboard for reference
Pausing is not supported

There is currently no "pause" feature. If you need to temporarily stop a campaign, cancel it and create a new one when ready to resume.


UC12 — Company Views Campaign Analytics

The campaign detail page shows real-time analytics for each placement.

Campaign analytics view

Scroll down to see placement-level stats.

Campaign analytics scrolled

Metrics explained:

MetricDescription
ImpressionsHow many times the ad was returned to a page visitor
ViewsHow many times the ad actually entered the visitor's visible screen area
View RateViews ÷ Impressions × 100
ClicksHow many times users clicked on the ad
CTRClick-through rate: Clicks ÷ Impressions × 100

UC13 — Company Reuses a Creative

Creatives are stored in your company's creative library and can be reused across campaigns.

When adding a placement (UC1, Step 4), click "Select Creative". The modal shows all creatives uploaded by your company — select any existing one without re-uploading.

This is useful when running the same branding across multiple campaigns or seasonal promotions.


UC14 — Campaign Placement Completes

This is an automatic process — no manual action needed.

A daily background job checks for active placements where end_time ≤ now. Those placements transition Active → Completed.

When all placements in a campaign are in a terminal state (Completed or Cancelled), the campaign itself transitions to Completed.

The employer always receives the full contracted durationend_time = start_time + duration_days, regardless of whether admin approved on time or late.


UC15 — Admin Manages Placement Inventory

Admins manage the placement slots themselves — which ad slots exist on the website and their pricing.

Navigate to Team Portal → Ads → Placements to see all available placements.

Admin placements list

Click on a placement to view its details and pricing options.

Admin placement detail with pricing

Each placement has:

  • A unique key (used by the frontend to identify the slot, e.g. home_hero)
  • Required image dimensions
  • One or more price tiers (duration + credit cost combinations)