Dashboard

What goes in a source quality dashboard in Metabase?

A source quality dashboard shows which recruiting channels produce qualified candidates and hires, not just applicant volume. It helps recruiting teams invest in sources that produce real outcomes.

For: Recruiting, people, finance, and business leaders. Refresh:hourly or daily is enough for most hiring dashboards. Source:modeled ATS and HRIS tables synced into a Metabase-connected database.

Which cards belong on this dashboard?

  • Applications, interviews, offers, and accepted hires by source
  • Application-to-interview and application-to-hire conversion by source
  • Source mix by role family and seniority
  • Accepted hires by source over time
  • Source aging: days from application to interview or offer
  • Low-quality high-volume sources for review

What data does this dashboard need?

  • Applications with source, created_at, job, role family, status, and outcome fields.
  • Stage history or derived reached_interview and reached_offer flags.
  • Offers with accepted and declined outcomes tied to applications.
  • Attribution rules for referrals, agencies, outbound, job boards, and manual overrides.

How do you build it?

  1. Sync ATS or HRIS data into a database, then connect that database to Metabase.
  2. Create reusable models for jobs or requisitions, applications, stage history, interviews, offers, sources, workers, and organizations as needed.
  3. Create one saved question per card, using consistent metric definitions and permissioned models.
  4. Add dashboard filters for department, location, role family, recruiter, hiring manager, source, and date range.

Example card SQL

Source quality scorecardPostgreSQL
SELECT
  COALESCE(source, 'Unknown') AS source,
  COUNT(*) AS applications,
  COUNT(*) FILTER (WHERE reached_interview) AS interviewed,
  COUNT(*) FILTER (WHERE offer_extended_at IS NOT NULL) AS offers,
  COUNT(*) FILTER (WHERE offer_accepted_at IS NOT NULL) AS accepted_hires,
  ROUND(100.0 * COUNT(*) FILTER (WHERE reached_interview) / NULLIF(COUNT(*), 0), 1)
    AS interview_rate_pct,
  ROUND(100.0 * COUNT(*) FILTER (WHERE offer_accepted_at IS NOT NULL) / NULLIF(COUNT(*), 0), 1)
    AS application_to_hire_pct
FROM modeled_applications
WHERE application_created_at >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY 1
HAVING COUNT(*) >= 10
ORDER BY accepted_hires DESC, application_to_hire_pct DESC;

Dashboards

Integrations

Metrics

Analytics

FAQ

Why not rank sources by applicant volume?
Volume can reward noisy channels. Quality requires downstream outcomes such as interviews, offers, and accepted hires.
Should referral sources be separate?
Yes if your ATS captures them reliably. Referrals often behave differently from job boards, agencies, and sourced outbound.