Skip to main content

Cost Codes & Schedule of Values

Cost codes and the Schedule of Values (SOV) are the foundation of Appello's job costing system. Cost codes define what categories of work are being performed (e.g., pipe insulation, duct wrap, cladding), while the SOV defines the contract value for each line item. Together, they enable real-time tracking of earned value vs. actual cost on every job.

Understanding Cost Codes​

What Are Cost Codes?​

Cost codes are standardized categories that classify the type of work being performed. When a worker's timesheet is approved, the hours and associated labour cost are allocated to a cost code — enabling per-activity cost tracking.

Typical Cost Code Structure​

An insulation contractor's cost codes follow a hierarchical pattern:

CodeDescriptionCategory
01-100Pipe Insulation — HotMechanical Insulation
01-200Pipe Insulation — ColdMechanical Insulation
01-300Equipment / Vessel InsulationMechanical Insulation
01-400Duct Wrap / Duct BoardMechanical Insulation
02-100Metal Jacketing — PipeSheet Metal / Cladding
02-200Metal Jacketing — FlatSheet Metal / Cladding
02-300Architectural CladdingSheet Metal / Cladding
03-100FirestoppingFireproofing
03-200Passive Fire ProtectionFireproofing
04-100Scaffold ErectionScaffolding
04-200Scaffold DismantleScaffolding
05-100Removable Covers — FabricationRemovable Covers
05-200Removable Covers — InstallationRemovable Covers
90-100SupervisionOverhead
90-200SafetyOverhead
90-300Site MobilizationOverhead

Managing Cost Codes​

Cost codes are configured at the job level:

  1. Open a job's detail page.
  2. Navigate to the Cost Codes tab.
  3. Add cost codes that apply to this job.
  4. Set budget amounts per cost code (from the estimate or contract).

Schedule of Values (SOV)​

What Is an SOV?​

The Schedule of Values breaks down a contract into billing line items — each with a dollar value. It's the basis for progress billing: as work is completed on each line item, you bill the customer for that percentage of the line item's value.

SOV Structure​

LineDescriptionContract ValuePreviously BilledCurrent %Current Billing
1Pipe Insulation — Hot$125,000.00$50,000.0015%$18,750.00
2Pipe Insulation — Cold$45,000.00$20,000.0010%$4,500.00
3Equipment Insulation$80,000.00$0.005%$4,000.00
4Metal Jacketing$60,000.00$30,000.0020%$12,000.00
5Firestopping$35,000.00$0.000%$0.00
Total$345,000.00$100,000.00$39,250.00

SOV Templates​

Reusable templates speed up SOV creation for similar jobs.

  1. Navigate to Settings → Schedule of Values Templates.
  2. Select + Create SOV Templates.
  3. Enter a Name and optional Description.
  4. Select + Add Item to add line items one at a time.
  5. Select Save.

Schedule of Values Templates list in Settings

Each template line item carries these fields:

FieldDescription
AreaBroad grouping for the line item
SystemBuilding or process system the work belongs to
PhaseProject phase
ModuleSub-grouping under system
ComponentSpecific component being billed
DescriptionFree-text description of the line item
UnitUnit of measure
GL CategoryGeneral ledger category for accounting sync
GL AccountGeneral ledger account
Cost Code #Associated cost code number
CodeShort code for the line item

Create SOV Template panel with manual Add Item entry

note

The Description field has a Rewrite with AI control that rewrites the text you've typed in that field — it does not read a file or generate line items. As of Release v1.33.0, Schedule of Values templates and job SOVs are built by adding line items one at a time (+ Add Item), copying an existing global template, or copying the SOV from another job. There is no control in the frontend for uploading an Excel/xlsx file or having AI map spreadsheet columns into SOV rows.

Building a Job's Schedule of Values​

A job's SOV lives on the job's Planning & Tracking → Schedule of Values tab. The tab only becomes available once the job has a won estimate — until then it shows a placeholder prompting you to go create/win an estimate first, since the estimate sets the job value that the SOV is built against.

Once a job has a job value, the Schedule of Values screen offers three ways to populate it:

  1. Add Item — add and edit line items directly in the grid (Description, Total Value).
  2. Import Template — copy an existing Global Template (from Settings → Schedule of Values Templates) or copy the SOV from another job, then select Copy.
  3. SOV Setup — configure the columns/fields shown on this job's SOV grid (a Basic/Advanced toggle controls how much detail is shown).

Job Schedule of Values screen with Import Template and SOV Setup controls

Selecting Import Template opens a modal with two tabs — Global Template and From Another Job — where you pick a template or source job from a dropdown and select Copy. Review the copied line items and adjust values to match the specific contract, then Save.

Import Schedule of Values Template modal

note

There is no Excel/xlsx upload step and no AI-driven column mapping in this modal — "Copy" duplicates the selected template's or job's existing line items as-is. As of Release v1.33.0, AI-assisted SOV creation from an Excel file is not shipped; SOV rows are entered manually or copied from a template/another job.

Earned vs. Burned​

The Core Question​

For every job, contractors need to answer: "Am I making money or losing money on this work?"

MetricDefinitionSource
Earned ValueWhat the work is worth per the contractSOV % complete × line item value
Actual CostWhat the work actually cost in labour, materials, etc.Timesheets + material costs + expenses
VarianceEarned minus Actual — positive = profitableCalculated

Example​

Cost CodeEarned (from SOV)Actual (from timesheets)Variance
Pipe Insulation — Hot$68,750.00$55,000.00+$13,750.00 ✅
Metal Jacketing$42,000.00$48,000.00-$6,000.00 ❌
Firestopping$0.00$2,500.00-$2,500.00 ❌

This tells the PM that pipe insulation is ahead of budget, but metal jacketing is over — requiring investigation.

How Cost Codes & SOV Connect to Other Features​

FeatureIntegration
TimesheetsWorkers select a cost code when entering time — labour costs allocate to the right category
Bulk Timesheet EntryForemen assign cost codes per crew member per shift
Progress ReportsSOV drives progress billing calculations
InvoicingInvoices pull from SOV progress for line-item billing
Job Financial SummaryRolled-up earned vs. burned at the job level
Employment AgreementsBurdened labour rates used for actual cost calculation