HTML JavaScript CSS
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
css
data
img
js
README.md
index.html

README.md

#Salary Schedules

The City of Santa Monica publishes employee salary schedules in PDF format each fiscal year.

The aim of this project is to convert human-friendly PDF into machine-friendly JSON.

This project uses the AGPL Nuget package iTextSharp to read data as text from PDF documents.

See this branch in action on the demo site.

##The Data

The json files under /data were generated by running the corresponding PDF through the SalarySchedules.App console app.

###Where is FY 10/11?

Currently, the json file for FY 10/11 is unavailable due to a bug (still unknown) in the parser. As time allows, the bug will be resolved and json data for FY 10/11 will be made available.

###What Does it Look Like?

Each json file corresponds to a single fiscal year's salary schedule. A salary schedule is made up of a number of components.

####The date the schedule was generated

"ReportRunDate": "2014-10-27T00:00:00"

####The fiscal year of the schedule

A fiscal year is defined by its start and end dates, and a short code.

"FiscalYear": {
  "StartDate": "2014-07-01T00:00:00",
  "EndDate": "2015-06-30T11:59:59",
  "ShortSpanCode": "14/15"
}

####The bargaining units represented in the schedule

An individual bargaining unit is made up of its code and name.

{
  "Code": "ATA",
  "Name": "Administrative Team Associates"
}

The salary schedule then has an array of bargaining units.

"BargainingUnits": [{
  "Code": "ATA",
  "Name": "Administrative Team Associates"
}, ...]

####The job classes represented in the schedule

A job class is composed of a title, code, grade, bargaining unit (from the above array), and one or more steps (up to a maximum of 5).

A step has a number, and the rate broken out by hourly, biweekly, monthly, and annual pay.

{
  "StepNumber": 1,
  "HourlyRate": 29.80,
  "BiWeeklyRate": 2383.85,
  "MonthlyRate": 5165.00,
  "AnnualRate": 61980.00
}

The job class then has an array of steps, along with the other properties.

{
  "Title": "Accountant-Collections",
  "Code": "1109",
  "Grade": "060",
  "BargainingUnit": {
    "Code": "ATA",
    "Name": "Administrative Team Associates"
  },
  "Steps": [{
    "StepNumber": 1,
    "HourlyRate": 29.80,
    "BiWeeklyRate": 2383.85,
    "MonthlyRate": 5165.00,
    "AnnualRate": 61980.00
  }, ...]
}

The schedule then has an array of these job classes

"JobClasses": [{
  "Title": "Accountant-Collections",
  "Code": "1109",
  "Grade": "060",
  "BargainingUnit": {
    "Code": "ATA",
    "Name": "Administrative Team Associates"
  },
  "Steps": [
    //see above
  ]
}, ...]