{"generatedAt":"2026-06-21T07:55:19.285Z","sourceRegistryVersion":"2026-06-20","families":[{"routeFamily":"salary","displayName":"Salary benchmarks","refreshRules":{"minSampleThreshold":10,"freshnessHours":2160,"routeFactsRevalidateSeconds":3600,"recommendedImportCadence":"weekly validation; immediate refresh after official dataset updates"},"sourceTypes":[{"sourceType":"official-statistics","label":"Official labor statistics","trustWeight":1,"refreshRule":"Refresh when official publication updates or corrections are released; verify at least quarterly."},{"sourceType":"compensation-survey","label":"Compensation survey","trustWeight":0.9,"refreshRule":"Refresh monthly when a newer survey wave is available."},{"sourceType":"job-board-api","label":"Observed job-board compensation signal","trustWeight":0.55,"refreshRule":"Refresh daily to weekly depending on feed volatility and market coverage."},{"sourceType":"salary-derived-model","label":"Salary-derived model","trustWeight":0.4,"refreshRule":"Regenerate every time upstream salary inputs are refreshed."},{"sourceType":"seed","label":"Seed support","trustWeight":0.1,"refreshRule":"Temporary fallback only; replace with observed inputs as early as possible."}]},{"routeFamily":"freelance-rate","displayName":"Freelance-rate benchmarks","refreshRules":{"minSampleThreshold":3,"freshnessHours":2160,"routeFactsRevalidateSeconds":3600,"recommendedImportCadence":"weekly refresh; regenerate modeled routes after salary updates"},"sourceTypes":[{"sourceType":"compensation-survey","label":"Observed freelance compensation survey","trustWeight":0.9,"refreshRule":"Refresh monthly when a newer survey wave is available."},{"sourceType":"salary-derived-model","label":"Salary-derived freelance model","trustWeight":0.75,"refreshRule":"Regenerate every time salary inputs or conversion assumptions change."},{"sourceType":"official-statistics","label":"Official compensation baseline","trustWeight":0.65,"refreshRule":"Refresh when source baseline changes, then re-run derived route checks."},{"sourceType":"seed","label":"Seed support","trustWeight":0.1,"refreshRule":"Temporary fallback only; replace with observed or modeled market support."}]},{"routeFamily":"job-market","displayName":"Job-market demand","refreshRules":{"minSampleThreshold":3,"freshnessHours":1080,"routeFactsRevalidateSeconds":3600,"recommendedImportCadence":"daily ingestion for active boards; at least weekly refresh for all tracked markets"},"sourceTypes":[{"sourceType":"job-board-api","label":"Observed job-board demand","trustWeight":1,"refreshRule":"Refresh daily or better for active demand routes."},{"sourceType":"compensation-survey","label":"Survey demand proxy","trustWeight":0.65,"refreshRule":"Refresh monthly and cross-check against observed demand streams."},{"sourceType":"official-statistics","label":"Official macro labor signal","trustWeight":0.35,"refreshRule":"Refresh when official releases are updated."},{"sourceType":"seed","label":"Seed support","trustWeight":0.1,"refreshRule":"Temporary fallback only; replace with observed demand signals."}]}]}