Ad Review Console
Internal tool
Sign in
Shared access for the review team. Enter the team password to continue.
{{ loginError }}
Pending Drafts
{{ queuePositionText }}
{{ ad.tender.tender_number }} {{ fmt(ad.tender.deadline) }}
{{ variantLabel(ad) }} archived closed
{{ ad.tender.job_name }}
{{ ad.tender.office }} · {{ ad.tender.location }}
{{ hiddenCount ? 'Nothing to show — the rest are hidden by the boxes above.' : 'Queue is empty — all drafts reviewed.' }}
All caught up
{{ hiddenCount ? hiddenCount + ' hidden — closed or archived.' : 'No drafts waiting for review.' }}
Approved
{{ approved.length }} approved ad(s), most recently approved first.
{{ ad.tender.tender_number || ad.request_id }} closed archived
approved {{ fmt(ad.updated_at) }} · closes {{ fmt(ad.tender.deadline) }}
{{ ad.tender.job_name }} · {{ ad.tender.office }} · {{ ad.tender.location }}
{{ ad.title }}
{{ mainText(ad) }}
{{ t }}
No approved ads yet.
Evaluate
Ads grouped by tender, newest tender first. Filters read the configuration recorded on each draft, and choose which tenders to list — a tender always carries all of its takes.
{{ evalGroups().length }} tender(s) · page {{ evalPage + 1 }} of {{ evalPageCount() }}
{{ g.tender.job_name || g.request_id }}
{{ g.tender.office }} · {{ g.tender.location }}
{{ g.ads.length }} take(s) {{ g.matched }} match {{ fmt(g.tender.deadline) }}
No ads match these filters.
{{ evalTenderView().tender.job_name || evalTenderView().request_id }}
{{ evalTenderView().tender.office }} · {{ evalTenderView().tender.location }}
{{ blockedReasonFor(evalTenderId) }}
One model call, usually 5–25 seconds. The new take joins the others below.
No ads for this tender any more.
match {{ part }} no record {{ k }} not applied
{{ ad.title }}
{{ mainText(ad) }}
{{ ad.state }} · {{ fmt(ad.created_at) }}
Loading… Not recorded for this draft.
{{ promptText }}
Overview
{{ counts.pending }}
Drafts pending review
{{ counts.approved }}
Approved ads
{{ counts.published }}
Published
{{ ad.title }}
{{ ad.tender.office }} · {{ ad.tender.location }}
{{ fmt(ad.tender.deadline) }}
No approved ads yet.
The publication ledger isn't wired up yet.
This tab lights up once the Publisher starts writing publications.
{{ toast }}