A lead-search report can turn the same $5.23 bill into five different unit prices. On 19 October 2026, one anonymised software-services seller's MachGTM search made 226 queries, returned 2,090 observations, judged 1,635, kept 70 and graded 21 ready to contact.
Those are five denominators. A developer building the report needs to preserve the stage and unit behind each one.
I founded MachGTM. We have published the aggregate counts, their data dictionary and reproduction code. This article uses that historical release to explain a reporting design you can check.
Give each stage a unit
| Stage | Count | What the count describes |
|---|---|---|
| Searches | 226 | Queries executed in this run |
| Retrieved observations | 2,090 | Items returned before excluding previously seen observations |
| Previously seen observations | 455 | Observations already encountered by the workflow |
| Judged observations | 1,635 | New observations assessed against the seller's rules |
| Kept observations | 70 | Historical system grades that passed those rules |
| Ready grades | 21 | A subset of the kept observations |
An observation is the unit in these retrieval and grading totals. The aggregate release cannot tell you how many unique companies were ready to buy.
A company's announcement can appear through several source types. Several observations can concern the same company. Preserve the company identifier and the observation identifier in an internal evaluation if you intend to calculate company-level outcomes.
The released totals and their definitions are in the MachGTM study and its archived report and aggregate data.
Check the identities before calculating a rate
The observed totals satisfy three checks.
retrieved = 2090
previously_seen = 455
judged = 1635
dropped = 1565
worth_a_look = 49
ready = 21
kept = 70
assert retrieved - previously_seen == judged
assert dropped + kept == judged
assert worth_a_look + ready == kept
print(f"Kept share of judged observations: {kept / judged:.2%}")
print(f"Ready share of judged observations: {ready / judged:.2%}")
The results are 4.28% kept and 1.28% ready among judged observations. These checks establish that the released stages reconcile. They leave the correctness of individual grading decisions open.
Put the identity checks beside the chart that uses the counts. A report should fail visibly when its inputs stop reconciling, with the stage and difference available for investigation.
Keep missing reasons in the output
The run dropped 1,565 observations. Named rejection reasons covered 1,564. One had no recorded reason.
| Reason | Observations |
|---|---|
| Seller offering the same work | 497 |
| Discussion without an ask | 339 |
| Request for different work | 188 |
| Copy of another observation | 179 |
| Job post | 160 |
| Recruiter | 90 |
| Outside the region | 78 |
| Freelancer gig | 21 |
| No need shown | 7 |
| Public body | 3 |
| Already filled | 2 |
| No reason recorded | 1 |
Keep the final row in the denominator. Dropping it from the report would make the reason table appear complete while hiding a missing record.
The distinction between the 455 previously seen observations and 179 observations later rejected as copies also deserves its own labels. They belong to different stages of the run. Combining them would make a reader guess which total still includes them.
A ready grade needs a human reference
The export contained five recorded human keep-or-drop decisions. That gives us too little validation to estimate the grader's precision or recall.
The source table alone cannot resolve that gap. A later review needs the original request, event date, current status, seller relevance and an agreed acceptance rule.
For a proposed evaluation, select the review sample before reading its labels. Include keepers and a sample of drops. Otherwise the review can find weak keepers while leaving missed buyers invisible.
Record unresolved cases separately. If reviewers disagree, retain both decisions and the adjudicated result. Report the sample-selection method and reviewed denominator beside any rate.
This is a proposed review design. We have published no new human-label result from it.
Attach outcomes through identifiers
The released search contains no linked reply, booking or held-meeting outcomes. A ready grade cannot supply those missing counts.
A prospective evaluation needs a trace from observation to selected company, contacted person, message and resulting conversation or meeting. Keep the observation and message identifiers so the team can inspect which signal preceded first contact.
At the reporting cutoff, retain pending meetings and unresolved outcomes. Use the pilot scorecard to record each measure's eligible population, evidence and reviewer.
Take one percentage in your dashboard and write its numerator, denominator, stage and unit in plain language. Then identify the rows that produce it.
Method and scope
This is one seller's run from 19 October 2026, exported on 20 October. The public archive contains aggregates, a dictionary and reproduction code. It omits raw posts, an independent label set and linked outreach outcomes.
The proposed reporting checks and review design above extend that released accounting. They establish no measured meeting or revenue improvement.
The full study and review questions preserve the historical numbers. The cost ladder shows how changing the denominator changes the quoted unit price.
Prepared with AI assistance from the published aggregate study. All run counts retain their original date and scope.
Top comments (0)