Skip to content

Define the Kolkhoz-to-zavod CSV handover contract #4

Description

@pudo

Define the wide CSV format through which Kolkhoz hands extracted political office-holder observations to zavod.

Kolkhoz produces source-shaped observations rather than FollowTheMoney entities. Zavod applies its existing validation, normalization, identifier, and FtM-generation tooling.

One Kolkhoz crawl project may produce multiple CSV files. Each file represents a source group that can become a separate zavod dataset.

Row grain

One row represents one person holding one position, as extracted from one source snapshot.

Kolkhoz does not deduplicate observations across sources. A person with multiple positions produces multiple rows. The same observation supported by multiple pages also produces multiple rows.

Initial columns

source_group
source_id
source_url
snapshot_id
snapshot_retrieved_at
snapshot_freshness
organisation_name
page_title
person_name
person_dob
person_bio
person_country
position_name
position_description
position_jurisdiction
position_start_date
position_end_date
evidence_quote

snapshot_freshness is fresh or stale. snapshot_retrieved_at describes the snapshot used for extraction, not a later failed refresh attempt.

Contract

  • Preserve source wording rather than performing FtM normalization.
  • Treat dates as source strings.
  • Use blank values for fields not stated or not extracted.
  • Preserve the Pravda snapshot identifier for data lineage.
  • Produce deterministic UTF-8 CSV files with a fixed column order.
  • Version the export schema.
  • Keep extraction diagnostics and model metadata in Kolkhoz unless zavod needs them for validation.
  • Permit one crawl project to emit several independently named source-group CSVs.

Questions

  • Is source_group both the output filename and the zavod dataset boundary?
  • Which fields are mandatory for a row to be exported?
  • Does evidence require only a quote or also a page locator?
  • Should country fields contain raw source text, normalized territory codes, or both?
  • How are source-group metadata and schema version delivered?
  • Where are generated CSVs stored, and how does zavod discover them?
  • Does zavod consume every extraction or only observations accepted by a Kolkhoz quality gate?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions