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.
{{ k }}
any
{{ v }}
takes
any
more than one
exactly one
office ({{ evalOffices.length || 'any' }})
{{ o }}
chain
any
v{{ c }}
Reset
{{ 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.
Previous
Next
← Back to the list
{{ evalTenderView().tender.job_name || evalTenderView().request_id }}
{{ evalTenderView().tender.office }} · {{ evalTenderView().tender.location }}
{{ generating ? 'Writing a new draft…' : 'Generate draft' }}
{{ 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) }}
{{ promptFor === ad.id ? 'Hide prompt' : 'Prompt' }}
Loading…
Not recorded for this draft.
{{ promptText }}