Software collection playbook
LMN: verify report scope and labor-rate basis
Complete report population and labor-rate basis.
By Sam Yang · Updated
Which labor rate belongs in this decision?
Choose the report from the denominator the owner needs. An estimating rate helps price work; payroll cost per productive hour requires a paid-cost numerator and the intended productive-hour population.
Evidence basis: Saved Analytics and legacy Jobs report export sequences; current menu names and date limits require verification.
Verify any supported scoped source before selecting a native report/widget export.
The question is whether an estimate funds overhead
Inspect the configured estimating and overhead assumptions, retaining their definitions rather than calling them actual employer cost.
The question is actual job labor economics
Bring the appropriate operational-hour report and payroll cost into the same population; keep paid hours and productive hours distinct.
Use supported API or native report access for the required scope. A permitted browser session can collect a specific gap. Neither route proves reconciliation or complete costs.
Put the evidence to work
How can a job run over its labor-hour budget while appearing under its estimated labor dollars?
The two dollar columns may multiply hours by different rates. An estimating or configured rate is not verified payroll cost per productive hour. Compare hours on the same population, then identify each rate’s cost and overhead basis. Also keep the report hierarchy intact: project totals and job detail often represent the same underlying activity.
Explain the labor-dollar and hours disagreement
- Collect estimated and actual operational hours for the same work, keeping project and job identities separate. If the cost extract lacks a date dimension, do not pretend a date filter scoped it.
- Read the configured estimating labor basis and overhead recovery assumptions. Official LMN guidance separates direct labor burden, overhead recovery and profit; these are not one interchangeable markup.
- Bring authorized payroll cost and paid-hour evidence into the intended period. Keep productive job hours separate from paid hours, drive/load time and other nonproductive categories.
- Compute the hours variance independently of rate differences. Describe estimating dollars as hours times estimating rate, and the retained actual-dollar field using its verified configured basis.
- Return an hours-control result and a separate payroll-to-operational-hours rate bridge. Do not call a lower configured-dollar total a purchasing or productivity saving.
Bring to the review: An hours variance plus a labeled rate comparison: estimating rate, configured operational rate, payroll cost per paid hour and cost per productive hour when supported.
Then decide: Use the hours finding to investigate execution. Use the verified cost/hour basis to revisit pricing and overhead recovery.
Collect every required report window without double counting
- Using the saved October 6 Analytics procedure, verify dashboard/widget filters and choose More actions > Export. Retain Raw versus Formatted choice and export-info metadata.
- Confirm the dialog’s final Export and retain the actual download. A menu opening is not a completed report, and a spreadsheet extension alone does not prove the file can be parsed.
- For the legacy history route, distinguish Job History - Services and Job History - Time from Job List. The saved history procedure observed a 100-day cap; verify the present cap and partition the intended coverage explicitly.
- Record each requested interval, retained file, row count and measure total, including zero-row results. Inspect empty files against access and report filters instead of calling them zero work.
- Preserve parent/project/job levels and sum one authorized level. Check interval boundaries for gaps or duplicated days before comparing with accounting.
Bring to the review: A report manifest covering the requested intervals, format, retained rows and one hierarchy level, with empty or unparsed files named explicitly.
Then decide: Repair the missing collection interval or parser first. Only then interpret the operating variance or source-to-books difference.
Which collection route answers this question?
Choose the route for the missing evidence and the access available in your account. The comparison below distinguishes documented coverage from coverage that still needs checking.
Supported integration or scoped source
- What it supplies
- Official LMN materials describe estimating and QuickBooks routes. Saved implementation uses retained reports and explicit source-run manifests for this analysis.
- What still needs proof
- This review does not establish a general-purpose supported API for the required operational history or that any connector supplies payroll cost completeness.
Choose it when: Verify a supported route against the exact report and account before choosing it; do not infer API absence from using exports.
Native Analytics or history export
- What it supplies
- Saved Analytics collection supports defined Raw/Formatted CSV/XLSX choices. Legacy Services/Time history and Job List use different forms and scope controls.
- What still needs proof
- Current report limits, current columns and whether a cost report can be period-scoped require verification.
Choose it when: Use the native report matching the question and retain its window and hierarchy metadata before transforming it.
Permitted browser collection
- What it supplies
- A read-only browser can select and read back authorized widget/report filters, follow the final export dialog and retain the completed file.
- What still needs proof
- A rendered total does not prove full export coverage or payroll cost. Current selectors and embedded frames can change.
Choose it when: Use it to obtain the specified native file or investigate a named missing report, with completion checked per report rather than per click.
Reproduce the diagnostic
Hours over budget, configured dollars below estimate
All records and amounts below are fictional teaching inputs. This example demonstrates the calculation, not a customer outcome or a reproduced software defect.
Actual job hours exceed estimated hours by 10. Yet configured actual labor dollars are $500 below estimated labor dollars. The implied estimating rate is $50 per hour and configured actual rate is $30. Verified payroll cost divided by 60 paid hours is $37.50; divided by 50 productive job hours it is $45. These are explicitly invented teaching bases, not LMN default rates.
What the CSV columns mean
- kind: Distinct teaching measure
- amount: Fictional value; units depend on kind
- Hours over estimate
- 10 hours
- 50 actual job hours less 40 estimated
- Configured dollar difference
- 500 USD
- Estimated dollars less configured actual dollars
- Payroll cost per paid hour
- 37.5 USD/hour
- Payroll cost divided by paid hours
- Payroll cost per productive hour
- 45 USD/hour
- Same payroll numerator divided by job hours
Inspect lmn-labor-bases.csv
kind,amount estimated_hours,40 actual_job_hours,50 estimated_labor_dollars,2000 configured_actual_dollars,1500 verified_payroll_cost,2250 paid_hours,60Download this CSV
Next decision: Inspect the operating cause of the hours overrun, then choose the payroll/hour basis relevant to pricing. Do not equate the $500 configured difference with savings.
Run the example locally
Save the CSV files, expected-results.json and reproduce.mjs in one folder. With Node.js installed, run the command below. It calculates the checks from the CSV bytes and rejects a changed input or expected result.
node reproduce.mjs expected-results.json
No software login, customer records or API key is required.
When the result does not make sense
Actual labor dollars are below estimate while hours exceed budget
Check: Inspect the estimated and actual rate bases and compare hours independently.
Resolve the question: Report hours overrun and rate difference separately; obtain payroll before asserting actual economic savings.
Cost exceeds every visible subtotal when imported
Check: Check whether parent totals were added to project or job rows and whether overhead is inside or outside direct cost.
Resolve the question: Recompute one hierarchy level and foot direct legs before adding any separate overhead amount.
A successful download contains no recent work
Check: Check requested interval, retained row count, actual account access and whether the export parsed successfully.
Resolve the question: Keep an empty-file manifest and identify the collection cause. Recollect the missing period after access/filter review rather than substituting zero hours.
Where automation earns its place
Good work for automation
- Maintain a per-file coverage manifest, including empty files and explicit report windows.
- Separate hierarchy levels and calculate hours variances without silently mixing rate bases.
Keep a person on these decisions
- Choose productive-hour categories and determine which payroll costs belong in the numerator.
- Set overhead recovery and decide whether source dimensions permit the proposed comparison.
References behind these workflows
Product documentation supports the specific scope stated beside each source. Level's diagnostic methods and fictional calculations remain distinct from vendor capabilities.
- LMN overhead and labor-burden definitions
Indexed official guidance separates burden, overhead cost base and profit; direct retrieval encountered an access challenge on review day. Reviewed .
- LMN reports guide
Indexed official report catalogue includes job and payroll report families; direct retrieval encountered an access challenge. Reviewed .
Collect and verify the population
- Analytics export
- Retain Raw versus Formatted choice and export metadata; they can present hierarchy differently.
- Job History - Services and Job History - Time
- Partition any current date limit into explicit coverage windows. A missing interval is not zero work.
- Job List and hierarchy
- Do not apply history-report assumptions to the Job List form. Count parent and child values once when footing totals.
Choose native report and date range; inspect report panel and complete export population. Preserve hierarchy once, then foot totals and distinguish actual paid-hour, operational-hour and estimating rates.
Dated collection sequence
Dated saved collection procedure reviewed October 6, 2026. Verify the current account, interface, permission and available reports. Menu names may differ.
- For an Analytics widget, verify the dashboard and filters, wait for loading, then hover the required widget and select More actions > Export.
- Under DATA choose the authorized Formatted (.xlsx), Formatted (.csv) or Raw (.csv) source definition.
- Review Keep attribute cells merged and Include sheet with export info, then click the confirmation dialog Export and retain the actual download and metadata.
- In the older Reports > Jobs route, 5 Job History - Services (Excel Format) and 6 Job History - Time (Excel Format) use Report By, Job, Start Date and End Date, then Submit. The observed history window cap was 100 days; verify the current limit.
- 7 Job List - (Excel Format) uses Job Type and Active Jobs Only or All Jobs, then Download File. It has a different form, with no date-range control in the saved procedure.
- Retain parent/child hierarchy once and keep rate definitions separate before adding or comparing totals.
Evidence acceptance checklist
- Read back the chosen native report and actual applied date range.
- Retain complete export coverage and identify parent versus child rows.
- Label paid, operational and productive-hour rate definitions separately.
Fictional collection example
A fictional export includes a department total above employee detail. Adding both would count the same labor twice. Retain the hierarchy and sum one level. An estimating rate can then be compared with actual cost only after its hours and overhead basis are documented.
Invented teaching scenario, not a customer result or a reproduced vendor defect.
Capture the setup with the evidence
- Company, legal entity or account, report name, period, basis, currency and timezone.
- Selected filters, status, page count, original record identifiers and control totals.
- Collection time, source route and authorized role. Record browser and automation versions when using a browser.
- Original files and exceptions. Keep credentials, customer identifiers and financial artifacts private.
A browser version helps reproduce an interface issue. It does not validate the financial conclusion.
Pitfalls and stop conditions
Date caps, report hierarchy, partial exports and overhead allocation can change the answer. Configured hourly rate is not employer cost per productive hour.
How a plausible answer can go wrong
A parent subtotal added to its child rows inflates cost; a configured hourly rate used as payroll cost can misprice labor even when the arithmetic is correct.
Stop if account identity, permission, cutoff or population is uncertain. Return the missing evidence for review. Do not fill the gap with an invented record, a balancing entry or an assumed zero.
Read-only AI collection prompt
Replace the bracketed scope before use. This prompt collects evidence; it does not permit edits, approvals or accounting execution. Requesting an emailed report is a separate account action and requires explicit authorization.
Collect read-only evidence for LMN / Granum to answer [financial question]. Confirm [company], [account/entity], [period], [basis], [currency] and [allowed reports]. Choose native report and date range; inspect the report panel, including any embedded frame that contains its visible values and complete export population. Preserve hierarchy once, then foot totals and distinguish actual paid-hour, operational-hour and estimating rates. Retain original files, complete record IDs, counts, filters, collection timestamp and exceptions. Date caps, report hierarchy, partial exports and overhead allocation can change the answer. Configured hourly rate is not employer cost per productive hour. Stop if the source or scope is uncertain. Do not post, match, reconnect, delete or change settings. Return the evidence for financial review; do not claim the books are correct. Do not approve, submit payroll, pay, transfer, refund, send messages, invite users or accept terms. Stop at any login, MFA or credential prompt and hand back to the account owner. Store files only in [approved private location]. Do not paste customer artifacts into public tools. Use only preauthorized collection actions. Request an emailed report only when its delivery is explicitly authorized; otherwise ask the account owner to supply the file.
Next decision
What does the evidence support?
Show the owner the exact numerator, denominator and overhead treatment behind the proposed rate. If a report cannot support one of them, label the missing input rather than presenting a precise hourly answer.
Compare the same population, identities and cutoff. Keep unsupported costs or settlements visible before using the result for pricing, cash or close.
Open the financial acceptance guide →Sources and scope
Base product-reference scopes were reviewed . The collection procedure retains its own review date in the dated sequence above. Individual source rechecks are dated with their citations. Operator decision guidance was reviewed 2026-10-07. The references below support their stated product scope, not every observed interface detail. It is not a vendor capability certification, a measured customer result or an independently reconciled account. Verify current features and entitlement in the account you use.
- LMN / Granum official documentation
Estimating cost, overhead and hour assumptions.