Objects¶
Yes. In honestroles, job description and role data should be the fundamental object.
Core Object¶
JobRoleRecord(fundamental object) A single normalized job-role record representing one role posting at one point in time.- Required identity fields
job_key,company,source,job_id,title,location_raw,apply_url,ingested_at,content_hash. - Enrichment and analysis fields Optional attributes such as location components, salary fields, extracted skills/languages/benefits, labels, and scores.
Why This Should Be Fundamental¶
- It matches the library mission.
honestrolesexists to process job description data end to end. - It keeps pipeline stages composable. Cleaning, filtering, labeling, and rating all transform the same base record shape.
- It makes validation and compatibility explicit. A stable core object enables predictable contract checks and safer versioning.
- It supports extensibility. New columns can be added without replacing the core record model.
Supporting Objects Around the Core¶
DatasetA collection ofJobRoleRecorditems (typically a DataFrame/table).FilterSpecA declarative set of filter rules applied to a dataset.LabelOutputDerived semantic outputs (for example: seniority, role category, tech stack).RatingOutputDerived quality/completeness/composite scores.ContractValidationResultPass/fail status for required-field checks at I/O boundaries.
Framework Rule¶
- Every public processing API should accept and return the
JobRoleRecorddataset shape (plus additive derived columns), rather than introducing alternate primary objects.