Canonical Schema

Each internship opportunity is represented as a JSON object. The following table provides a "canonical schema" defining the fields.

positionStringTitle of internship
companyStringCompany Name
contactStringContact information
locationObject{ city: String, state: String, country: String, zip: String }
postedDateWhen the internship was posted
dueDateDue date for applying
startDateStart date of internship
endDateEnd date of internship
compensationString"paid", "unpaid", "$20/hour", etc.
qualificationsStringWhat the applicant should have to apply.
urlURLLink to posting with full details
skillsArrayStrings. At some point, the set of skills should be canonicalized
lastScrapedDateMost recent discovery of this posting
descriptionStringTextual description of internship

All of the fields are optional. If you can't determine a value, then omit the field.

The "Date" type indicates a string that can be passed to the Date constructor to return a Date object. Examples of possible Date strings include "2020-01-12", "December 17, 1995 03:24:00", and "1995-12-17T03:24:00".

Here is an example JSON object illustrating an internship opportunity using this representation:

"position": "Intern – Software Development/Computer Science",
"company": "CCAM",
"contact": "Andreas Sanias,, (480) 965-5311",
"location": { "city": "Prince George", "state": "VA" },
"posted": "2020-05-01",
"due": "2020-08-09",
"url": "",
"qualifications": "Applicants must be U.S. citizens enrolled in an accredited school with a cumulative GPA of 3.0 or higher.",
"lastScraped": "2020-06-01T09:28:56.321-10:00",
"description": "The Software Development / Computer Science Intern will support CCAM’s research programs, helping to ensure that they are delivered on time and on budget to a high standard of quality. In this position you may develop software for embedded systems, and industrial controllers, and create communication interfaces and adapters for machines and robots."

Please store your JSON objects in a file following the naming convention [site name] The file contents must be in a format amenable to JSON.parse().

Last updated on by Philip Johnson