The analytics platform that runs the Monday leadership meeting
The company
Resorsi is a recruiting and staffing company with a lean team running sales, recruiting, and internal operations. The founder runs a weekly leadership meeting to review performance across every department. Account management, recruiting, outbound sales, marketing, and IT each bring their own set of metrics.
The problem
Before this project, every one of those metrics was pulled by hand. Someone on the team would open the CRM, filter deals by closing date, cross-reference against the email platform for outbound volume, check GitLab for engineering progress, count LinkedIn activity from exports, and compile everything into a Notion scorecard. Friday mornings became a fire drill. Formulas broke. Date ranges were off. Numbers were stale by the time the founder reviewed them.
Recruiting had no visibility into its own performance. Pedro, the head of recruiting, did not have a way to see month-over-month trends across his team. Time-to-submit, time-to-fill, candidate throughput by stage, sourcing effectiveness by channel, none of it was tracked in one place. Each recruiter had a gut feel for how they were doing. Nobody had the numbers.
The founder was running a weekly leadership meeting without fresh data. Decisions about hiring, capacity, campaign investment, and operational priorities were being made on numbers that were days old and frequently wrong.
What we built
An internal analytics platform hosted on Vercel that connects directly to every system the business runs on. The platform pulls live data on demand, applies the correct formulas, and writes the numbers into the existing Notion scorecard pages each week. The founder and department leads log in to review live metrics. Scorecards populate themselves.
Recruiting analytics
The founding layer. We defined 12 core recruiting metrics with Pedro and locked each one to a precise data source and formula so nothing is ambiguous.
- ✓Time-to-Submit. Calendar days between deal open date and the first candidate accepted date for that deal. Measures how fast the team puts a qualified candidate in front of a client.
- ✓Time-to-Fill. Calendar days between deal open and offer signed. Measures end-to-end delivery speed.
- ✓Presented to Accepted ratio. Candidates accepted divided by candidates presented. Measures shortlist quality.
- ✓Accepted to Hire ratio. Candidates hired divided by candidates accepted. Measures client commitment once interviews start.
- ✓Offer Acceptance Rate. Offers signed divided by offers sent. Measures salary and expectation alignment at the final step.
- ✓Deals Opened. New searches entering the pipeline in a given period.
- ✓Deals Closed. Searches closed successfully, counted by offer signed date.
- ✓Deal Drop Rate. Searches paused or cancelled divided by searches opened. Measures wasted work and client commitment.
- ✓Time in Stage. Average days between stage entry and exit for every pipeline stage. Surfaces exactly where deals get stuck.
- ✓Candidate throughput. Volume at every stage of the funnel, from presented through offer signed.
- ✓Sourcing effectiveness by channel. Hires per sourcing channel divided by candidates sourced per channel. Shows which channels actually produce placements.
- ✓Recruiter capacity. Active deals assigned to each recruiter. Prevents saturation and informs hiring decisions.
Every metric includes a real-time refresh button. Recruiters and leadership can pull the latest numbers during an active process without waiting for the weekly sync. The recruiter sees the current state of their pipeline the moment they ask.
LinkedIn funnel intelligence
Recruiting depends heavily on outbound LinkedIn activity. The problem with LinkedIn analytics is that LinkedIn does not export sent connection counts, so the top of the funnel is a guess. We built a second analytics layer to fix that.
- ✓A monthly recruiter intake form that each recruiter fills out at the end of the month. Self-reported connection volume, a hit-the-limit flag, and a sourcing channel mix field. This replaces the flat 1,000-requests-per-month assumption that was making every acceptance rate unreliable.
- ✓Conversation analysis. The platform parses every message from the LinkedIn export, links each conversation to the candidate cohort and the CRM record, and stores it with metadata: timestamp, sender, word count, and position in the thread.
- ✓Messages to application. How many back-and-forth messages it typically takes before someone applies.
- ✓Average word count and message cadence. Whether messages are getting longer or shorter, whether follow-ups are fast enough, and how either metric correlates with conversion.
- ✓Response rate. Of conversations the recruiter initiates after connection, what percentage get a reply.
- ✓Screened but not presented. Candidates who pass the internal screen but never reach a client. This used to fall through the cracks between stages. The platform now surfaces it as a discrete funnel step.
- ✓Connection difficulty by trade of service. Acceptance rates broken out by role type so leadership can see which searches are genuinely harder to fill.
The scorecard engine
The heaviest piece of the platform. Forty-four metrics spread across six department scorecards, each pulling from multiple source systems and writing directly into the correct week row in the Notion scorecard page.
- ✓Account Manager scorecard. Deal volume, hires made, appointments held, deal conversion rate, repeat hire rate, median hires per client, plus a snapshot of the outbound engine.
- ✓Outbound operations scorecard. Email volume, qualified positive replies, campaign reply rate, bounce rate, flagged domains, LinkedIn impressions and followers for the founder and the company page, blog publishing cadence, newsletter cadence, allbound lead volume, lead response time, and CRM accuracy.
- ✓Recruiting scorecard. Hires made, candidates accepted and presented, acceptance rate, client interviews held, pipeline coverage ratio, active freelancer performance against thresholds, and retention rate.
- ✓Per-recruiter scorecards. Every individual recruiter gets their own view of the same recruiting metrics, attributed through vendor ID rather than deal owner so freelancers and internal recruiters are counted correctly.
- ✓IT and Product scorecard. Sprint completion rate, feature adoption rate, system incidents, sprint category distribution, and tech debt resolved.
- ✓Developer scorecards. Per-engineer issues closed, personal completion rate, average days to close, and adoption rate on features they shipped.
Every formula bakes in the lessons from a manual audit we ran before building. Hires are counted by closing date, not creation date. Deals flagged as auto-renewing are excluded from new-deal counts. Deal conversion is calculated as won divided by won plus lost, not against active pipeline. Repeat hire rate is scoped to the current quarter rather than all historical clients. Per-recruiter attribution runs through the vendor field on the candidate record, because deal ownership in the CRM is unreliable for this use case. The audit surfaced seven deals that had been missed in the previous quarter and a conversion rate that was nearly 20 points off. All of those mistakes are now impossible to reproduce.
Revenue protection
On top of the analytics layer sits a set of monitors that watch the health of every revenue-producing pipe. Outbound bounce rate, spam complaint rate, sender domain blacklisting, campaign auto-pause events, reply rate collapse, candidate intake drought, candidate stage aging, orphan leads, workflow failures, and portal uptime. Each monitor has a defined threshold and a defined owner. Alerts go to the department owner first, escalate to the technical lead if they are not acknowledged, and escalate to the founder if the department owner has been alerted three times without action.
The data sources
- ✓Zoho CRM. Deal records, candidate records, accounts, stage history, vendor attribution, and pipeline stage transitions.
- ✓Email Bison. Campaign sends, replies, bounces, flagged domains, and positive reply counts.
- ✓GitLab. Issues, milestones, closures, labels, time-to-close, and verification outcomes.
- ✓LinkedIn exports. Recruiter conversations, connection cohorts, and candidate profile matches.
- ✓WordPress. Blog publish counts.
- ✓Notion. The destination for every scorecard output.
The results
Before
Friday morning. Someone pulls numbers from the CRM, cross-references the email platform, checks GitLab, counts LinkedIn activity from exports, and compiles everything into six Notion pages. Formulas break, date ranges are off, the data is stale by the time the founder sees it.
After
Scorecards populate themselves. Every department lead opens the platform and sees live numbers. The founder walks into the Monday leadership meeting with current, accurate data that was written by the system, not by a person.
What changes when this is in place
The founder stops running meetings on stale data. Department leads stop spending hours on reporting and start spending hours on the decisions the reports should be informing. Every recruiter has their own dashboard with the same rigor applied to an individual view. New recruiters and freelancers get evaluated against a defined acceptance threshold within their first month. Problems that used to go unnoticed for weeks, a campaign pipeline drying up, a candidate intake drought, a stage where deals are silently stalling, now surface the day they begin.
The analytics platform is not a reporting tool. It is how the founder controls the organization. It turns every pipe in the business into a live signal and makes weekly review something the system prepares for you instead of something you prepare for the system.