[
    {
        "month": "2026-08",
        "tech": "Artificial Intelligence",
        "role_count": 133,
        "company_count": 121,
        "salary_post_count": 53,
        "salary_transparency_rate": 0.3985,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 56,
        "ai_post_count": 133,
        "demand_share": 0.5565,
        "post_count_3mo": 434,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1192,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Python",
        "role_count": 63,
        "company_count": 59,
        "salary_post_count": 25,
        "salary_transparency_rate": 0.3968,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 29,
        "ai_post_count": 47,
        "demand_share": 0.2636,
        "post_count_3mo": 205,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Full Stack",
        "role_count": 62,
        "company_count": 58,
        "salary_post_count": 32,
        "salary_transparency_rate": 0.5161,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 23,
        "ai_post_count": 45,
        "demand_share": 0.2594,
        "post_count_3mo": 223,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3034,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "TypeScript",
        "role_count": 58,
        "company_count": 53,
        "salary_post_count": 26,
        "salary_transparency_rate": 0.4483,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 29,
        "ai_post_count": 47,
        "demand_share": 0.2427,
        "post_count_3mo": 194,
        "salary_p50_3mo": 153000,
        "demand_delta_3mo": -0.1714,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Backend",
        "role_count": 57,
        "company_count": 53,
        "salary_post_count": 25,
        "salary_transparency_rate": 0.4386,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 34,
        "ai_post_count": 37,
        "demand_share": 0.2385,
        "post_count_3mo": 198,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.24,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "React",
        "role_count": 51,
        "company_count": 46,
        "salary_post_count": 25,
        "salary_transparency_rate": 0.4902,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 23,
        "ai_post_count": 36,
        "demand_share": 0.2134,
        "post_count_3mo": 190,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2273,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "PostgreSQL",
        "role_count": 47,
        "company_count": 43,
        "salary_post_count": 24,
        "salary_transparency_rate": 0.5106,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 26,
        "ai_post_count": 33,
        "demand_share": 0.1967,
        "post_count_3mo": 148,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1132,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Machine Learning",
        "role_count": 39,
        "company_count": 36,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 15,
        "ai_post_count": 39,
        "demand_share": 0.1632,
        "post_count_3mo": 114,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2041,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "AWS",
        "role_count": 37,
        "company_count": 33,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.5135,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 19,
        "ai_post_count": 23,
        "demand_share": 0.1548,
        "post_count_3mo": 107,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.2885,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Golang",
        "role_count": 26,
        "company_count": 24,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.2692,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 14,
        "ai_post_count": 17,
        "demand_share": 0.1088,
        "post_count_3mo": 99,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.381,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Kubernetes",
        "role_count": 26,
        "company_count": 25,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3462,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 17,
        "ai_post_count": 20,
        "demand_share": 0.1088,
        "post_count_3mo": 69,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1818,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Frontend",
        "role_count": 25,
        "company_count": 23,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.56,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 11,
        "ai_post_count": 20,
        "demand_share": 0.1046,
        "post_count_3mo": 86,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "LLM",
        "role_count": 25,
        "company_count": 23,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 15,
        "ai_post_count": 25,
        "demand_share": 0.1046,
        "post_count_3mo": 82,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Node.js",
        "role_count": 24,
        "company_count": 23,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.625,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 12,
        "ai_post_count": 18,
        "demand_share": 0.1004,
        "post_count_3mo": 70,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.2258,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "API",
        "role_count": 20,
        "company_count": 20,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.45,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 10,
        "ai_post_count": 12,
        "demand_share": 0.0837,
        "post_count_3mo": 56,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0909,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Docker",
        "role_count": 17,
        "company_count": 13,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.5294,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 8,
        "ai_post_count": 9,
        "demand_share": 0.0711,
        "post_count_3mo": 41,
        "salary_p50_3mo": 124000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Rust",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 9,
        "ai_post_count": 9,
        "demand_share": 0.0628,
        "post_count_3mo": 66,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.4444,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "DevOps",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 8,
        "ai_post_count": 6,
        "demand_share": 0.0586,
        "post_count_3mo": 56,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5172,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Terraform",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3571,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 8,
        "ai_post_count": 7,
        "demand_share": 0.0586,
        "post_count_3mo": 39,
        "salary_p50_3mo": 156000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "GitHub",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.5385,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 9,
        "demand_share": 0.0544,
        "post_count_3mo": 45,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.0833,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "C++",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 5,
        "demand_share": 0.0502,
        "post_count_3mo": 34,
        "salary_p50_3mo": 170000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Next.js",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 10,
        "demand_share": 0.0502,
        "post_count_3mo": 53,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "GCP",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.5455,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 8,
        "demand_share": 0.046,
        "post_count_3mo": 30,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.3529,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "SQL",
        "role_count": 11,
        "company_count": 9,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4545,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 7,
        "demand_share": 0.046,
        "post_count_3mo": 30,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.5714,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "JavaScript",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 7,
        "demand_share": 0.0418,
        "post_count_3mo": 33,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": -0.4444,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Linux",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0418,
        "post_count_3mo": 30,
        "salary_p50_3mo": 91800,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "React Native",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0418,
        "post_count_3mo": 36,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.0909,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Ruby on Rails",
        "role_count": 10,
        "company_count": 8,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 7,
        "demand_share": 0.0418,
        "post_count_3mo": 30,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "CI/CD",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 8,
        "demand_share": 0.0377,
        "post_count_3mo": 30,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.3077,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "GraphQL",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.7778,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 7,
        "demand_share": 0.0377,
        "post_count_3mo": 27,
        "salary_p50_3mo": 153000,
        "demand_delta_3mo": 0.8,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Java",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 5,
        "demand_share": 0.0377,
        "post_count_3mo": 30,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3077,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "UI",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0377,
        "post_count_3mo": 26,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "B2B",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 7,
        "demand_share": 0.0335,
        "post_count_3mo": 32,
        "salary_p50_3mo": 87600,
        "demand_delta_3mo": 0.1429,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "SaaS",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 6,
        "demand_share": 0.0335,
        "post_count_3mo": 43,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.4667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "UX",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 6,
        "demand_share": 0.0335,
        "post_count_3mo": 25,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.1111,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "PyTorch",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 7,
        "demand_share": 0.0293,
        "post_count_3mo": 13,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Azure",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.0251,
        "post_count_3mo": 23,
        "salary_p50_3mo": 91800,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Redis",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 6,
        "demand_share": 0.0251,
        "post_count_3mo": 17,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "SDK",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.0251,
        "post_count_3mo": 18,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Android",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0209,
        "post_count_3mo": 28,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.375,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "FastAPI",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 4,
        "demand_share": 0.0209,
        "post_count_3mo": 14,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Tailwind CSS",
        "role_count": 5,
        "company_count": 3,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.0209,
        "post_count_3mo": 14,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "MLOps",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 4,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.0167,
        "post_count_3mo": 6,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "iOS",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0167,
        "post_count_3mo": 27,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": ".NET",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0126,
        "post_count_3mo": 10,
        "salary_p50_3mo": 91800,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Angular",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0126,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "CLI",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0126,
        "post_count_3mo": 6,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Elixir",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0126,
        "post_count_3mo": 10,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "MongoDB",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0126,
        "post_count_3mo": 14,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.7273,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "MySQL",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0126,
        "post_count_3mo": 9,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Scala",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0126,
        "post_count_3mo": 9,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Vue.js",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0126,
        "post_count_3mo": 8,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Web3",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0126,
        "post_count_3mo": 16,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Windows",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0126,
        "post_count_3mo": 12,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "C#",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0084,
        "post_count_3mo": 13,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.7143,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Django",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0084,
        "post_count_3mo": 18,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.7143,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Kafka",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0084,
        "post_count_3mo": 8,
        "salary_p50_3mo": 176000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "NLP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0084,
        "post_count_3mo": 4,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Svelte",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0084,
        "post_count_3mo": 5,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "TensorFlow",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0084,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0042,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "CSS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0042,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Elasticsearch",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0042,
        "post_count_3mo": 6,
        "salary_p50_3mo": 176000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Erlang",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0042,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "GitLab",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0042,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "HTML",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0042,
        "post_count_3mo": 2,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "PHP",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0042,
        "post_count_3mo": 8,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.8333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0042,
        "post_count_3mo": 2,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0042,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-08",
        "tech": "macOS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0042,
        "post_count_3mo": 5,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Artificial Intelligence",
        "role_count": 136,
        "company_count": 125,
        "salary_post_count": 56,
        "salary_transparency_rate": 0.4118,
        "salary_job_count": 44,
        "salary_p50": 150000,
        "salary_p75": 175000,
        "salary_p90": 180000,
        "remote_count": 70,
        "ai_post_count": 136,
        "demand_share": 0.5037,
        "post_count_3mo": 452,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2273,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Full Stack",
        "role_count": 66,
        "company_count": 58,
        "salary_post_count": 24,
        "salary_transparency_rate": 0.3636,
        "salary_job_count": 18,
        "salary_p50": 139700,
        "salary_p75": 160000,
        "salary_p90": 190000,
        "remote_count": 38,
        "ai_post_count": 41,
        "demand_share": 0.2444,
        "post_count_3mo": 250,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2326,
        "salary_delta_3mo": -0.2017,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "React",
        "role_count": 66,
        "company_count": 62,
        "salary_post_count": 26,
        "salary_transparency_rate": 0.3939,
        "salary_job_count": 19,
        "salary_p50": 120000,
        "salary_p75": 160000,
        "salary_p90": 176000,
        "remote_count": 41,
        "ai_post_count": 41,
        "demand_share": 0.2444,
        "post_count_3mo": 205,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1538,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "TypeScript",
        "role_count": 64,
        "company_count": 57,
        "salary_post_count": 25,
        "salary_transparency_rate": 0.3906,
        "salary_job_count": 20,
        "salary_p50": 150000,
        "salary_p75": 176000,
        "salary_p90": 180000,
        "remote_count": 39,
        "ai_post_count": 44,
        "demand_share": 0.237,
        "post_count_3mo": 206,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2099,
        "salary_delta_3mo": 0.1538,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Backend",
        "role_count": 60,
        "company_count": 55,
        "salary_post_count": 23,
        "salary_transparency_rate": 0.3833,
        "salary_job_count": 20,
        "salary_p50": 135000,
        "salary_p75": 175000,
        "salary_p90": 178500,
        "remote_count": 41,
        "ai_post_count": 39,
        "demand_share": 0.2222,
        "post_count_3mo": 216,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3407,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Python",
        "role_count": 58,
        "company_count": 55,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.2931,
        "salary_job_count": 15,
        "salary_p50": 140000,
        "salary_p75": 175000,
        "salary_p90": 180000,
        "remote_count": 32,
        "ai_post_count": 39,
        "demand_share": 0.2148,
        "post_count_3mo": 226,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3256,
        "salary_delta_3mo": -0.085,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "PostgreSQL",
        "role_count": 44,
        "company_count": 42,
        "salary_post_count": 22,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 19,
        "salary_p50": 150000,
        "salary_p75": 175000,
        "salary_p90": 200000,
        "remote_count": 26,
        "ai_post_count": 29,
        "demand_share": 0.163,
        "post_count_3mo": 154,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2281,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "AWS",
        "role_count": 33,
        "company_count": 31,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 8,
        "salary_p50": 135000,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 21,
        "ai_post_count": 17,
        "demand_share": 0.1222,
        "post_count_3mo": 122,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.34,
        "salary_delta_3mo": -0.1,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Machine Learning",
        "role_count": 30,
        "company_count": 28,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2667,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 10,
        "ai_post_count": 30,
        "demand_share": 0.1111,
        "post_count_3mo": 124,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Frontend",
        "role_count": 29,
        "company_count": 28,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.3448,
        "salary_job_count": 9,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 170000,
        "remote_count": 18,
        "ai_post_count": 20,
        "demand_share": 0.1074,
        "post_count_3mo": 96,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2368,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Golang",
        "role_count": 29,
        "company_count": 26,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.5517,
        "salary_job_count": 14,
        "salary_p50": 130000,
        "salary_p75": 170000,
        "salary_p90": 180000,
        "remote_count": 19,
        "ai_post_count": 17,
        "demand_share": 0.1074,
        "post_count_3mo": 115,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3095,
        "salary_delta_3mo": -0.1558,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Rust",
        "role_count": 26,
        "company_count": 24,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 9,
        "salary_p50": 150000,
        "salary_p75": 180000,
        "salary_p90": 200000,
        "remote_count": 18,
        "ai_post_count": 8,
        "demand_share": 0.0963,
        "post_count_3mo": 78,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.037,
        "salary_delta_3mo": 0.6667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "LLM",
        "role_count": 25,
        "company_count": 22,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.48,
        "salary_job_count": 10,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 176000,
        "remote_count": 18,
        "ai_post_count": 25,
        "demand_share": 0.0926,
        "post_count_3mo": 82,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1935,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Node.js",
        "role_count": 24,
        "company_count": 22,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.5833,
        "salary_job_count": 10,
        "salary_p50": 100000,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 14,
        "ai_post_count": 15,
        "demand_share": 0.0889,
        "post_count_3mo": 77,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1111,
        "salary_delta_3mo": -0.2308,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "DevOps",
        "role_count": 20,
        "company_count": 20,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 15,
        "ai_post_count": 9,
        "demand_share": 0.0741,
        "post_count_3mo": 71,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2308,
        "salary_delta_3mo": -0.0196,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Kubernetes",
        "role_count": 17,
        "company_count": 17,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2941,
        "salary_job_count": 4,
        "salary_p50": 91800,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 11,
        "ai_post_count": 9,
        "demand_share": 0.063,
        "post_count_3mo": 65,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3929,
        "salary_delta_3mo": -0.388,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Next.js",
        "role_count": 17,
        "company_count": 15,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4118,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 7,
        "ai_post_count": 11,
        "demand_share": 0.063,
        "post_count_3mo": 61,
        "salary_p50_3mo": 148750,
        "demand_delta_3mo": -0.2609,
        "salary_delta_3mo": -0.25,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "SaaS",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4375,
        "salary_job_count": 7,
        "salary_p50": 104900,
        "salary_p75": 140000,
        "salary_p90": 175000,
        "remote_count": 9,
        "ai_post_count": 12,
        "demand_share": 0.0593,
        "post_count_3mo": 50,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.1579,
        "salary_delta_3mo": 0.3113,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "React Native",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 12,
        "ai_post_count": 9,
        "demand_share": 0.0556,
        "post_count_3mo": 37,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": -0.0769,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "API",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 7,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 200000,
        "remote_count": 10,
        "ai_post_count": 9,
        "demand_share": 0.0519,
        "post_count_3mo": 58,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.4615,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "B2B",
        "role_count": 13,
        "company_count": 10,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4615,
        "salary_job_count": 4,
        "salary_p50": 90000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 8,
        "ai_post_count": 11,
        "demand_share": 0.0481,
        "post_count_3mo": 31,
        "salary_p50_3mo": 87600,
        "demand_delta_3mo": -0.1333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "GitHub",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 8,
        "ai_post_count": 10,
        "demand_share": 0.0481,
        "post_count_3mo": 44,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.1875,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Ruby on Rails",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.6154,
        "salary_job_count": 7,
        "salary_p50": 160000,
        "salary_p75": 175000,
        "salary_p90": 180000,
        "remote_count": 9,
        "ai_post_count": 6,
        "demand_share": 0.0481,
        "post_count_3mo": 30,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.4444,
        "salary_delta_3mo": -0.36,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "C++",
        "role_count": 12,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 3,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.0444,
        "post_count_3mo": 34,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.3072,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "GCP",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 5,
        "salary_p50": 140000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 8,
        "ai_post_count": 8,
        "demand_share": 0.0444,
        "post_count_3mo": 36,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.2,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "CI/CD",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 3,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0407,
        "post_count_3mo": 34,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2143,
        "salary_delta_3mo": -0.25,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "JavaScript",
        "role_count": 11,
        "company_count": 9,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3636,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 8,
        "ai_post_count": 7,
        "demand_share": 0.0407,
        "post_count_3mo": 41,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": -0.3529,
        "salary_delta_3mo": -0.085,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "SQL",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.5455,
        "salary_job_count": 6,
        "salary_p50": 91800,
        "salary_p75": 120000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.0407,
        "post_count_3mo": 26,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.2143,
        "salary_delta_3mo": -0.388,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Android",
        "role_count": 10,
        "company_count": 8,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.037,
        "post_count_3mo": 31,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": -0.1597,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Azure",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 3,
        "salary_p50": 91800,
        "salary_p75": 91800,
        "salary_p90": 91800,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.037,
        "post_count_3mo": 27,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": -0.388,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Java",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 5,
        "salary_p50": 125000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 4,
        "ai_post_count": 5,
        "demand_share": 0.037,
        "post_count_3mo": 34,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.375,
        "salary_delta_3mo": -0.1987,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Terraform",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 3,
        "salary_p50": 135000,
        "salary_p75": 135000,
        "salary_p90": 135000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.037,
        "post_count_3mo": 39,
        "salary_p50_3mo": 156000,
        "demand_delta_3mo": -0.375,
        "salary_delta_3mo": -0.2286,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "UI",
        "role_count": 10,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 3,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 4,
        "ai_post_count": 5,
        "demand_share": 0.037,
        "post_count_3mo": 29,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.4444,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "iOS",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.037,
        "post_count_3mo": 35,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": 0.3636,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "C#",
        "role_count": 9,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0333,
        "post_count_3mo": 18,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": 0.2857,
        "salary_delta_3mo": -0.3333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Docker",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 5,
        "salary_p50": 124000,
        "salary_p75": 135000,
        "salary_p90": 135000,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0333,
        "post_count_3mo": 41,
        "salary_p50_3mo": 135000,
        "demand_delta_3mo": -0.6087,
        "salary_delta_3mo": -0.0462,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "GraphQL",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0333,
        "post_count_3mo": 23,
        "salary_p50_3mo": 153000,
        "demand_delta_3mo": -0.3571,
        "salary_delta_3mo": -0.3143,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "UX",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 6,
        "demand_share": 0.0333,
        "post_count_3mo": 26,
        "salary_p50_3mo": 104900,
        "demand_delta_3mo": 0.125,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Linux",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 1,
        "salary_p50": 91800,
        "salary_p75": 91800,
        "salary_p90": 91800,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0259,
        "post_count_3mo": 34,
        "salary_p50_3mo": 91980,
        "demand_delta_3mo": -0.3636,
        "salary_delta_3mo": -0.4039,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "MongoDB",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.0259,
        "post_count_3mo": 22,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Web3",
        "role_count": 7,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0259,
        "post_count_3mo": 16,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": ".NET",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 91800,
        "salary_p75": 91800,
        "salary_p90": 91800,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0222,
        "post_count_3mo": 10,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Django",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 54000,
        "salary_p75": 54000,
        "salary_p90": 54000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0222,
        "post_count_3mo": 23,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.4545,
        "salary_delta_3mo": -0.73,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Redis",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 86400,
        "salary_p75": 86400,
        "salary_p90": 86400,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0222,
        "post_count_3mo": 19,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": 0.08,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "SDK",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0222,
        "post_count_3mo": 17,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.3333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Elixir",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0185,
        "post_count_3mo": 13,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "FastAPI",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 2,
        "ai_post_count": 4,
        "demand_share": 0.0185,
        "post_count_3mo": 13,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.6154,
        "salary_delta_3mo": 0.3462,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Tailwind CSS",
        "role_count": 4,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0148,
        "post_count_3mo": 16,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": 1.1333,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "MySQL",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 225000,
        "salary_p75": 225000,
        "salary_p90": 225000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0111,
        "post_count_3mo": 10,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": 1.8125,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "PHP",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0111,
        "post_count_3mo": 13,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": 0.875,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "PyTorch",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0111,
        "post_count_3mo": 13,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Windows",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 91800,
        "salary_p75": 91800,
        "salary_p90": 91800,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0111,
        "post_count_3mo": 14,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "CLI",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0074,
        "post_count_3mo": 6,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Elasticsearch",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 176000,
        "salary_p75": 176000,
        "salary_p90": 176000,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0074,
        "post_count_3mo": 7,
        "salary_p50_3mo": 176000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": -0.033,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Flutter",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0074,
        "post_count_3mo": 10,
        "salary_p50_3mo": 36000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Kafka",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 176000,
        "salary_p75": 176000,
        "salary_p90": 176000,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0074,
        "post_count_3mo": 10,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Scala",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0074,
        "post_count_3mo": 11,
        "salary_p50_3mo": 208300,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Vue.js",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0074,
        "post_count_3mo": 9,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "WebAssembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0074,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Angular",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0037,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0037,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "CSS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0037,
        "post_count_3mo": 5,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0037,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "ECS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0037,
        "post_count_3mo": 7,
        "salary_p50_3mo": 170000,
        "demand_delta_3mo": -0.8333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "MLOps",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0037,
        "post_count_3mo": 4,
        "salary_p50_3mo": 75600,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0037,
        "post_count_3mo": 2,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Spring",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0037,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "TensorFlow",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0037,
        "post_count_3mo": 5,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0037,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-07",
        "tech": "macOS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0037,
        "post_count_3mo": 7,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Artificial Intelligence",
        "role_count": 165,
        "company_count": 150,
        "salary_post_count": 69,
        "salary_transparency_rate": 0.4182,
        "salary_job_count": 47,
        "salary_p50": 150000,
        "salary_p75": 175000,
        "salary_p90": 215000,
        "remote_count": 79,
        "ai_post_count": 165,
        "demand_share": 0.5189,
        "post_count_3mo": 492,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0237,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Full Stack",
        "role_count": 95,
        "company_count": 87,
        "salary_post_count": 42,
        "salary_transparency_rate": 0.4421,
        "salary_job_count": 29,
        "salary_p50": 150000,
        "salary_p75": 189800,
        "salary_p90": 200000,
        "remote_count": 50,
        "ai_post_count": 67,
        "demand_share": 0.2987,
        "post_count_3mo": 270,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1728,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Python",
        "role_count": 84,
        "company_count": 81,
        "salary_post_count": 33,
        "salary_transparency_rate": 0.3929,
        "salary_job_count": 25,
        "salary_p50": 150000,
        "salary_p75": 170000,
        "salary_p90": 189800,
        "remote_count": 48,
        "ai_post_count": 58,
        "demand_share": 0.2642,
        "post_count_3mo": 254,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1351,
        "salary_delta_3mo": -0.1176,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Backend",
        "role_count": 81,
        "company_count": 75,
        "salary_post_count": 29,
        "salary_transparency_rate": 0.358,
        "salary_job_count": 19,
        "salary_p50": 150000,
        "salary_p75": 153000,
        "salary_p90": 175000,
        "remote_count": 46,
        "ai_post_count": 58,
        "demand_share": 0.2547,
        "post_count_3mo": 247,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0241,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "React",
        "role_count": 73,
        "company_count": 71,
        "salary_post_count": 34,
        "salary_transparency_rate": 0.4658,
        "salary_job_count": 22,
        "salary_p50": 150000,
        "salary_p75": 180000,
        "salary_p90": 200000,
        "remote_count": 44,
        "ai_post_count": 50,
        "demand_share": 0.2296,
        "post_count_3mo": 217,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0988,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "TypeScript",
        "role_count": 72,
        "company_count": 71,
        "salary_post_count": 31,
        "salary_transparency_rate": 0.4306,
        "salary_job_count": 23,
        "salary_p50": 153000,
        "salary_p75": 180000,
        "salary_p90": 190000,
        "remote_count": 44,
        "ai_post_count": 53,
        "demand_share": 0.2264,
        "post_count_3mo": 223,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1325,
        "salary_delta_3mo": 0.0929,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "PostgreSQL",
        "role_count": 57,
        "company_count": 54,
        "salary_post_count": 29,
        "salary_transparency_rate": 0.5088,
        "salary_job_count": 21,
        "salary_p50": 150000,
        "salary_p75": 180000,
        "salary_p90": 230000,
        "remote_count": 41,
        "ai_post_count": 41,
        "demand_share": 0.1792,
        "post_count_3mo": 167,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0952,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Machine Learning",
        "role_count": 45,
        "company_count": 44,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 15,
        "salary_p50": 140000,
        "salary_p75": 156000,
        "salary_p90": 170000,
        "remote_count": 21,
        "ai_post_count": 45,
        "demand_share": 0.1415,
        "post_count_3mo": 139,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0465,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Golang",
        "role_count": 44,
        "company_count": 42,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.3864,
        "salary_job_count": 10,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 27,
        "ai_post_count": 26,
        "demand_share": 0.1384,
        "post_count_3mo": 128,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.375,
        "salary_delta_3mo": 0.2842,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "AWS",
        "role_count": 37,
        "company_count": 35,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.2973,
        "salary_job_count": 7,
        "salary_p50": 170000,
        "salary_p75": 175000,
        "salary_p90": 180000,
        "remote_count": 25,
        "ai_post_count": 21,
        "demand_share": 0.1164,
        "post_count_3mo": 139,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2449,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Frontend",
        "role_count": 32,
        "company_count": 31,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 6,
        "salary_p50": 153000,
        "salary_p75": 170000,
        "salary_p90": 175000,
        "remote_count": 21,
        "ai_post_count": 25,
        "demand_share": 0.1006,
        "post_count_3mo": 105,
        "salary_p50_3mo": 153000,
        "demand_delta_3mo": -0.1351,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "LLM",
        "role_count": 32,
        "company_count": 30,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 11,
        "salary_p50": 150000,
        "salary_p75": 180000,
        "salary_p90": 190000,
        "remote_count": 20,
        "ai_post_count": 32,
        "demand_share": 0.1006,
        "post_count_3mo": 88,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.8824,
        "salary_delta_3mo": -0.3333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Kubernetes",
        "role_count": 26,
        "company_count": 26,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3462,
        "salary_job_count": 7,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 170000,
        "remote_count": 19,
        "ai_post_count": 12,
        "demand_share": 0.0818,
        "post_count_3mo": 76,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2353,
        "salary_delta_3mo": -0.1176,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Rust",
        "role_count": 25,
        "company_count": 25,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.24,
        "salary_job_count": 4,
        "salary_p50": 160000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 19,
        "ai_post_count": 10,
        "demand_share": 0.0786,
        "post_count_3mo": 79,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.087,
        "salary_delta_3mo": 0.6,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Next.js",
        "role_count": 24,
        "company_count": 24,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.5833,
        "salary_job_count": 12,
        "salary_p50": 120000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 15,
        "ai_post_count": 19,
        "demand_share": 0.0755,
        "post_count_3mo": 67,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.04,
        "salary_delta_3mo": -0.3143,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "API",
        "role_count": 22,
        "company_count": 22,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.4545,
        "salary_job_count": 9,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 185000,
        "remote_count": 13,
        "ai_post_count": 15,
        "demand_share": 0.0692,
        "post_count_3mo": 70,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.12,
        "salary_delta_3mo": -0.1124,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "DevOps",
        "role_count": 22,
        "company_count": 21,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.3636,
        "salary_job_count": 5,
        "salary_p50": 156000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 13,
        "ai_post_count": 13,
        "demand_share": 0.0692,
        "post_count_3mo": 77,
        "salary_p50_3mo": 153000,
        "demand_delta_3mo": -0.2903,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Node.js",
        "role_count": 22,
        "company_count": 20,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.6364,
        "salary_job_count": 7,
        "salary_p50": 150000,
        "salary_p75": 153000,
        "salary_p90": 190000,
        "remote_count": 13,
        "ai_post_count": 14,
        "demand_share": 0.0692,
        "post_count_3mo": 80,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3889,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "GitHub",
        "role_count": 19,
        "company_count": 17,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.4737,
        "salary_job_count": 6,
        "salary_p50": 120000,
        "salary_p75": 125000,
        "salary_p90": 150000,
        "remote_count": 12,
        "ai_post_count": 18,
        "demand_share": 0.0597,
        "post_count_3mo": 47,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.05,
        "salary_delta_3mo": 0.0274,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "SaaS",
        "role_count": 19,
        "company_count": 18,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.5789,
        "salary_job_count": 9,
        "salary_p50": 152400,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 11,
        "ai_post_count": 15,
        "demand_share": 0.0597,
        "post_count_3mo": 53,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": 0.2667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Docker",
        "role_count": 15,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 11,
        "ai_post_count": 7,
        "demand_share": 0.0472,
        "post_count_3mo": 55,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Terraform",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.5333,
        "salary_job_count": 5,
        "salary_p50": 160000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 11,
        "ai_post_count": 10,
        "demand_share": 0.0472,
        "post_count_3mo": 45,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.3636,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Android",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 8,
        "ai_post_count": 7,
        "demand_share": 0.0409,
        "post_count_3mo": 33,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0833,
        "salary_delta_3mo": -0.1525,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Linux",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 5,
        "demand_share": 0.0409,
        "post_count_3mo": 38,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0833,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "iOS",
        "role_count": 13,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 3,
        "salary_p50": 145000,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0409,
        "post_count_3mo": 40,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.1808,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "JavaScript",
        "role_count": 12,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 3,
        "salary_p50": 145000,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 9,
        "ai_post_count": 9,
        "demand_share": 0.0377,
        "post_count_3mo": 47,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": -0.2941,
        "salary_delta_3mo": 0.0357,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "B2B",
        "role_count": 11,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.0346,
        "post_count_3mo": 33,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": 0.1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Java",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4545,
        "salary_job_count": 3,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0346,
        "post_count_3mo": 40,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2222,
        "salary_delta_3mo": -0.1006,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "React Native",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3636,
        "salary_job_count": 2,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0346,
        "post_count_3mo": 27,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2222,
        "salary_delta_3mo": 1.1176,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "C++",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 170000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0314,
        "post_count_3mo": 34,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "CI/CD",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.7,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 156000,
        "salary_p90": 156000,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.0314,
        "post_count_3mo": 37,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Django",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 7,
        "ai_post_count": 5,
        "demand_share": 0.0314,
        "post_count_3mo": 28,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "GraphQL",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 3,
        "salary_p50": 153000,
        "salary_p75": 153000,
        "salary_p90": 153000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0283,
        "post_count_3mo": 28,
        "salary_p50_3mo": 153000,
        "demand_delta_3mo": -0.1818,
        "salary_delta_3mo": -0.1257,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "SQL",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.625,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0252,
        "post_count_3mo": 29,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "UX",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0252,
        "post_count_3mo": 25,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Azure",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 1,
        "salary_p50": 190000,
        "salary_p75": 190000,
        "salary_p90": 190000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.022,
        "post_count_3mo": 23,
        "salary_p50_3mo": 190500,
        "demand_delta_3mo": 0.1667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "GCP",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 1,
        "salary_p50": 190000,
        "salary_p75": 190000,
        "salary_p90": 190000,
        "remote_count": 3,
        "ai_post_count": 5,
        "demand_share": 0.022,
        "post_count_3mo": 36,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.5333,
        "salary_delta_3mo": 0.2667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Ruby on Rails",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 2,
        "salary_p50": 148750,
        "salary_p75": 148750,
        "salary_p90": 148750,
        "remote_count": 4,
        "ai_post_count": 5,
        "demand_share": 0.022,
        "post_count_3mo": 26,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5625,
        "salary_delta_3mo": 0.0625,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "UI",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 3,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.022,
        "post_count_3mo": 37,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.5882,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "SDK",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 60000,
        "salary_p75": 60000,
        "salary_p90": 60000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0189,
        "post_count_3mo": 17,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Web3",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0189,
        "post_count_3mo": 17,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Windows",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0189,
        "post_count_3mo": 13,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Redis",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.0157,
        "post_count_3mo": 23,
        "salary_p50_3mo": 101600,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Tailwind CSS",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 3,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0157,
        "post_count_3mo": 13,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.375,
        "salary_delta_3mo": -0.2188,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "FastAPI",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 4,
        "demand_share": 0.0126,
        "post_count_3mo": 21,
        "salary_p50_3mo": 95250,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Kafka",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 1,
        "demand_share": 0.0126,
        "post_count_3mo": 11,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "MongoDB",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0126,
        "post_count_3mo": 22,
        "salary_p50_3mo": 91980,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "PHP",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0126,
        "post_count_3mo": 15,
        "salary_p50_3mo": 103660,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Scala",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0126,
        "post_count_3mo": 12,
        "salary_p50_3mo": 190500,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Elasticsearch",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0094,
        "post_count_3mo": 9,
        "salary_p50_3mo": 182000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "MySQL",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0094,
        "post_count_3mo": 16,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "PyTorch",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0094,
        "post_count_3mo": 14,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5714,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Svelte",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 145000,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0094,
        "post_count_3mo": 5,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Vue.js",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 145000,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0094,
        "post_count_3mo": 13,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5714,
        "salary_delta_3mo": 1.6364,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "WebAssembly",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0094,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "macOS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0094,
        "post_count_3mo": 9,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "C#",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0063,
        "post_count_3mo": 16,
        "salary_p50_3mo": 105000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "ECS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 170000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0063,
        "post_count_3mo": 12,
        "salary_p50_3mo": 170000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": -0.0286,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Elixir",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0063,
        "post_count_3mo": 10,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Flask",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 2,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0063,
        "post_count_3mo": 4,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Flutter",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0063,
        "post_count_3mo": 10,
        "salary_p50_3mo": 36000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "NLP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0063,
        "post_count_3mo": 5,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": 1.1176,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "OCR",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0063,
        "post_count_3mo": 2,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Wasm",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0063,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": ".NET",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 8,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Angular",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 4,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "CSS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 8,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "HTML",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 70000,
        "salary_p75": 70000,
        "salary_p90": 70000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 3,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "MLOps",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 3,
        "salary_p50_3mo": 75600,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "OCaml",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 1,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "OpenCV",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 3,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "SecOps",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-06",
        "tech": "TensorFlow",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 6,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Artificial Intelligence",
        "role_count": 151,
        "company_count": 140,
        "salary_post_count": 61,
        "salary_transparency_rate": 0.404,
        "salary_job_count": 37,
        "salary_p50": 150000,
        "salary_p75": 175000,
        "salary_p90": 190000,
        "remote_count": 74,
        "ai_post_count": 151,
        "demand_share": 0.4618,
        "post_count_3mo": 496,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2844,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Full Stack",
        "role_count": 89,
        "company_count": 81,
        "salary_post_count": 39,
        "salary_transparency_rate": 0.4382,
        "salary_job_count": 26,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 180000,
        "remote_count": 48,
        "ai_post_count": 58,
        "demand_share": 0.2722,
        "post_count_3mo": 256,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2261,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Python",
        "role_count": 84,
        "company_count": 78,
        "salary_post_count": 31,
        "salary_transparency_rate": 0.369,
        "salary_job_count": 19,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 180000,
        "remote_count": 50,
        "ai_post_count": 56,
        "demand_share": 0.2569,
        "post_count_3mo": 244,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Backend",
        "role_count": 75,
        "company_count": 72,
        "salary_post_count": 28,
        "salary_transparency_rate": 0.3733,
        "salary_job_count": 17,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 153000,
        "remote_count": 49,
        "ai_post_count": 38,
        "demand_share": 0.2294,
        "post_count_3mo": 249,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.359,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "TypeScript",
        "role_count": 70,
        "company_count": 66,
        "salary_post_count": 27,
        "salary_transparency_rate": 0.3857,
        "salary_job_count": 15,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 180000,
        "remote_count": 38,
        "ai_post_count": 51,
        "demand_share": 0.2141,
        "post_count_3mo": 234,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.4167,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "React",
        "role_count": 66,
        "company_count": 62,
        "salary_post_count": 28,
        "salary_transparency_rate": 0.4242,
        "salary_job_count": 20,
        "salary_p50": 150000,
        "salary_p75": 175000,
        "salary_p90": 185000,
        "remote_count": 40,
        "ai_post_count": 42,
        "demand_share": 0.2018,
        "post_count_3mo": 225,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3196,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "PostgreSQL",
        "role_count": 53,
        "company_count": 51,
        "salary_post_count": 24,
        "salary_transparency_rate": 0.4528,
        "salary_job_count": 16,
        "salary_p50": 97200,
        "salary_p75": 150000,
        "salary_p90": 153000,
        "remote_count": 40,
        "ai_post_count": 30,
        "demand_share": 0.1621,
        "post_count_3mo": 173,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.3537,
        "salary_delta_3mo": -0.352,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "AWS",
        "role_count": 52,
        "company_count": 51,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 10,
        "salary_p50": 91800,
        "salary_p75": 150000,
        "salary_p90": 180000,
        "remote_count": 37,
        "ai_post_count": 30,
        "demand_share": 0.159,
        "post_count_3mo": 151,
        "salary_p50_3mo": 153000,
        "demand_delta_3mo": -0.2778,
        "salary_delta_3mo": -0.4263,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Machine Learning",
        "role_count": 49,
        "company_count": 45,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.3265,
        "salary_job_count": 9,
        "salary_p50": 150000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 22,
        "ai_post_count": 49,
        "demand_share": 0.1498,
        "post_count_3mo": 137,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0755,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Golang",
        "role_count": 42,
        "company_count": 37,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.4048,
        "salary_job_count": 8,
        "salary_p50": 103660,
        "salary_p75": 150000,
        "salary_p90": 190000,
        "remote_count": 26,
        "ai_post_count": 25,
        "demand_share": 0.1284,
        "post_count_3mo": 116,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": -0.3089,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Frontend",
        "role_count": 35,
        "company_count": 33,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.3714,
        "salary_job_count": 9,
        "salary_p50": 150000,
        "salary_p75": 175000,
        "salary_p90": 185000,
        "remote_count": 21,
        "ai_post_count": 23,
        "demand_share": 0.107,
        "post_count_3mo": 110,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.4167,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Node.js",
        "role_count": 31,
        "company_count": 28,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.4194,
        "salary_job_count": 9,
        "salary_p50": 153000,
        "salary_p75": 160000,
        "salary_p90": 180000,
        "remote_count": 19,
        "ai_post_count": 16,
        "demand_share": 0.0948,
        "post_count_3mo": 94,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2439,
        "salary_delta_3mo": 0.02,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "DevOps",
        "role_count": 29,
        "company_count": 28,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.2069,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 20,
        "ai_post_count": 12,
        "demand_share": 0.0887,
        "post_count_3mo": 86,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1471,
        "salary_delta_3mo": -0.1124,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Rust",
        "role_count": 27,
        "company_count": 25,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.2593,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 15,
        "ai_post_count": 14,
        "demand_share": 0.0826,
        "post_count_3mo": 77,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2895,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "LLM",
        "role_count": 25,
        "company_count": 24,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 17,
        "ai_post_count": 25,
        "demand_share": 0.0765,
        "post_count_3mo": 73,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0385,
        "salary_delta_3mo": -0.25,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "API",
        "role_count": 22,
        "company_count": 22,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 11,
        "salary_p50": 150000,
        "salary_p75": 153000,
        "salary_p90": 160000,
        "remote_count": 14,
        "ai_post_count": 14,
        "demand_share": 0.0673,
        "post_count_3mo": 73,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Kubernetes",
        "role_count": 22,
        "company_count": 21,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 16,
        "ai_post_count": 13,
        "demand_share": 0.0673,
        "post_count_3mo": 84,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.5111,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Next.js",
        "role_count": 20,
        "company_count": 20,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 9,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 10,
        "ai_post_count": 14,
        "demand_share": 0.0612,
        "post_count_3mo": 68,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": 0.1538,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "JavaScript",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 7,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 180000,
        "remote_count": 10,
        "ai_post_count": 9,
        "demand_share": 0.055,
        "post_count_3mo": 52,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Docker",
        "role_count": 17,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3529,
        "salary_job_count": 6,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 10,
        "ai_post_count": 7,
        "demand_share": 0.052,
        "post_count_3mo": 65,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.3462,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "GCP",
        "role_count": 17,
        "company_count": 17,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4706,
        "salary_job_count": 7,
        "salary_p50": 160000,
        "salary_p75": 180000,
        "salary_p90": 208300,
        "remote_count": 10,
        "ai_post_count": 11,
        "demand_share": 0.052,
        "post_count_3mo": 44,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.32,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "SaaS",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 5,
        "salary_p50": 67200,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 11,
        "ai_post_count": 12,
        "demand_share": 0.0459,
        "post_count_3mo": 49,
        "salary_p50_3mo": 67200,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Linux",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0428,
        "post_count_3mo": 37,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2727,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Terraform",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 12,
        "ai_post_count": 8,
        "demand_share": 0.0428,
        "post_count_3mo": 41,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.4167,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "CI/CD",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 1,
        "salary_p50": 208300,
        "salary_p75": 208300,
        "salary_p90": 208300,
        "remote_count": 8,
        "ai_post_count": 10,
        "demand_share": 0.0398,
        "post_count_3mo": 35,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.1875,
        "salary_delta_3mo": 0.0849,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Java",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.6154,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 8,
        "ai_post_count": 8,
        "demand_share": 0.0398,
        "post_count_3mo": 38,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1333,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "C++",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 3,
        "salary_p50": 145000,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 5,
        "ai_post_count": 6,
        "demand_share": 0.0367,
        "post_count_3mo": 38,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.0333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "GitHub",
        "role_count": 12,
        "company_count": 9,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 3,
        "salary_p50": 62640,
        "salary_p75": 62640,
        "salary_p90": 62640,
        "remote_count": 7,
        "ai_post_count": 11,
        "demand_share": 0.0367,
        "post_count_3mo": 48,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.5385,
        "salary_delta_3mo": -0.6703,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "UI",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 4,
        "salary_p50": 59400,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.0367,
        "post_count_3mo": 47,
        "salary_p50_3mo": 95250,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": -0.2575,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "iOS",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0367,
        "post_count_3mo": 40,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.4783,
        "salary_delta_3mo": -0.2655,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "MongoDB",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 4,
        "salary_p50": 91980,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 10,
        "ai_post_count": 3,
        "demand_share": 0.0336,
        "post_count_3mo": 23,
        "salary_p50_3mo": 91980,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.2271,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "React Native",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.6364,
        "salary_job_count": 6,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 180000,
        "remote_count": 8,
        "ai_post_count": 6,
        "demand_share": 0.0336,
        "post_count_3mo": 25,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.375,
        "salary_delta_3mo": 1.5,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Azure",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 208300,
        "salary_p75": 208300,
        "salary_p90": 208300,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0306,
        "post_count_3mo": 22,
        "salary_p50_3mo": 190500,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": 0.3019,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Ruby on Rails",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0306,
        "post_count_3mo": 35,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "UX",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 4,
        "ai_post_count": 5,
        "demand_share": 0.0275,
        "post_count_3mo": 27,
        "salary_p50_3mo": 170000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Android",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.0245,
        "post_count_3mo": 32,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Redis",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0245,
        "post_count_3mo": 28,
        "salary_p50_3mo": 50000,
        "demand_delta_3mo": -0.4667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "B2B",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0214,
        "post_count_3mo": 32,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.6111,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "C#",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0214,
        "post_count_3mo": 18,
        "salary_p50_3mo": 105000,
        "demand_delta_3mo": 0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Django",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 2,
        "salary_p50": 40000,
        "salary_p75": 40000,
        "salary_p90": 40000,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.0214,
        "post_count_3mo": 30,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": -0.75,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "PyTorch",
        "role_count": 7,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 7,
        "demand_share": 0.0214,
        "post_count_3mo": 18,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.4,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "SQL",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5714,
        "salary_job_count": 4,
        "salary_p50": 95000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0214,
        "post_count_3mo": 29,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5333,
        "salary_delta_3mo": -0.24,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Tailwind CSS",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5714,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0214,
        "post_count_3mo": 16,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.4,
        "salary_delta_3mo": 0.3043,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Elixir",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0183,
        "post_count_3mo": 13,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Flutter",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 2,
        "salary_p50": 36000,
        "salary_p75": 36000,
        "salary_p90": 36000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0183,
        "post_count_3mo": 11,
        "salary_p50_3mo": 36000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "PHP",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0183,
        "post_count_3mo": 17,
        "salary_p50_3mo": 103660,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": -0.25,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "GraphQL",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.8,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0153,
        "post_count_3mo": 30,
        "salary_p50_3mo": 153000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "SDK",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 2,
        "salary_p50": 97200,
        "salary_p75": 97200,
        "salary_p90": 97200,
        "remote_count": 2,
        "ai_post_count": 4,
        "demand_share": 0.0153,
        "post_count_3mo": 17,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": -0.4444,
        "salary_delta_3mo": 0.08,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Scala",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 1,
        "salary_p50": 208300,
        "salary_p75": 208300,
        "salary_p90": 208300,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0153,
        "post_count_3mo": 12,
        "salary_p50_3mo": 190500,
        "demand_delta_3mo": 4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Windows",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0153,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "ECS",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0122,
        "post_count_3mo": 11,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "FastAPI",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0122,
        "post_count_3mo": 23,
        "salary_p50_3mo": 95250,
        "demand_delta_3mo": -0.5556,
        "salary_delta_3mo": -0.3571,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Kafka",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0122,
        "post_count_3mo": 12,
        "salary_p50_3mo": 177900,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.4675,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "MySQL",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0122,
        "post_count_3mo": 19,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Vue.js",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0122,
        "post_count_3mo": 17,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": -0.25,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": ".NET",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0092,
        "post_count_3mo": 8,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": 0.6667,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "CLI",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 97200,
        "salary_p75": 97200,
        "salary_p90": 97200,
        "remote_count": 0,
        "ai_post_count": 3,
        "demand_share": 0.0092,
        "post_count_3mo": 4,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "CSS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0092,
        "post_count_3mo": 10,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "TensorFlow",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0092,
        "post_count_3mo": 9,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": 1,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Web3",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0092,
        "post_count_3mo": 19,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": -0.625,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "macOS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0092,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Assembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0061,
        "post_count_3mo": 3,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Elasticsearch",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0061,
        "post_count_3mo": 9,
        "salary_p50_3mo": 182000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "MLOps",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 75600,
        "salary_p75": 75600,
        "salary_p90": 75600,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0061,
        "post_count_3mo": 2,
        "salary_p50_3mo": 75600,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "NLP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0061,
        "post_count_3mo": 7,
        "salary_p50_3mo": 85000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Wasm",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0061,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "WebAssembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0061,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Angular",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 5,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 2,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "F#",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 1,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "FFmpeg",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Flask",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "GitLab",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Haskell",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "OpenCV",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-05",
        "tech": "Svelte",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Artificial Intelligence",
        "role_count": 176,
        "company_count": 157,
        "salary_post_count": 67,
        "salary_transparency_rate": 0.3807,
        "salary_job_count": 37,
        "salary_p50": 140000,
        "salary_p75": 160000,
        "salary_p90": 190500,
        "remote_count": 76,
        "ai_post_count": 176,
        "demand_share": 0.5269,
        "post_count_3mo": 556,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": 0.4426,
        "salary_delta_3mo": -0.2,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Backend",
        "role_count": 91,
        "company_count": 86,
        "salary_post_count": 37,
        "salary_transparency_rate": 0.4066,
        "salary_job_count": 19,
        "salary_p50": 150000,
        "salary_p75": 175000,
        "salary_p90": 200000,
        "remote_count": 51,
        "ai_post_count": 61,
        "demand_share": 0.2725,
        "post_count_3mo": 291,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.4444,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Full Stack",
        "role_count": 86,
        "company_count": 77,
        "salary_post_count": 34,
        "salary_transparency_rate": 0.3953,
        "salary_job_count": 20,
        "salary_p50": 140000,
        "salary_p75": 175000,
        "salary_p90": 200000,
        "remote_count": 45,
        "ai_post_count": 58,
        "demand_share": 0.2575,
        "post_count_3mo": 282,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1026,
        "salary_delta_3mo": -0.1358,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Python",
        "role_count": 86,
        "company_count": 80,
        "salary_post_count": 32,
        "salary_transparency_rate": 0.3721,
        "salary_job_count": 15,
        "salary_p50": 153000,
        "salary_p75": 160000,
        "salary_p90": 200000,
        "remote_count": 37,
        "ai_post_count": 59,
        "demand_share": 0.2575,
        "post_count_3mo": 256,
        "salary_p50_3mo": 153000,
        "demand_delta_3mo": 0.5088,
        "salary_delta_3mo": 0.7,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "TypeScript",
        "role_count": 81,
        "company_count": 74,
        "salary_post_count": 36,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 28,
        "salary_p50": 130000,
        "salary_p75": 153000,
        "salary_p90": 182000,
        "remote_count": 41,
        "ai_post_count": 49,
        "demand_share": 0.2425,
        "post_count_3mo": 284,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.3279,
        "salary_delta_3mo": -0.0714,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "React",
        "role_count": 78,
        "company_count": 70,
        "salary_post_count": 31,
        "salary_transparency_rate": 0.3974,
        "salary_job_count": 19,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 200000,
        "remote_count": 39,
        "ai_post_count": 48,
        "demand_share": 0.2335,
        "post_count_3mo": 256,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": -0.0714,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "PostgreSQL",
        "role_count": 57,
        "company_count": 52,
        "salary_post_count": 26,
        "salary_transparency_rate": 0.4561,
        "salary_job_count": 13,
        "salary_p50": 140000,
        "salary_p75": 175000,
        "salary_p90": 182000,
        "remote_count": 29,
        "ai_post_count": 36,
        "demand_share": 0.1707,
        "post_count_3mo": 202,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.425,
        "salary_delta_3mo": 0.0769,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "AWS",
        "role_count": 50,
        "company_count": 46,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.36,
        "salary_job_count": 9,
        "salary_p50": 153000,
        "salary_p75": 175000,
        "salary_p90": 182000,
        "remote_count": 27,
        "ai_post_count": 33,
        "demand_share": 0.1497,
        "post_count_3mo": 171,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.2821,
        "salary_delta_3mo": 0.1769,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Machine Learning",
        "role_count": 45,
        "company_count": 43,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.2889,
        "salary_job_count": 4,
        "salary_p50": 112000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 19,
        "ai_post_count": 45,
        "demand_share": 0.1347,
        "post_count_3mo": 141,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.125,
        "salary_delta_3mo": 0.0182,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Golang",
        "role_count": 42,
        "company_count": 38,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 9,
        "salary_p50": 154000,
        "salary_p75": 175000,
        "salary_p90": 178500,
        "remote_count": 19,
        "ai_post_count": 26,
        "demand_share": 0.1257,
        "post_count_3mo": 123,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.3548,
        "salary_delta_3mo": 0.7111,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Frontend",
        "role_count": 38,
        "company_count": 34,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.3158,
        "salary_job_count": 6,
        "salary_p50": 76200,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 20,
        "ai_post_count": 24,
        "demand_share": 0.1138,
        "post_count_3mo": 135,
        "salary_p50_3mo": 115000,
        "demand_delta_3mo": 0.1176,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "LLM",
        "role_count": 31,
        "company_count": 28,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.3871,
        "salary_job_count": 8,
        "salary_p50": 140000,
        "salary_p75": 200000,
        "salary_p90": 225000,
        "remote_count": 17,
        "ai_post_count": 31,
        "demand_share": 0.0928,
        "post_count_3mo": 74,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.4762,
        "salary_delta_3mo": -0.3,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Kubernetes",
        "role_count": 28,
        "company_count": 28,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3214,
        "salary_job_count": 4,
        "salary_p50": 50000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 15,
        "ai_post_count": 12,
        "demand_share": 0.0838,
        "post_count_3mo": 107,
        "salary_p50_3mo": 152400,
        "demand_delta_3mo": 0.1667,
        "salary_delta_3mo": -0.6429,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Node.js",
        "role_count": 27,
        "company_count": 21,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.5926,
        "salary_job_count": 9,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 16,
        "ai_post_count": 17,
        "demand_share": 0.0808,
        "post_count_3mo": 104,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Rust",
        "role_count": 27,
        "company_count": 26,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.2593,
        "salary_job_count": 4,
        "salary_p50": 154000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 22,
        "ai_post_count": 16,
        "demand_share": 0.0808,
        "post_count_3mo": 88,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.4211,
        "salary_delta_3mo": 0.0267,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "API",
        "role_count": 26,
        "company_count": 23,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 7,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 18,
        "ai_post_count": 15,
        "demand_share": 0.0778,
        "post_count_3mo": 73,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "DevOps",
        "role_count": 26,
        "company_count": 25,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 4,
        "salary_p50": 153000,
        "salary_p75": 154000,
        "salary_p90": 154000,
        "remote_count": 15,
        "ai_post_count": 14,
        "demand_share": 0.0778,
        "post_count_3mo": 91,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.1304,
        "salary_delta_3mo": -0.0438,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Docker",
        "role_count": 23,
        "company_count": 21,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3043,
        "salary_job_count": 2,
        "salary_p50": 76200,
        "salary_p75": 76200,
        "salary_p90": 76200,
        "remote_count": 14,
        "ai_post_count": 14,
        "demand_share": 0.0689,
        "post_count_3mo": 74,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.6429,
        "salary_delta_3mo": -0.1533,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Next.js",
        "role_count": 23,
        "company_count": 22,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.5217,
        "salary_job_count": 8,
        "salary_p50": 160000,
        "salary_p75": 175000,
        "salary_p90": 200000,
        "remote_count": 9,
        "ai_post_count": 17,
        "demand_share": 0.0689,
        "post_count_3mo": 76,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.0952,
        "salary_delta_3mo": 0.2308,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "SaaS",
        "role_count": 19,
        "company_count": 19,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3684,
        "salary_job_count": 4,
        "salary_p50": 43200,
        "salary_p75": 55000,
        "salary_p90": 55000,
        "remote_count": 13,
        "ai_post_count": 12,
        "demand_share": 0.0569,
        "post_count_3mo": 55,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0.1176,
        "salary_delta_3mo": 0.44,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "UI",
        "role_count": 18,
        "company_count": 15,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 4,
        "salary_p50": 95250,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 10,
        "ai_post_count": 11,
        "demand_share": 0.0539,
        "post_count_3mo": 55,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": 0.0588,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "JavaScript",
        "role_count": 17,
        "company_count": 16,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4118,
        "salary_job_count": 6,
        "salary_p50": 104171,
        "salary_p75": 153000,
        "salary_p90": 200000,
        "remote_count": 10,
        "ai_post_count": 8,
        "demand_share": 0.0509,
        "post_count_3mo": 49,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.4167,
        "salary_delta_3mo": -0.1319,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "GitHub",
        "role_count": 16,
        "company_count": 14,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 6,
        "salary_p50": 95250,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 12,
        "ai_post_count": 13,
        "demand_share": 0.0479,
        "post_count_3mo": 62,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Java",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 1,
        "salary_p50": 156000,
        "salary_p75": 156000,
        "salary_p90": 156000,
        "remote_count": 9,
        "ai_post_count": 3,
        "demand_share": 0.0479,
        "post_count_3mo": 40,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.7778,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Terraform",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 3,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 12,
        "ai_post_count": 5,
        "demand_share": 0.0479,
        "post_count_3mo": 51,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.7778,
        "salary_delta_3mo": 0.25,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "B2B",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4667,
        "salary_job_count": 3,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 9,
        "ai_post_count": 11,
        "demand_share": 0.0449,
        "post_count_3mo": 43,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "iOS",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 4,
        "salary_p50": 110000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 10,
        "ai_post_count": 7,
        "demand_share": 0.0449,
        "post_count_3mo": 51,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.3636,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "CI/CD",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 4,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 8,
        "ai_post_count": 8,
        "demand_share": 0.0419,
        "post_count_3mo": 38,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 1.8,
        "salary_delta_3mo": -0.0714,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "GraphQL",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.7143,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 9,
        "ai_post_count": 6,
        "demand_share": 0.0419,
        "post_count_3mo": 40,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": 0.1538,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "SQL",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 190500,
        "salary_p75": 190500,
        "salary_p90": 190500,
        "remote_count": 9,
        "ai_post_count": 8,
        "demand_share": 0.0419,
        "post_count_3mo": 37,
        "salary_p50_3mo": 119000,
        "demand_delta_3mo": 0.75,
        "salary_delta_3mo": 0.5875,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "FastAPI",
        "role_count": 13,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 2,
        "salary_p50": 95250,
        "salary_p75": 95250,
        "salary_p90": 95250,
        "remote_count": 4,
        "ai_post_count": 11,
        "demand_share": 0.0389,
        "post_count_3mo": 28,
        "salary_p50_3mo": 102200,
        "demand_delta_3mo": 0.625,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Android",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 4,
        "salary_p50": 110000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 10,
        "ai_post_count": 6,
        "demand_share": 0.0359,
        "post_count_3mo": 40,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": -0.3889,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "C++",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 95000,
        "salary_p75": 95000,
        "salary_p90": 95000,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0359,
        "post_count_3mo": 38,
        "salary_p50_3mo": 153000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.3667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "GCP",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 50000,
        "salary_p75": 50000,
        "salary_p90": 50000,
        "remote_count": 4,
        "ai_post_count": 6,
        "demand_share": 0.0359,
        "post_count_3mo": 52,
        "salary_p50_3mo": 151200,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.6667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Django",
        "role_count": 11,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0329,
        "post_count_3mo": 31,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.8333,
        "salary_delta_3mo": 0.1429,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Linux",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3636,
        "salary_job_count": 2,
        "salary_p50": 153000,
        "salary_p75": 153000,
        "salary_p90": 153000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0329,
        "post_count_3mo": 34,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.2222,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Redis",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 3,
        "salary_p50": 101600,
        "salary_p75": 101600,
        "salary_p90": 101600,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0299,
        "post_count_3mo": 35,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": -0.2185,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "MySQL",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 101600,
        "salary_p75": 101600,
        "salary_p90": 101600,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0269,
        "post_count_3mo": 19,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 1.25,
        "salary_delta_3mo": 0.1289,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Ruby on Rails",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 182000,
        "salary_p75": 182000,
        "salary_p90": 182000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0269,
        "post_count_3mo": 40,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.125,
        "salary_delta_3mo": 0.4,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "UX",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 225000,
        "salary_p75": 225000,
        "salary_p90": 225000,
        "remote_count": 4,
        "ai_post_count": 6,
        "demand_share": 0.024,
        "post_count_3mo": 33,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.2727,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Web3",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.024,
        "post_count_3mo": 24,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": 0.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "C#",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 1,
        "salary_p50": 105000,
        "salary_p75": 105000,
        "salary_p90": 105000,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.021,
        "post_count_3mo": 15,
        "salary_p50_3mo": 105000,
        "demand_delta_3mo": 1.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "MongoDB",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.021,
        "post_count_3mo": 23,
        "salary_p50_3mo": 59400,
        "demand_delta_3mo": 0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Azure",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 190500,
        "salary_p75": 190500,
        "salary_p90": 190500,
        "remote_count": 3,
        "ai_post_count": 5,
        "demand_share": 0.018,
        "post_count_3mo": 24,
        "salary_p50_3mo": 177900,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": 0.5875,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "ECS",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 3,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.018,
        "post_count_3mo": 10,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": 0.25,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "SDK",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 97200,
        "salary_p75": 97200,
        "salary_p90": 97200,
        "remote_count": 2,
        "ai_post_count": 6,
        "demand_share": 0.018,
        "post_count_3mo": 21,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Vue.js",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 182000,
        "salary_p75": 182000,
        "salary_p90": 182000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.018,
        "post_count_3mo": 19,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": 1.0222,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "PHP",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.015,
        "post_count_3mo": 14,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.1111,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "React Native",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.015,
        "post_count_3mo": 22,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": -0.4286,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": ".NET",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 190500,
        "salary_p75": 190500,
        "salary_p90": 190500,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.012,
        "post_count_3mo": 10,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "CSS",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 30000,
        "salary_p75": 30000,
        "salary_p90": 30000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.012,
        "post_count_3mo": 11,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Elasticsearch",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 182000,
        "salary_p75": 182000,
        "salary_p90": 182000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.012,
        "post_count_3mo": 11,
        "salary_p50_3mo": 182000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "PyTorch",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 4,
        "demand_share": 0.012,
        "post_count_3mo": 16,
        "salary_p50_3mo": 88900,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Kafka",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.009,
        "post_count_3mo": 12,
        "salary_p50_3mo": 177900,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Scala",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 190500,
        "salary_p75": 190500,
        "salary_p90": 190500,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.009,
        "post_count_3mo": 8,
        "salary_p50_3mo": 177900,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Spring",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.009,
        "post_count_3mo": 6,
        "salary_p50_3mo": 94900,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "WebAssembly",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.009,
        "post_count_3mo": 8,
        "salary_p50_3mo": 152400,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "macOS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.009,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Elixir",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.006,
        "post_count_3mo": 11,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Flutter",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.006,
        "post_count_3mo": 11,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "HTML",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 2,
        "salary_p50": 30000,
        "salary_p75": 30000,
        "salary_p90": 30000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.006,
        "post_count_3mo": 5,
        "salary_p50_3mo": 30000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "TensorFlow",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.006,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Windows",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.006,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Angular",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 7,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Assembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 250000,
        "salary_p75": 250000,
        "salary_p90": 250000,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 2,
        "salary_p50_3mo": 250000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Flask",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 4,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "GitLab",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 2,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "JSON",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "NLP",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 6,
        "salary_p50_3mo": 85000,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "OpenCV",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "RabbitMQ",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Svelte",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 6,
        "salary_p50_3mo": 64800,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Tailwind CSS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 95250,
        "salary_p75": 95250,
        "salary_p90": 95250,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 14,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": -0.4047,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-04",
        "tech": "jQuery",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 30000,
        "salary_p75": 30000,
        "salary_p90": 30000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 1,
        "salary_p50_3mo": 30000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Artificial Intelligence",
        "role_count": 169,
        "company_count": 150,
        "salary_post_count": 56,
        "salary_transparency_rate": 0.3314,
        "salary_job_count": 34,
        "salary_p50": 135000,
        "salary_p75": 175000,
        "salary_p90": 198000,
        "remote_count": 85,
        "ai_post_count": 169,
        "demand_share": 0.5248,
        "post_count_3mo": 502,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.0287,
        "salary_delta_3mo": -0.1563,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Backend",
        "role_count": 83,
        "company_count": 79,
        "salary_post_count": 24,
        "salary_transparency_rate": 0.2892,
        "salary_job_count": 14,
        "salary_p50": 160000,
        "salary_p75": 170000,
        "salary_p90": 177900,
        "remote_count": 48,
        "ai_post_count": 51,
        "demand_share": 0.2578,
        "post_count_3mo": 263,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2315,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "TypeScript",
        "role_count": 83,
        "company_count": 76,
        "salary_post_count": 36,
        "salary_transparency_rate": 0.4337,
        "salary_job_count": 22,
        "salary_p50": 125000,
        "salary_p75": 175000,
        "salary_p90": 185000,
        "remote_count": 43,
        "ai_post_count": 61,
        "demand_share": 0.2578,
        "post_count_3mo": 264,
        "salary_p50_3mo": 152400,
        "demand_delta_3mo": -0.1263,
        "salary_delta_3mo": -0.1379,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Full Stack",
        "role_count": 81,
        "company_count": 75,
        "salary_post_count": 32,
        "salary_transparency_rate": 0.3951,
        "salary_job_count": 20,
        "salary_p50": 140000,
        "salary_p75": 170000,
        "salary_p90": 185000,
        "remote_count": 39,
        "ai_post_count": 62,
        "demand_share": 0.2516,
        "post_count_3mo": 274,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2636,
        "salary_delta_3mo": -0.3,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "React",
        "role_count": 81,
        "company_count": 73,
        "salary_post_count": 34,
        "salary_transparency_rate": 0.4198,
        "salary_job_count": 19,
        "salary_p50": 150000,
        "salary_p75": 175000,
        "salary_p90": 185000,
        "remote_count": 38,
        "ai_post_count": 57,
        "demand_share": 0.2516,
        "post_count_3mo": 243,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0795,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Python",
        "role_count": 74,
        "company_count": 70,
        "salary_post_count": 23,
        "salary_transparency_rate": 0.3108,
        "salary_job_count": 12,
        "salary_p50": 125000,
        "salary_p75": 175000,
        "salary_p90": 177000,
        "remote_count": 39,
        "ai_post_count": 53,
        "demand_share": 0.2298,
        "post_count_3mo": 227,
        "salary_p50_3mo": 152400,
        "demand_delta_3mo": -0.1778,
        "salary_delta_3mo": -0.2188,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "PostgreSQL",
        "role_count": 63,
        "company_count": 58,
        "salary_post_count": 31,
        "salary_transparency_rate": 0.4921,
        "salary_job_count": 18,
        "salary_p50": 140000,
        "salary_p75": 160000,
        "salary_p90": 177000,
        "remote_count": 33,
        "ai_post_count": 42,
        "demand_share": 0.1957,
        "post_count_3mo": 185,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.0735,
        "salary_delta_3mo": -0.1765,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "AWS",
        "role_count": 49,
        "company_count": 47,
        "salary_post_count": 22,
        "salary_transparency_rate": 0.449,
        "salary_job_count": 14,
        "salary_p50": 170000,
        "salary_p75": 177000,
        "salary_p90": 192000,
        "remote_count": 25,
        "ai_post_count": 31,
        "demand_share": 0.1522,
        "post_count_3mo": 160,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.0652,
        "salary_delta_3mo": -0.0556,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Machine Learning",
        "role_count": 43,
        "company_count": 37,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.2558,
        "salary_job_count": 6,
        "salary_p50": 125000,
        "salary_p75": 135000,
        "salary_p90": 180000,
        "remote_count": 15,
        "ai_post_count": 43,
        "demand_share": 0.1335,
        "post_count_3mo": 136,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2037,
        "salary_delta_3mo": -0.3113,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Frontend",
        "role_count": 37,
        "company_count": 34,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.2432,
        "salary_job_count": 6,
        "salary_p50": 86400,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 19,
        "ai_post_count": 26,
        "demand_share": 0.1149,
        "post_count_3mo": 131,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.26,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Node.js",
        "role_count": 36,
        "company_count": 28,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 11,
        "salary_p50": 107950,
        "salary_p75": 125000,
        "salary_p90": 170000,
        "remote_count": 21,
        "ai_post_count": 25,
        "demand_share": 0.1118,
        "post_count_3mo": 104,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.0526,
        "salary_delta_3mo": -0.2555,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Kubernetes",
        "role_count": 34,
        "company_count": 31,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.4706,
        "salary_job_count": 12,
        "salary_p50": 120000,
        "salary_p75": 175000,
        "salary_p90": 177000,
        "remote_count": 13,
        "ai_post_count": 22,
        "demand_share": 0.1056,
        "post_count_3mo": 103,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.2143,
        "salary_delta_3mo": -0.2,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Golang",
        "role_count": 32,
        "company_count": 30,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 6,
        "salary_p50": 86400,
        "salary_p75": 116800,
        "salary_p90": 150000,
        "remote_count": 19,
        "ai_post_count": 16,
        "demand_share": 0.0994,
        "post_count_3mo": 112,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": -0.2727,
        "salary_delta_3mo": -0.4918,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "DevOps",
        "role_count": 31,
        "company_count": 29,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.3226,
        "salary_job_count": 6,
        "salary_p50": 100000,
        "salary_p75": 116800,
        "salary_p90": 192000,
        "remote_count": 19,
        "ai_post_count": 18,
        "demand_share": 0.0963,
        "post_count_3mo": 88,
        "salary_p50_3mo": 115000,
        "demand_delta_3mo": 0.0333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "API",
        "role_count": 25,
        "company_count": 25,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.36,
        "salary_job_count": 4,
        "salary_p50": 169000,
        "salary_p75": 177900,
        "salary_p90": 177900,
        "remote_count": 15,
        "ai_post_count": 14,
        "demand_share": 0.0776,
        "post_count_3mo": 60,
        "salary_p50_3mo": 169000,
        "demand_delta_3mo": 0.1905,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Docker",
        "role_count": 25,
        "company_count": 22,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.52,
        "salary_job_count": 9,
        "salary_p50": 175000,
        "salary_p75": 192000,
        "salary_p90": 240000,
        "remote_count": 13,
        "ai_post_count": 15,
        "demand_share": 0.0776,
        "post_count_3mo": 65,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.3158,
        "salary_delta_3mo": 0.25,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Next.js",
        "role_count": 25,
        "company_count": 25,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.48,
        "salary_job_count": 9,
        "salary_p50": 175000,
        "salary_p75": 198000,
        "salary_p90": 225000,
        "remote_count": 12,
        "ai_post_count": 19,
        "demand_share": 0.0776,
        "post_count_3mo": 74,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.0385,
        "salary_delta_3mo": 0.1667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Rust",
        "role_count": 23,
        "company_count": 23,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2174,
        "salary_job_count": 2,
        "salary_p50": 108000,
        "salary_p75": 108000,
        "salary_p90": 108000,
        "remote_count": 19,
        "ai_post_count": 14,
        "demand_share": 0.0714,
        "post_count_3mo": 80,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.1786,
        "salary_delta_3mo": -0.28,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "GitHub",
        "role_count": 20,
        "company_count": 19,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 13,
        "ai_post_count": 15,
        "demand_share": 0.0621,
        "post_count_3mo": 53,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.1765,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "JavaScript",
        "role_count": 17,
        "company_count": 16,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4118,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 12,
        "ai_post_count": 8,
        "demand_share": 0.0528,
        "post_count_3mo": 44,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.4,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "LLM",
        "role_count": 17,
        "company_count": 13,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4118,
        "salary_job_count": 4,
        "salary_p50": 59400,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 10,
        "ai_post_count": 17,
        "demand_share": 0.0528,
        "post_count_3mo": 64,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.32,
        "salary_delta_3mo": -0.703,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "UI",
        "role_count": 17,
        "company_count": 15,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1176,
        "salary_job_count": 1,
        "salary_p50": 86400,
        "salary_p75": 86400,
        "salary_p90": 86400,
        "remote_count": 6,
        "ai_post_count": 11,
        "demand_share": 0.0528,
        "post_count_3mo": 54,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.152,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Ruby on Rails",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3125,
        "salary_job_count": 2,
        "salary_p50": 102200,
        "salary_p75": 102200,
        "salary_p90": 102200,
        "remote_count": 13,
        "ai_post_count": 8,
        "demand_share": 0.0497,
        "post_count_3mo": 39,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.3187,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "GCP",
        "role_count": 15,
        "company_count": 13,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 4,
        "salary_p50": 85000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 11,
        "demand_share": 0.0466,
        "post_count_3mo": 52,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0714,
        "salary_delta_3mo": -0.4688,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "SaaS",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4667,
        "salary_job_count": 3,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 9,
        "ai_post_count": 10,
        "demand_share": 0.0466,
        "post_count_3mo": 53,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "C++",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 1,
        "salary_p50": 170000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0435,
        "post_count_3mo": 38,
        "salary_p50_3mo": 170000,
        "demand_delta_3mo": 0.4,
        "salary_delta_3mo": 0.0625,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "iOS",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 1,
        "salary_p50": 177000,
        "salary_p75": 177000,
        "salary_p90": 177000,
        "remote_count": 8,
        "ai_post_count": 7,
        "demand_share": 0.0404,
        "post_count_3mo": 47,
        "salary_p50_3mo": 115000,
        "demand_delta_3mo": -0.0714,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Android",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 177000,
        "salary_p75": 177000,
        "salary_p90": 177000,
        "remote_count": 8,
        "ai_post_count": 7,
        "demand_share": 0.0373,
        "post_count_3mo": 42,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Django",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 6,
        "ai_post_count": 11,
        "demand_share": 0.0373,
        "post_count_3mo": 26,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Linux",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 2,
        "salary_p50": 116800,
        "salary_p75": 116800,
        "salary_p90": 116800,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0373,
        "post_count_3mo": 32,
        "salary_p50_3mo": 116800,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": -0.2213,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "GraphQL",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 2,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 5,
        "ai_post_count": 6,
        "demand_share": 0.0342,
        "post_count_3mo": 33,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1,
        "salary_delta_3mo": 0.0938,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Terraform",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.6364,
        "salary_job_count": 4,
        "salary_p50": 160000,
        "salary_p75": 192000,
        "salary_p90": 192000,
        "remote_count": 7,
        "ai_post_count": 5,
        "demand_share": 0.0342,
        "post_count_3mo": 44,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.4211,
        "salary_delta_3mo": 0.0667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "B2B",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 3,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0311,
        "post_count_3mo": 38,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Redis",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 1,
        "salary_p50": 38880,
        "salary_p75": 38880,
        "salary_p90": 38880,
        "remote_count": 3,
        "ai_post_count": 6,
        "demand_share": 0.0311,
        "post_count_3mo": 30,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": 0.1111,
        "salary_delta_3mo": -0.6619,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "UX",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1,
        "salary_job_count": 1,
        "salary_p50": 170000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 5,
        "ai_post_count": 6,
        "demand_share": 0.0311,
        "post_count_3mo": 36,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.4444,
        "salary_delta_3mo": 1.2667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Java",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 177900,
        "salary_p75": 177900,
        "salary_p90": 177900,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.028,
        "post_count_3mo": 33,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.3571,
        "salary_delta_3mo": 0.186,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "React Native",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 1,
        "salary_p50": 85000,
        "salary_p75": 85000,
        "salary_p90": 85000,
        "remote_count": 4,
        "ai_post_count": 6,
        "demand_share": 0.028,
        "post_count_3mo": 21,
        "salary_p50_3mo": 85000,
        "demand_delta_3mo": -0.1,
        "salary_delta_3mo": -0.4688,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "CI/CD",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 1,
        "salary_p50": 192000,
        "salary_p75": 192000,
        "salary_p90": 192000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0248,
        "post_count_3mo": 29,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": -0.3846,
        "salary_delta_3mo": 0.28,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "SQL",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0248,
        "post_count_3mo": 31,
        "salary_p50_3mo": 119000,
        "demand_delta_3mo": -0.1111,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Tailwind CSS",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 2,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 2,
        "ai_post_count": 6,
        "demand_share": 0.0248,
        "post_count_3mo": 15,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Web3",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 4,
        "salary_p50": 108000,
        "salary_p75": 192000,
        "salary_p90": 192000,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.0248,
        "post_count_3mo": 21,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": 0.1429,
        "salary_delta_3mo": -0.46,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "PyTorch",
        "role_count": 7,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 1,
        "salary_p50": 88900,
        "salary_p75": 88900,
        "salary_p90": 88900,
        "remote_count": 4,
        "ai_post_count": 7,
        "demand_share": 0.0217,
        "post_count_3mo": 15,
        "salary_p50_3mo": 88900,
        "demand_delta_3mo": 0.4,
        "salary_delta_3mo": -0.5555,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Vue.js",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 1,
        "salary_p50": 59400,
        "salary_p75": 59400,
        "salary_p90": 59400,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0217,
        "post_count_3mo": 18,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.3636,
        "salary_delta_3mo": -0.604,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Azure",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 177900,
        "salary_p75": 177900,
        "salary_p90": 177900,
        "remote_count": 3,
        "ai_post_count": 5,
        "demand_share": 0.0186,
        "post_count_3mo": 21,
        "salary_p50_3mo": 177900,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": 0.1781,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "FastAPI",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 3,
        "ai_post_count": 5,
        "demand_share": 0.0186,
        "post_count_3mo": 23,
        "salary_p50_3mo": 102200,
        "demand_delta_3mo": -0.6471,
        "salary_delta_3mo": -0.125,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "MySQL",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.8333,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0186,
        "post_count_3mo": 14,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "PHP",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0186,
        "post_count_3mo": 14,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "SDK",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0186,
        "post_count_3mo": 21,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Elixir",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0155,
        "post_count_3mo": 9,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Kafka",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 2,
        "salary_p50": 177900,
        "salary_p75": 177900,
        "salary_p90": 177900,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0155,
        "post_count_3mo": 9,
        "salary_p50_3mo": 177900,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": -0.1105,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "MongoDB",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 36000,
        "salary_p75": 36000,
        "salary_p90": 36000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0155,
        "post_count_3mo": 21,
        "salary_p50_3mo": 59400,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "C#",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0124,
        "post_count_3mo": 11,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "NLP",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 85000,
        "salary_p75": 85000,
        "salary_p90": 85000,
        "remote_count": 0,
        "ai_post_count": 4,
        "demand_share": 0.0124,
        "post_count_3mo": 9,
        "salary_p50_3mo": 85000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Scala",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 177900,
        "salary_p75": 177900,
        "salary_p90": 177900,
        "remote_count": 4,
        "ai_post_count": 1,
        "demand_share": 0.0124,
        "post_count_3mo": 6,
        "salary_p50_3mo": 177900,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "TensorFlow",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 4,
        "demand_share": 0.0124,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Angular",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0093,
        "post_count_3mo": 7,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "CSS",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0093,
        "post_count_3mo": 8,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Elasticsearch",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0093,
        "post_count_3mo": 9,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Flutter",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 36000,
        "salary_p75": 36000,
        "salary_p90": 36000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0093,
        "post_count_3mo": 11,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": -0.6571,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "HTML",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0062,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Svelte",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0062,
        "post_count_3mo": 6,
        "salary_p50_3mo": 64800,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": ".NET",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 8,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Clojure",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 4,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 3,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "ECS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 7,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Erlang",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 2,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Flask",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 5,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "OCR",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 6,
        "salary_p50_3mo": 32400,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "RabbitMQ",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Spring",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 177900,
        "salary_p75": 177900,
        "salary_p90": 177900,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 5,
        "salary_p50_3mo": 94900,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "WebAssembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 7,
        "salary_p50_3mo": 152400,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "Windows",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-03",
        "tech": "macOS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Artificial Intelligence",
        "role_count": 211,
        "company_count": 197,
        "salary_post_count": 82,
        "salary_transparency_rate": 0.3886,
        "salary_job_count": 49,
        "salary_p50": 150000,
        "salary_p75": 190000,
        "salary_p90": 200000,
        "remote_count": 99,
        "ai_post_count": 211,
        "demand_share": 0.5084,
        "post_count_3mo": 507,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.055,
        "salary_delta_3mo": 0.1538,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "TypeScript",
        "role_count": 120,
        "company_count": 116,
        "salary_post_count": 43,
        "salary_transparency_rate": 0.3583,
        "salary_job_count": 25,
        "salary_p50": 160000,
        "salary_p75": 175000,
        "salary_p90": 200000,
        "remote_count": 67,
        "ai_post_count": 80,
        "demand_share": 0.2892,
        "post_count_3mo": 276,
        "salary_p50_3mo": 151200,
        "demand_delta_3mo": 0.165,
        "salary_delta_3mo": 0.0667,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Backend",
        "role_count": 117,
        "company_count": 113,
        "salary_post_count": 36,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 21,
        "salary_p50": 160000,
        "salary_p75": 180000,
        "salary_p90": 200000,
        "remote_count": 67,
        "ai_post_count": 75,
        "demand_share": 0.2819,
        "post_count_3mo": 288,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1038,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Full Stack",
        "role_count": 115,
        "company_count": 109,
        "salary_post_count": 40,
        "salary_transparency_rate": 0.3478,
        "salary_job_count": 23,
        "salary_p50": 135000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 56,
        "ai_post_count": 86,
        "demand_share": 0.2771,
        "post_count_3mo": 303,
        "salary_p50_3mo": 135000,
        "demand_delta_3mo": -0.0086,
        "salary_delta_3mo": -0.0357,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "React",
        "role_count": 97,
        "company_count": 95,
        "salary_post_count": 36,
        "salary_transparency_rate": 0.3711,
        "salary_job_count": 22,
        "salary_p50": 150000,
        "salary_p75": 169000,
        "salary_p90": 190500,
        "remote_count": 51,
        "ai_post_count": 61,
        "demand_share": 0.2337,
        "post_count_3mo": 250,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0211,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Python",
        "role_count": 96,
        "company_count": 93,
        "salary_post_count": 34,
        "salary_transparency_rate": 0.3542,
        "salary_job_count": 24,
        "salary_p50": 152400,
        "salary_p75": 180000,
        "salary_p90": 200000,
        "remote_count": 52,
        "ai_post_count": 68,
        "demand_share": 0.2313,
        "post_count_3mo": 243,
        "salary_p50_3mo": 152400,
        "demand_delta_3mo": 0.0549,
        "salary_delta_3mo": 0.016,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "PostgreSQL",
        "role_count": 82,
        "company_count": 80,
        "salary_post_count": 34,
        "salary_transparency_rate": 0.4146,
        "salary_job_count": 22,
        "salary_p50": 150000,
        "salary_p75": 170000,
        "salary_p90": 177000,
        "remote_count": 49,
        "ai_post_count": 50,
        "demand_share": 0.1976,
        "post_count_3mo": 190,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.3667,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "AWS",
        "role_count": 72,
        "company_count": 69,
        "salary_post_count": 32,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 21,
        "salary_p50": 160000,
        "salary_p75": 190500,
        "salary_p90": 200000,
        "remote_count": 39,
        "ai_post_count": 49,
        "demand_share": 0.1735,
        "post_count_3mo": 157,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.1803,
        "salary_delta_3mo": 0.0667,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Frontend",
        "role_count": 60,
        "company_count": 58,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.3167,
        "salary_job_count": 14,
        "salary_p50": 115000,
        "salary_p75": 169000,
        "salary_p90": 190500,
        "remote_count": 30,
        "ai_post_count": 36,
        "demand_share": 0.1446,
        "post_count_3mo": 144,
        "salary_p50_3mo": 111000,
        "demand_delta_3mo": 0.0909,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Machine Learning",
        "role_count": 53,
        "company_count": 50,
        "salary_post_count": 24,
        "salary_transparency_rate": 0.4528,
        "salary_job_count": 16,
        "salary_p50": 160000,
        "salary_p75": 190000,
        "salary_p90": 200000,
        "remote_count": 18,
        "ai_post_count": 53,
        "demand_share": 0.1277,
        "post_count_3mo": 147,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.1311,
        "salary_delta_3mo": -0.1111,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Golang",
        "role_count": 49,
        "company_count": 46,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.3878,
        "salary_job_count": 14,
        "salary_p50": 114300,
        "salary_p75": 150000,
        "salary_p90": 170000,
        "remote_count": 25,
        "ai_post_count": 29,
        "demand_share": 0.1181,
        "post_count_3mo": 124,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": -0.0392,
        "salary_delta_3mo": -0.238,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Kubernetes",
        "role_count": 45,
        "company_count": 43,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.3778,
        "salary_job_count": 9,
        "salary_p50": 177000,
        "salary_p75": 190000,
        "salary_p90": 200000,
        "remote_count": 25,
        "ai_post_count": 28,
        "demand_share": 0.1084,
        "post_count_3mo": 97,
        "salary_p50_3mo": 151000,
        "demand_delta_3mo": 0.6071,
        "salary_delta_3mo": 0.416,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Node.js",
        "role_count": 41,
        "company_count": 38,
        "salary_post_count": 24,
        "salary_transparency_rate": 0.5854,
        "salary_job_count": 14,
        "salary_p50": 160000,
        "salary_p75": 175000,
        "salary_p90": 190000,
        "remote_count": 21,
        "ai_post_count": 25,
        "demand_share": 0.0988,
        "post_count_3mo": 106,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0238,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Rust",
        "role_count": 38,
        "company_count": 35,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.2895,
        "salary_job_count": 7,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 160000,
        "remote_count": 25,
        "ai_post_count": 17,
        "demand_share": 0.0916,
        "post_count_3mo": 85,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.8095,
        "salary_delta_3mo": 0.25,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "DevOps",
        "role_count": 34,
        "company_count": 32,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.3824,
        "salary_job_count": 8,
        "salary_p50": 115000,
        "salary_p75": 190000,
        "salary_p90": 192000,
        "remote_count": 19,
        "ai_post_count": 21,
        "demand_share": 0.0819,
        "post_count_3mo": 87,
        "salary_p50_3mo": 115000,
        "demand_delta_3mo": 0.1333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Next.js",
        "role_count": 28,
        "company_count": 28,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 6,
        "salary_p50": 102200,
        "salary_p75": 125000,
        "salary_p90": 150000,
        "remote_count": 15,
        "ai_post_count": 20,
        "demand_share": 0.0675,
        "post_count_3mo": 75,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.1667,
        "salary_delta_3mo": -0.3806,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Docker",
        "role_count": 26,
        "company_count": 25,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.4615,
        "salary_job_count": 7,
        "salary_p50": 140000,
        "salary_p75": 160000,
        "salary_p90": 200000,
        "remote_count": 17,
        "ai_post_count": 19,
        "demand_share": 0.0627,
        "post_count_3mo": 59,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.2381,
        "salary_delta_3mo": 0.1667,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "GitHub",
        "role_count": 26,
        "company_count": 26,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.5769,
        "salary_job_count": 9,
        "salary_p50": 180000,
        "salary_p75": 190000,
        "salary_p90": 200000,
        "remote_count": 15,
        "ai_post_count": 19,
        "demand_share": 0.0627,
        "post_count_3mo": 50,
        "salary_p50_3mo": 170000,
        "demand_delta_3mo": 0.04,
        "salary_delta_3mo": 1,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "LLM",
        "role_count": 26,
        "company_count": 24,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3462,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 18,
        "ai_post_count": 26,
        "demand_share": 0.0627,
        "post_count_3mo": 72,
        "salary_p50_3mo": 170000,
        "demand_delta_3mo": -0.037,
        "salary_delta_3mo": 0.5,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "GCP",
        "role_count": 25,
        "company_count": 24,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.48,
        "salary_job_count": 10,
        "salary_p50": 160000,
        "salary_p75": 175000,
        "salary_p90": 190000,
        "remote_count": 9,
        "ai_post_count": 18,
        "demand_share": 0.0602,
        "post_count_3mo": 51,
        "salary_p50_3mo": 151200,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": 0.2308,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Terraform",
        "role_count": 24,
        "company_count": 24,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 5,
        "salary_p50": 160000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 12,
        "ai_post_count": 14,
        "demand_share": 0.0578,
        "post_count_3mo": 52,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.4118,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "iOS",
        "role_count": 23,
        "company_count": 22,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.2609,
        "salary_job_count": 4,
        "salary_p50": 115000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 13,
        "ai_post_count": 17,
        "demand_share": 0.0554,
        "post_count_3mo": 48,
        "salary_p50_3mo": 115000,
        "demand_delta_3mo": 0.5333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "API",
        "role_count": 22,
        "company_count": 21,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.4091,
        "salary_job_count": 7,
        "salary_p50": 170000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 14,
        "ai_post_count": 16,
        "demand_share": 0.053,
        "post_count_3mo": 56,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.375,
        "salary_delta_3mo": 1.8333,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "SaaS",
        "role_count": 21,
        "company_count": 20,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.381,
        "salary_job_count": 6,
        "salary_p50": 90000,
        "salary_p75": 120000,
        "salary_p90": 150000,
        "remote_count": 10,
        "ai_post_count": 14,
        "demand_share": 0.0506,
        "post_count_3mo": 56,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.1053,
        "salary_delta_3mo": -0.3571,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "UI",
        "role_count": 20,
        "company_count": 19,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 3,
        "salary_p50": 75600,
        "salary_p75": 75600,
        "salary_p90": 75600,
        "remote_count": 11,
        "ai_post_count": 14,
        "demand_share": 0.0482,
        "post_count_3mo": 54,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": 0.1765,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "B2B",
        "role_count": 18,
        "company_count": 17,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2778,
        "salary_job_count": 3,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 10,
        "ai_post_count": 11,
        "demand_share": 0.0434,
        "post_count_3mo": 40,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Android",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 5,
        "salary_p50": 160000,
        "salary_p75": 177000,
        "salary_p90": 177000,
        "remote_count": 13,
        "ai_post_count": 14,
        "demand_share": 0.0386,
        "post_count_3mo": 44,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.0667,
        "salary_delta_3mo": 0.0667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "CI/CD",
        "role_count": 16,
        "company_count": 14,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3125,
        "salary_job_count": 4,
        "salary_p50": 180000,
        "salary_p75": 190000,
        "salary_p90": 190000,
        "remote_count": 9,
        "ai_post_count": 10,
        "demand_share": 0.0386,
        "post_count_3mo": 34,
        "salary_p50_3mo": 151000,
        "demand_delta_3mo": 0.4545,
        "salary_delta_3mo": 1.25,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "GraphQL",
        "role_count": 15,
        "company_count": 13,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 10,
        "ai_post_count": 8,
        "demand_share": 0.0361,
        "post_count_3mo": 32,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Java",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 6,
        "salary_p50": 135000,
        "salary_p75": 140000,
        "salary_p90": 160000,
        "remote_count": 6,
        "ai_post_count": 9,
        "demand_share": 0.0361,
        "post_count_3mo": 38,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.0625,
        "salary_delta_3mo": -0.1,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "JavaScript",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 4,
        "salary_p50": 125000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 8,
        "ai_post_count": 8,
        "demand_share": 0.0361,
        "post_count_3mo": 44,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Redis",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 3,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 6,
        "ai_post_count": 9,
        "demand_share": 0.0361,
        "post_count_3mo": 29,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": 0.3636,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Ruby on Rails",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 11,
        "ai_post_count": 6,
        "demand_share": 0.0361,
        "post_count_3mo": 39,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0714,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "SQL",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.5333,
        "salary_job_count": 7,
        "salary_p50": 119000,
        "salary_p75": 125000,
        "salary_p90": 152400,
        "remote_count": 10,
        "ai_post_count": 6,
        "demand_share": 0.0361,
        "post_count_3mo": 32,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.3636,
        "salary_delta_3mo": 0.19,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "UX",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 4,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 8,
        "ai_post_count": 7,
        "demand_share": 0.0361,
        "post_count_3mo": 44,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1176,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Azure",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 8,
        "ai_post_count": 9,
        "demand_share": 0.0289,
        "post_count_3mo": 25,
        "salary_p50_3mo": 151000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": 1.4242,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "C++",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 190500,
        "salary_p75": 190500,
        "salary_p90": 190500,
        "remote_count": 4,
        "ai_post_count": 8,
        "demand_share": 0.0289,
        "post_count_3mo": 34,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": 2.175,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Linux",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0265,
        "post_count_3mo": 38,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": -0.1538,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "MongoDB",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 2,
        "salary_p50": 59400,
        "salary_p75": 59400,
        "salary_p90": 59400,
        "remote_count": 6,
        "ai_post_count": 8,
        "demand_share": 0.0265,
        "post_count_3mo": 23,
        "salary_p50_3mo": 59400,
        "demand_delta_3mo": 0.8333,
        "salary_delta_3mo": -0.604,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "FastAPI",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1111,
        "salary_job_count": 1,
        "salary_p50": 102200,
        "salary_p75": 102200,
        "salary_p90": 102200,
        "remote_count": 3,
        "ai_post_count": 9,
        "demand_share": 0.0217,
        "post_count_3mo": 34,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.3187,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "SDK",
        "role_count": 9,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 1,
        "salary_p50": 97200,
        "salary_p75": 97200,
        "salary_p90": 97200,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0217,
        "post_count_3mo": 21,
        "salary_p50_3mo": 111000,
        "demand_delta_3mo": 0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Django",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0193,
        "post_count_3mo": 24,
        "salary_p50_3mo": 88900,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.4667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "React Native",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 43800,
        "salary_p75": 43800,
        "salary_p90": 43800,
        "remote_count": 5,
        "ai_post_count": 7,
        "demand_share": 0.0193,
        "post_count_3mo": 22,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": -0.708,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Web3",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 43800,
        "salary_p75": 43800,
        "salary_p90": 43800,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.0193,
        "post_count_3mo": 20,
        "salary_p50_3mo": 192000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": -0.4525,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Flutter",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.0145,
        "post_count_3mo": 10,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 5,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Vue.js",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 3,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0145,
        "post_count_3mo": 22,
        "salary_p50_3mo": 111000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": 0.4583,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": ".NET",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.012,
        "post_count_3mo": 10,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "PyTorch",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 2,
        "ai_post_count": 5,
        "demand_share": 0.012,
        "post_count_3mo": 13,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Tailwind CSS",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 2,
        "salary_p50": 43800,
        "salary_p75": 43800,
        "salary_p90": 43800,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.012,
        "post_count_3mo": 11,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": -0.7263,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "C#",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0096,
        "post_count_3mo": 19,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "CSS",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0096,
        "post_count_3mo": 7,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Elasticsearch",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0096,
        "post_count_3mo": 9,
        "salary_p50_3mo": 115000,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Elixir",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0096,
        "post_count_3mo": 7,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Kafka",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 3,
        "salary_p50": 169000,
        "salary_p75": 169000,
        "salary_p90": 169000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0096,
        "post_count_3mo": 8,
        "salary_p50_3mo": 169000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": 0.2071,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "MySQL",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0096,
        "post_count_3mo": 14,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.4286,
        "salary_delta_3mo": -0.125,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "WebAssembly",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 152400,
        "salary_p75": 152400,
        "salary_p90": 152400,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0096,
        "post_count_3mo": 7,
        "salary_p50_3mo": 152400,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": 0.2192,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Angular",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0072,
        "post_count_3mo": 8,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "ECS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0072,
        "post_count_3mo": 7,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "PHP",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0072,
        "post_count_3mo": 14,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Svelte",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 3,
        "salary_transparency_rate": 1,
        "salary_job_count": 2,
        "salary_p50": 64800,
        "salary_p75": 64800,
        "salary_p90": 64800,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0072,
        "post_count_3mo": 6,
        "salary_p50_3mo": 64800,
        "demand_delta_3mo": -0.5714,
        "salary_delta_3mo": -0.19,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "macOS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0072,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Clojure",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0048,
        "post_count_3mo": 5,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Flask",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0048,
        "post_count_3mo": 7,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "MLOps",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0048,
        "post_count_3mo": 6,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "OCR",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0048,
        "post_count_3mo": 7,
        "salary_p50_3mo": 32400,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "RabbitMQ",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0048,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Spring",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 94900,
        "salary_p75": 94900,
        "salary_p90": 94900,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0048,
        "post_count_3mo": 6,
        "salary_p50_3mo": 94900,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "TensorFlow",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0048,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Wasm",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0048,
        "post_count_3mo": 5,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Windows",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0048,
        "post_count_3mo": 9,
        "salary_p50_3mo": 103680,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Assembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0024,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0024,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0024,
        "post_count_3mo": 3,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Erlang",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0024,
        "post_count_3mo": 1,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "FFmpeg",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0024,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "GitLab",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0024,
        "post_count_3mo": 2,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": 0.9444,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "HTML",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0024,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.8,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Haskell",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0024,
        "post_count_3mo": 1,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "NLP",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0024,
        "post_count_3mo": 7,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.8,
        "salary_delta_3mo": 1,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "OpenCV",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0024,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Scala",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0024,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-02",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0024,
        "post_count_3mo": 3,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Artificial Intelligence",
        "role_count": 122,
        "company_count": 107,
        "salary_post_count": 34,
        "salary_transparency_rate": 0.2787,
        "salary_job_count": 16,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 175000,
        "remote_count": 56,
        "ai_post_count": 122,
        "demand_share": 0.4729,
        "post_count_3mo": 496,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2327,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Full Stack",
        "role_count": 78,
        "company_count": 71,
        "salary_post_count": 27,
        "salary_transparency_rate": 0.3462,
        "salary_job_count": 12,
        "salary_p50": 100000,
        "salary_p75": 150000,
        "salary_p90": 162000,
        "remote_count": 37,
        "ai_post_count": 56,
        "demand_share": 0.3023,
        "post_count_3mo": 304,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": -0.0714,
        "salary_delta_3mo": -0.2593,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "React",
        "role_count": 65,
        "company_count": 62,
        "salary_post_count": 21,
        "salary_transparency_rate": 0.3231,
        "salary_job_count": 13,
        "salary_p50": 140000,
        "salary_p75": 175000,
        "salary_p90": 180000,
        "remote_count": 39,
        "ai_post_count": 37,
        "demand_share": 0.2519,
        "post_count_3mo": 248,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1558,
        "salary_delta_3mo": -0.125,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Backend",
        "role_count": 63,
        "company_count": 60,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.2698,
        "salary_job_count": 8,
        "salary_p50": 128016,
        "salary_p75": 130000,
        "salary_p90": 140000,
        "remote_count": 35,
        "ai_post_count": 37,
        "demand_share": 0.2442,
        "post_count_3mo": 277,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": -0.16,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "TypeScript",
        "role_count": 61,
        "company_count": 59,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.3279,
        "salary_job_count": 12,
        "salary_p50": 140000,
        "salary_p75": 175000,
        "salary_p90": 180000,
        "remote_count": 37,
        "ai_post_count": 39,
        "demand_share": 0.2364,
        "post_count_3mo": 259,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2469,
        "salary_delta_3mo": -0.0789,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Python",
        "role_count": 57,
        "company_count": 52,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.193,
        "salary_job_count": 5,
        "salary_p50": 90000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 34,
        "ai_post_count": 39,
        "demand_share": 0.2209,
        "post_count_3mo": 238,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": -0.4,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Machine Learning",
        "role_count": 40,
        "company_count": 35,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.175,
        "salary_job_count": 3,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 14,
        "ai_post_count": 40,
        "demand_share": 0.155,
        "post_count_3mo": 155,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": -0.1852,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "PostgreSQL",
        "role_count": 40,
        "company_count": 38,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.325,
        "salary_job_count": 6,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 140000,
        "remote_count": 25,
        "ai_post_count": 26,
        "demand_share": 0.155,
        "post_count_3mo": 168,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1489,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "AWS",
        "role_count": 39,
        "company_count": 37,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 7,
        "salary_p50": 130000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 23,
        "ai_post_count": 24,
        "demand_share": 0.1512,
        "post_count_3mo": 146,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.093,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Frontend",
        "role_count": 34,
        "company_count": 32,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.2647,
        "salary_job_count": 4,
        "salary_p50": 90000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 22,
        "ai_post_count": 18,
        "demand_share": 0.1318,
        "post_count_3mo": 139,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.3061,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Golang",
        "role_count": 31,
        "company_count": 29,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.4194,
        "salary_job_count": 5,
        "salary_p50": 97200,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 17,
        "ai_post_count": 14,
        "demand_share": 0.1202,
        "post_count_3mo": 126,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1389,
        "salary_delta_3mo": -0.19,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Node.js",
        "role_count": 27,
        "company_count": 26,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.5556,
        "salary_job_count": 10,
        "salary_p50": 130000,
        "salary_p75": 140000,
        "salary_p90": 175000,
        "remote_count": 13,
        "ai_post_count": 18,
        "demand_share": 0.1047,
        "post_count_3mo": 107,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2286,
        "salary_delta_3mo": -0.1875,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Kubernetes",
        "role_count": 24,
        "company_count": 21,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 14,
        "ai_post_count": 18,
        "demand_share": 0.093,
        "post_count_3mo": 80,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.0769,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "DevOps",
        "role_count": 23,
        "company_count": 21,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.3478,
        "salary_job_count": 3,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 13,
        "ai_post_count": 15,
        "demand_share": 0.0891,
        "post_count_3mo": 83,
        "salary_p50_3mo": 115000,
        "demand_delta_3mo": -0.08,
        "salary_delta_3mo": -0.25,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "LLM",
        "role_count": 21,
        "company_count": 20,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2381,
        "salary_job_count": 3,
        "salary_p50": 67200,
        "salary_p75": 67200,
        "salary_p90": 67200,
        "remote_count": 10,
        "ai_post_count": 21,
        "demand_share": 0.0814,
        "post_count_3mo": 73,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": -0.7312,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Next.js",
        "role_count": 21,
        "company_count": 19,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.4762,
        "salary_job_count": 4,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 11,
        "ai_post_count": 12,
        "demand_share": 0.0814,
        "post_count_3mo": 71,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.3125,
        "salary_delta_3mo": -0.7833,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Rust",
        "role_count": 19,
        "company_count": 18,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2105,
        "salary_job_count": 2,
        "salary_p50": 50000,
        "salary_p75": 50000,
        "salary_p90": 50000,
        "remote_count": 12,
        "ai_post_count": 10,
        "demand_share": 0.0736,
        "post_count_3mo": 68,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1739,
        "salary_delta_3mo": -0.75,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "SaaS",
        "role_count": 17,
        "company_count": 16,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2353,
        "salary_job_count": 3,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 12,
        "ai_post_count": 10,
        "demand_share": 0.0659,
        "post_count_3mo": 54,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.0556,
        "salary_delta_3mo": -0.2667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "UI",
        "role_count": 17,
        "company_count": 16,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2353,
        "salary_job_count": 3,
        "salary_p50": 86400,
        "salary_p75": 86400,
        "salary_p90": 86400,
        "remote_count": 11,
        "ai_post_count": 10,
        "demand_share": 0.0659,
        "post_count_3mo": 51,
        "salary_p50_3mo": 95250,
        "demand_delta_3mo": 0.2143,
        "salary_delta_3mo": -0.136,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Android",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 9,
        "ai_post_count": 8,
        "demand_share": 0.0543,
        "post_count_3mo": 43,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.0769,
        "salary_delta_3mo": -0.4118,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Docker",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 9,
        "ai_post_count": 12,
        "demand_share": 0.0543,
        "post_count_3mo": 54,
        "salary_p50_3mo": 105000,
        "demand_delta_3mo": -0.1765,
        "salary_delta_3mo": -0.4,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "API",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 1,
        "salary_p50": 35000,
        "salary_p75": 35000,
        "salary_p90": 35000,
        "remote_count": 10,
        "ai_post_count": 8,
        "demand_share": 0.0504,
        "post_count_3mo": 50,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.35,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "C++",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0465,
        "post_count_3mo": 30,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.0769,
        "salary_delta_3mo": -0.25,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "GCP",
        "role_count": 12,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.0465,
        "post_count_3mo": 46,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": 0.1667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "JavaScript",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 6,
        "ai_post_count": 8,
        "demand_share": 0.0465,
        "post_count_3mo": 47,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2941,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "UX",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.0426,
        "post_count_3mo": 46,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3889,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "iOS",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0426,
        "post_count_3mo": 40,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.359,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "B2B",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 67200,
        "salary_p75": 67200,
        "salary_p90": 67200,
        "remote_count": 6,
        "ai_post_count": 9,
        "demand_share": 0.0388,
        "post_count_3mo": 37,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Java",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1111,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0349,
        "post_count_3mo": 39,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.3571,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Linux",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 6,
        "demand_share": 0.0349,
        "post_count_3mo": 40,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Terraform",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 4,
        "ai_post_count": 6,
        "demand_share": 0.0349,
        "post_count_3mo": 45,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": 0.1667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "FastAPI",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.031,
        "post_count_3mo": 34,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Ruby on Rails",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.031,
        "post_count_3mo": 38,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.4667,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "SQL",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.031,
        "post_count_3mo": 28,
        "salary_p50_3mo": 158750,
        "demand_delta_3mo": -0.3846,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "GitHub",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0271,
        "post_count_3mo": 49,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.5625,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "GraphQL",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5714,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0271,
        "post_count_3mo": 29,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2222,
        "salary_delta_3mo": -0.1875,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Django",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 88900,
        "salary_p75": 88900,
        "salary_p90": 88900,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0233,
        "post_count_3mo": 24,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": -0.4073,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "SDK",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0233,
        "post_count_3mo": 19,
        "salary_p50_3mo": 135000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "CI/CD",
        "role_count": 5,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 3,
        "ai_post_count": 5,
        "demand_share": 0.0194,
        "post_count_3mo": 29,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.375,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "MongoDB",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0194,
        "post_count_3mo": 18,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "PHP",
        "role_count": 5,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0194,
        "post_count_3mo": 15,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Redis",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0194,
        "post_count_3mo": 20,
        "salary_p50_3mo": 115000,
        "demand_delta_3mo": -0.4444,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Vue.js",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.8,
        "salary_job_count": 2,
        "salary_p50": 35000,
        "salary_p75": 35000,
        "salary_p90": 35000,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.0194,
        "post_count_3mo": 25,
        "salary_p50_3mo": 111000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": -0.7667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Web3",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 2,
        "salary_p50": 50000,
        "salary_p75": 50000,
        "salary_p90": 50000,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0194,
        "post_count_3mo": 22,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": -0.6154,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "MySQL",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0155,
        "post_count_3mo": 17,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "NLP",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 4,
        "demand_share": 0.0155,
        "post_count_3mo": 11,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "React Native",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0155,
        "post_count_3mo": 24,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.7143,
        "salary_delta_3mo": -0.125,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Azure",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0116,
        "post_count_3mo": 23,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "C#",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0116,
        "post_count_3mo": 25,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "ECS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0116,
        "post_count_3mo": 7,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "OCR",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 32400,
        "salary_p75": 32400,
        "salary_p90": 32400,
        "remote_count": 0,
        "ai_post_count": 3,
        "demand_share": 0.0116,
        "post_count_3mo": 6,
        "salary_p50_3mo": 32400,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": -0.676,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "PyTorch",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0116,
        "post_count_3mo": 13,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Windows",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0116,
        "post_count_3mo": 10,
        "salary_p50_3mo": 103680,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": ".NET",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0078,
        "post_count_3mo": 8,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Elasticsearch",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0078,
        "post_count_3mo": 6,
        "salary_p50_3mo": 115000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "FFmpeg",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0078,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Flask",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0078,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Flutter",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0078,
        "post_count_3mo": 5,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Solidity",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0078,
        "post_count_3mo": 3,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Spring",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0078,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Tailwind CSS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0078,
        "post_count_3mo": 12,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "WebAssembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0078,
        "post_count_3mo": 5,
        "salary_p50_3mo": 158750,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "macOS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0078,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Angular",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0039,
        "post_count_3mo": 7,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0039,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "CSS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0039,
        "post_count_3mo": 8,
        "salary_p50_3mo": 85800,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Clojure",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0039,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0039,
        "post_count_3mo": 2,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "MLOps",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0039,
        "post_count_3mo": 7,
        "salary_p50_3mo": 92500,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "RabbitMQ",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0039,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Scala",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0039,
        "post_count_3mo": 8,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Svelte",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0039,
        "post_count_3mo": 10,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "TensorFlow",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0039,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2026-01",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0039,
        "post_count_3mo": 4,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Artificial Intelligence",
        "role_count": 174,
        "company_count": 158,
        "salary_post_count": 63,
        "salary_transparency_rate": 0.3621,
        "salary_job_count": 36,
        "salary_p50": 150000,
        "salary_p75": 170000,
        "salary_p90": 200000,
        "remote_count": 90,
        "ai_post_count": 174,
        "demand_share": 0.4579,
        "post_count_3mo": 533,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2889,
        "salary_delta_3mo": -0.1176,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Full Stack",
        "role_count": 110,
        "company_count": 100,
        "salary_post_count": 41,
        "salary_transparency_rate": 0.3727,
        "salary_job_count": 21,
        "salary_p50": 140000,
        "salary_p75": 152400,
        "salary_p90": 180000,
        "remote_count": 55,
        "ai_post_count": 73,
        "demand_share": 0.2895,
        "post_count_3mo": 310,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Backend",
        "role_count": 108,
        "company_count": 100,
        "salary_post_count": 35,
        "salary_transparency_rate": 0.3241,
        "salary_job_count": 18,
        "salary_p50": 150000,
        "salary_p75": 170500,
        "salary_p90": 200000,
        "remote_count": 58,
        "ai_post_count": 62,
        "demand_share": 0.2842,
        "post_count_3mo": 289,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.35,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "TypeScript",
        "role_count": 95,
        "company_count": 90,
        "salary_post_count": 29,
        "salary_transparency_rate": 0.3053,
        "salary_job_count": 18,
        "salary_p50": 150000,
        "salary_p75": 170000,
        "salary_p90": 200000,
        "remote_count": 48,
        "ai_post_count": 61,
        "demand_share": 0.25,
        "post_count_3mo": 279,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.044,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Python",
        "role_count": 90,
        "company_count": 85,
        "salary_post_count": 26,
        "salary_transparency_rate": 0.2889,
        "salary_job_count": 14,
        "salary_p50": 150000,
        "salary_p75": 180000,
        "salary_p90": 200000,
        "remote_count": 47,
        "ai_post_count": 59,
        "demand_share": 0.2368,
        "post_count_3mo": 257,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": 0.1538,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "React",
        "role_count": 88,
        "company_count": 84,
        "salary_post_count": 29,
        "salary_transparency_rate": 0.3295,
        "salary_job_count": 18,
        "salary_p50": 152400,
        "salary_p75": 170000,
        "salary_p90": 200000,
        "remote_count": 48,
        "ai_post_count": 51,
        "demand_share": 0.2316,
        "post_count_3mo": 260,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1282,
        "salary_delta_3mo": -0.1035,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "PostgreSQL",
        "role_count": 68,
        "company_count": 62,
        "salary_post_count": 27,
        "salary_transparency_rate": 0.3971,
        "salary_job_count": 16,
        "salary_p50": 145000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 35,
        "ai_post_count": 35,
        "demand_share": 0.1789,
        "post_count_3mo": 175,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5111,
        "salary_delta_3mo": -0.0333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Machine Learning",
        "role_count": 54,
        "company_count": 52,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.2963,
        "salary_job_count": 10,
        "salary_p50": 150000,
        "salary_p75": 181500,
        "salary_p90": 200000,
        "remote_count": 28,
        "ai_post_count": 54,
        "demand_share": 0.1421,
        "post_count_3mo": 175,
        "salary_p50_3mo": 165000,
        "demand_delta_3mo": 0.1739,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Frontend",
        "role_count": 50,
        "company_count": 50,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.26,
        "salary_job_count": 8,
        "salary_p50": 111000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 28,
        "ai_post_count": 25,
        "demand_share": 0.1316,
        "post_count_3mo": 154,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.0566,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "AWS",
        "role_count": 46,
        "company_count": 41,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.3478,
        "salary_job_count": 7,
        "salary_p50": 160000,
        "salary_p75": 180000,
        "salary_p90": 200000,
        "remote_count": 23,
        "ai_post_count": 25,
        "demand_share": 0.1211,
        "post_count_3mo": 150,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1795,
        "salary_delta_3mo": 0.0667,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Golang",
        "role_count": 44,
        "company_count": 41,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 4,
        "salary_p50": 111000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 25,
        "ai_post_count": 19,
        "demand_share": 0.1158,
        "post_count_3mo": 131,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0732,
        "salary_delta_3mo": -0.2697,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Node.js",
        "role_count": 38,
        "company_count": 33,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.4474,
        "salary_job_count": 8,
        "salary_p50": 150000,
        "salary_p75": 151200,
        "salary_p90": 160000,
        "remote_count": 20,
        "ai_post_count": 27,
        "demand_share": 0.1,
        "post_count_3mo": 115,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2258,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "DevOps",
        "role_count": 30,
        "company_count": 29,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 5,
        "salary_p50": 115000,
        "salary_p75": 151000,
        "salary_p90": 151000,
        "remote_count": 20,
        "ai_post_count": 14,
        "demand_share": 0.0789,
        "post_count_3mo": 85,
        "salary_p50_3mo": 115000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": -0.2813,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Kubernetes",
        "role_count": 28,
        "company_count": 27,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.3929,
        "salary_job_count": 7,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 151000,
        "remote_count": 19,
        "ai_post_count": 16,
        "demand_share": 0.0737,
        "post_count_3mo": 82,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.12,
        "salary_delta_3mo": 0.0769,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Rust",
        "role_count": 28,
        "company_count": 27,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3214,
        "salary_job_count": 7,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 200000,
        "remote_count": 16,
        "ai_post_count": 13,
        "demand_share": 0.0737,
        "post_count_3mo": 72,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5556,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Next.js",
        "role_count": 26,
        "company_count": 26,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 8,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 180000,
        "remote_count": 12,
        "ai_post_count": 21,
        "demand_share": 0.0684,
        "post_count_3mo": 66,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2381,
        "salary_delta_3mo": 0.25,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "LLM",
        "role_count": 25,
        "company_count": 23,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 8,
        "salary_p50": 170000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 13,
        "ai_post_count": 25,
        "demand_share": 0.0658,
        "post_count_3mo": 76,
        "salary_p50_3mo": 165000,
        "demand_delta_3mo": 0.087,
        "salary_delta_3mo": -0.0556,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "API",
        "role_count": 21,
        "company_count": 20,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.4762,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 9,
        "ai_post_count": 9,
        "demand_share": 0.0553,
        "post_count_3mo": 57,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.3125,
        "salary_delta_3mo": 0.1667,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Docker",
        "role_count": 19,
        "company_count": 19,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3684,
        "salary_job_count": 5,
        "salary_p50": 140000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 8,
        "ai_post_count": 11,
        "demand_share": 0.05,
        "post_count_3mo": 57,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.2667,
        "salary_delta_3mo": 0.0769,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Terraform",
        "role_count": 19,
        "company_count": 19,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.4737,
        "salary_job_count": 4,
        "salary_p50": 115000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 13,
        "ai_post_count": 11,
        "demand_share": 0.05,
        "post_count_3mo": 48,
        "salary_p50_3mo": 115000,
        "demand_delta_3mo": 0.4615,
        "salary_delta_3mo": -0.2333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Linux",
        "role_count": 18,
        "company_count": 17,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 7,
        "ai_post_count": 8,
        "demand_share": 0.0474,
        "post_count_3mo": 43,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": 0.6364,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "SaaS",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 6,
        "salary_p50": 150000,
        "salary_p75": 151200,
        "salary_p90": 160000,
        "remote_count": 14,
        "ai_post_count": 10,
        "demand_share": 0.0474,
        "post_count_3mo": 55,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 1.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "UX",
        "role_count": 18,
        "company_count": 17,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3889,
        "salary_job_count": 8,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 225000,
        "remote_count": 10,
        "ai_post_count": 12,
        "demand_share": 0.0474,
        "post_count_3mo": 53,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2857,
        "salary_delta_3mo": 1.3077,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "FastAPI",
        "role_count": 17,
        "company_count": 15,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4118,
        "salary_job_count": 5,
        "salary_p50": 160000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 9,
        "ai_post_count": 14,
        "demand_share": 0.0447,
        "post_count_3mo": 36,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1.4286,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "GitHub",
        "role_count": 17,
        "company_count": 17,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3529,
        "salary_job_count": 4,
        "salary_p50": 115000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 11,
        "ai_post_count": 12,
        "demand_share": 0.0447,
        "post_count_3mo": 58,
        "salary_p50_3mo": 115000,
        "demand_delta_3mo": 0.4167,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "JavaScript",
        "role_count": 17,
        "company_count": 16,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2353,
        "salary_job_count": 4,
        "salary_p50": 100000,
        "salary_p75": 105000,
        "salary_p90": 105000,
        "remote_count": 10,
        "ai_post_count": 10,
        "demand_share": 0.0447,
        "post_count_3mo": 52,
        "salary_p50_3mo": 105000,
        "demand_delta_3mo": 0.1333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "UI",
        "role_count": 17,
        "company_count": 15,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2353,
        "salary_job_count": 4,
        "salary_p50": 95250,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 11,
        "ai_post_count": 10,
        "demand_share": 0.0447,
        "post_count_3mo": 48,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0.4167,
        "salary_delta_3mo": 0.4654,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Ruby on Rails",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 11,
        "ai_post_count": 3,
        "demand_share": 0.0421,
        "post_count_3mo": 45,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0667,
        "salary_delta_3mo": -0.2941,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Android",
        "role_count": 14,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 12,
        "ai_post_count": 9,
        "demand_share": 0.0368,
        "post_count_3mo": 42,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "GCP",
        "role_count": 14,
        "company_count": 12,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 4,
        "salary_p50": 111000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 6,
        "ai_post_count": 9,
        "demand_share": 0.0368,
        "post_count_3mo": 54,
        "salary_p50_3mo": 111000,
        "demand_delta_3mo": -0.2632,
        "salary_delta_3mo": -0.26,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Java",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 8,
        "ai_post_count": 4,
        "demand_share": 0.0368,
        "post_count_3mo": 44,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.2727,
        "salary_delta_3mo": -0.125,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "iOS",
        "role_count": 14,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 10,
        "ai_post_count": 10,
        "demand_share": 0.0368,
        "post_count_3mo": 40,
        "salary_p50_3mo": 152000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "CI/CD",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 151000,
        "salary_p90": 151000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0342,
        "post_count_3mo": 32,
        "salary_p50_3mo": 105000,
        "demand_delta_3mo": 5.5,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "B2B",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 9,
        "ai_post_count": 7,
        "demand_share": 0.0316,
        "post_count_3mo": 37,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 1.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "C#",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 8,
        "ai_post_count": 2,
        "demand_share": 0.0316,
        "post_count_3mo": 27,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 1.4,
        "salary_delta_3mo": 0.1667,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Vue.js",
        "role_count": 11,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 2,
        "salary_p50": 111000,
        "salary_p75": 111000,
        "salary_p90": 111000,
        "remote_count": 9,
        "ai_post_count": 2,
        "demand_share": 0.0289,
        "post_count_3mo": 26,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.5714,
        "salary_delta_3mo": 0.11,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Azure",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 151000,
        "salary_p90": 151000,
        "remote_count": 4,
        "ai_post_count": 5,
        "demand_share": 0.0263,
        "post_count_3mo": 25,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": -0.3,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "C++",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.0263,
        "post_count_3mo": 31,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Django",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0263,
        "post_count_3mo": 25,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.4286,
        "salary_delta_3mo": -0.2222,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "GraphQL",
        "role_count": 10,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0263,
        "post_count_3mo": 31,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "React Native",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 6,
        "ai_post_count": 8,
        "demand_share": 0.0263,
        "post_count_3mo": 34,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.1111,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Redis",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5556,
        "salary_job_count": 3,
        "salary_p50": 115000,
        "salary_p75": 115000,
        "salary_p90": 115000,
        "remote_count": 4,
        "ai_post_count": 6,
        "demand_share": 0.0237,
        "post_count_3mo": 24,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.3235,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "SQL",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 3,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0237,
        "post_count_3mo": 33,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "MongoDB",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 5,
        "demand_share": 0.0184,
        "post_count_3mo": 15,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Web3",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0184,
        "post_count_3mo": 30,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "MySQL",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.0158,
        "post_count_3mo": 19,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "PHP",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0158,
        "post_count_3mo": 10,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "SDK",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 111000,
        "salary_p75": 111000,
        "salary_p90": 111000,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0158,
        "post_count_3mo": 22,
        "salary_p50_3mo": 135000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "PyTorch",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 5,
        "demand_share": 0.0132,
        "post_count_3mo": 19,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": 0.1538,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Angular",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0105,
        "post_count_3mo": 6,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Kafka",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0105,
        "post_count_3mo": 14,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Tailwind CSS",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0105,
        "post_count_3mo": 14,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": -0.0588,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Windows",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 103680,
        "salary_p75": 103680,
        "salary_p90": 103680,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0105,
        "post_count_3mo": 10,
        "salary_p50_3mo": 103680,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": ".NET",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0079,
        "post_count_3mo": 9,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Elasticsearch",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 115000,
        "salary_p75": 115000,
        "salary_p90": 115000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0079,
        "post_count_3mo": 6,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.4744,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Elixir",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0079,
        "post_count_3mo": 7,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Flask",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0079,
        "post_count_3mo": 6,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "MLOps",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0079,
        "post_count_3mo": 8,
        "salary_p50_3mo": 92500,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Scala",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0079,
        "post_count_3mo": 8,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "macOS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0079,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "CSS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0053,
        "post_count_3mo": 7,
        "salary_p50_3mo": 85800,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Clojure",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0053,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Flutter",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 105000,
        "salary_p75": 105000,
        "salary_p90": 105000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0053,
        "post_count_3mo": 4,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "HTML",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0053,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "NLP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0053,
        "post_count_3mo": 13,
        "salary_p50_3mo": 165000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "OCR",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0053,
        "post_count_3mo": 5,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Spring",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0053,
        "post_count_3mo": 7,
        "salary_p50_3mo": 64800,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Svelte",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0053,
        "post_count_3mo": 10,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Wasm",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0053,
        "post_count_3mo": 6,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0026,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0026,
        "post_count_3mo": 4,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0026,
        "post_count_3mo": 2,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.0667,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "ECS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0026,
        "post_count_3mo": 5,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "GitLab",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0026,
        "post_count_3mo": 8,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "NoSQL",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0026,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "TensorFlow",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0026,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-12",
        "tech": "WebAssembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0026,
        "post_count_3mo": 4,
        "salary_p50_3mo": 158750,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Artificial Intelligence",
        "role_count": 200,
        "company_count": 187,
        "salary_post_count": 65,
        "salary_transparency_rate": 0.325,
        "salary_job_count": 34,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 180000,
        "remote_count": 99,
        "ai_post_count": 200,
        "demand_share": 0.5076,
        "post_count_3mo": 494,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.3986,
        "salary_delta_3mo": 0.25,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Full Stack",
        "role_count": 116,
        "company_count": 107,
        "salary_post_count": 44,
        "salary_transparency_rate": 0.3793,
        "salary_job_count": 24,
        "salary_p50": 150000,
        "salary_p75": 165000,
        "salary_p90": 180000,
        "remote_count": 57,
        "ai_post_count": 82,
        "demand_share": 0.2944,
        "post_count_3mo": 288,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2609,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Backend",
        "role_count": 106,
        "company_count": 96,
        "salary_post_count": 37,
        "salary_transparency_rate": 0.3491,
        "salary_job_count": 15,
        "salary_p50": 121920,
        "salary_p75": 165000,
        "salary_p90": 180000,
        "remote_count": 67,
        "ai_post_count": 63,
        "demand_share": 0.269,
        "post_count_3mo": 261,
        "salary_p50_3mo": 135000,
        "demand_delta_3mo": 0.3947,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "TypeScript",
        "role_count": 103,
        "company_count": 97,
        "salary_post_count": 35,
        "salary_transparency_rate": 0.3398,
        "salary_job_count": 19,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 57,
        "ai_post_count": 67,
        "demand_share": 0.2614,
        "post_count_3mo": 275,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.241,
        "salary_delta_3mo": 0.1538,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "React",
        "role_count": 95,
        "company_count": 92,
        "salary_post_count": 28,
        "salary_transparency_rate": 0.2947,
        "salary_job_count": 16,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 170000,
        "remote_count": 47,
        "ai_post_count": 65,
        "demand_share": 0.2411,
        "post_count_3mo": 250,
        "salary_p50_3mo": 152000,
        "demand_delta_3mo": 0.338,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Python",
        "role_count": 91,
        "company_count": 86,
        "salary_post_count": 30,
        "salary_transparency_rate": 0.3297,
        "salary_job_count": 12,
        "salary_p50": 150000,
        "salary_p75": 165000,
        "salary_p90": 170000,
        "remote_count": 44,
        "ai_post_count": 70,
        "demand_share": 0.231,
        "post_count_3mo": 242,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0341,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "AWS",
        "role_count": 61,
        "company_count": 57,
        "salary_post_count": 26,
        "salary_transparency_rate": 0.4262,
        "salary_job_count": 15,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 35,
        "ai_post_count": 42,
        "demand_share": 0.1548,
        "post_count_3mo": 143,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2449,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Machine Learning",
        "role_count": 61,
        "company_count": 56,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.2951,
        "salary_job_count": 6,
        "salary_p50": 94900,
        "salary_p75": 150000,
        "salary_p90": 170000,
        "remote_count": 24,
        "ai_post_count": 61,
        "demand_share": 0.1548,
        "post_count_3mo": 167,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.3556,
        "salary_delta_3mo": -0.2092,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "PostgreSQL",
        "role_count": 60,
        "company_count": 56,
        "salary_post_count": 24,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 10,
        "salary_p50": 140000,
        "salary_p75": 160000,
        "salary_p90": 180000,
        "remote_count": 36,
        "ai_post_count": 40,
        "demand_share": 0.1523,
        "post_count_3mo": 152,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.3636,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Frontend",
        "role_count": 55,
        "company_count": 54,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.3455,
        "salary_job_count": 12,
        "salary_p50": 121920,
        "salary_p75": 165000,
        "salary_p90": 170000,
        "remote_count": 30,
        "ai_post_count": 35,
        "demand_share": 0.1396,
        "post_count_3mo": 157,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.1458,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Golang",
        "role_count": 51,
        "company_count": 47,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.3137,
        "salary_job_count": 6,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 30,
        "ai_post_count": 30,
        "demand_share": 0.1294,
        "post_count_3mo": 128,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.3077,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Node.js",
        "role_count": 42,
        "company_count": 36,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.3571,
        "salary_job_count": 8,
        "salary_p50": 140000,
        "salary_p75": 160000,
        "salary_p90": 165000,
        "remote_count": 27,
        "ai_post_count": 27,
        "demand_share": 0.1066,
        "post_count_3mo": 108,
        "salary_p50_3mo": 158750,
        "demand_delta_3mo": 0.3548,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "DevOps",
        "role_count": 30,
        "company_count": 30,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 133000,
        "salary_p75": 133000,
        "salary_p90": 133000,
        "remote_count": 21,
        "ai_post_count": 15,
        "demand_share": 0.0761,
        "post_count_3mo": 79,
        "salary_p50_3mo": 133000,
        "demand_delta_3mo": 0.4286,
        "salary_delta_3mo": -0.1133,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Kubernetes",
        "role_count": 28,
        "company_count": 27,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 20,
        "ai_post_count": 19,
        "demand_share": 0.0711,
        "post_count_3mo": 79,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.0345,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "LLM",
        "role_count": 27,
        "company_count": 25,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 4,
        "salary_p50": 80000,
        "salary_p75": 112000,
        "salary_p90": 112000,
        "remote_count": 15,
        "ai_post_count": 27,
        "demand_share": 0.0685,
        "post_count_3mo": 74,
        "salary_p50_3mo": 165000,
        "demand_delta_3mo": 0.1739,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "GitHub",
        "role_count": 25,
        "company_count": 23,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.36,
        "salary_job_count": 6,
        "salary_p50": 97200,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 13,
        "ai_post_count": 16,
        "demand_share": 0.0635,
        "post_count_3mo": 53,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.3889,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Next.js",
        "role_count": 24,
        "company_count": 24,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 6,
        "salary_p50": 71280,
        "salary_p75": 160000,
        "salary_p90": 165000,
        "remote_count": 11,
        "ai_post_count": 19,
        "demand_share": 0.0609,
        "post_count_3mo": 61,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.8462,
        "salary_delta_3mo": -0.5401,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Docker",
        "role_count": 21,
        "company_count": 21,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.381,
        "salary_job_count": 6,
        "salary_p50": 100000,
        "salary_p75": 120000,
        "salary_p90": 140000,
        "remote_count": 11,
        "ai_post_count": 14,
        "demand_share": 0.0533,
        "post_count_3mo": 53,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.3125,
        "salary_delta_3mo": -0.2308,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Rust",
        "role_count": 21,
        "company_count": 20,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 4,
        "salary_p50": 121920,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 16,
        "ai_post_count": 9,
        "demand_share": 0.0533,
        "post_count_3mo": 62,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1923,
        "salary_delta_3mo": -0.3904,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "GCP",
        "role_count": 20,
        "company_count": 19,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 5,
        "salary_p50": 82550,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 12,
        "ai_post_count": 14,
        "demand_share": 0.0508,
        "post_count_3mo": 59,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.5385,
        "salary_delta_3mo": 0.1007,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "SaaS",
        "role_count": 19,
        "company_count": 16,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4211,
        "salary_job_count": 6,
        "salary_p50": 130000,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 16,
        "ai_post_count": 8,
        "demand_share": 0.0482,
        "post_count_3mo": 45,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.0556,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "JavaScript",
        "role_count": 18,
        "company_count": 17,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 13,
        "ai_post_count": 8,
        "demand_share": 0.0457,
        "post_count_3mo": 50,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Terraform",
        "role_count": 17,
        "company_count": 17,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4706,
        "salary_job_count": 5,
        "salary_p50": 100000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 13,
        "ai_post_count": 9,
        "demand_share": 0.0431,
        "post_count_3mo": 42,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 1.125,
        "salary_delta_3mo": -0.2857,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "UI",
        "role_count": 17,
        "company_count": 17,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2353,
        "salary_job_count": 2,
        "salary_p50": 65700,
        "salary_p75": 65700,
        "salary_p90": 65700,
        "remote_count": 13,
        "ai_post_count": 10,
        "demand_share": 0.0431,
        "post_count_3mo": 43,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0.3077,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "UX",
        "role_count": 17,
        "company_count": 17,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2941,
        "salary_job_count": 2,
        "salary_p50": 65700,
        "salary_p75": 65700,
        "salary_p90": 65700,
        "remote_count": 9,
        "ai_post_count": 9,
        "demand_share": 0.0431,
        "post_count_3mo": 49,
        "salary_p50_3mo": 129233,
        "demand_delta_3mo": 0.1333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "API",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 4,
        "salary_p50": 81000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 11,
        "ai_post_count": 11,
        "demand_share": 0.0406,
        "post_count_3mo": 52,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Java",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 9,
        "ai_post_count": 9,
        "demand_share": 0.0406,
        "post_count_3mo": 41,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Android",
        "role_count": 15,
        "company_count": 13,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1333,
        "salary_job_count": 1,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 9,
        "ai_post_count": 11,
        "demand_share": 0.0381,
        "post_count_3mo": 35,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": 0.875,
        "salary_delta_3mo": -0.4286,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "B2B",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.5333,
        "salary_job_count": 5,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 8,
        "demand_share": 0.0381,
        "post_count_3mo": 30,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "iOS",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 14,
        "demand_share": 0.0381,
        "post_count_3mo": 33,
        "salary_p50_3mo": 152000,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Ruby on Rails",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 10,
        "ai_post_count": 4,
        "demand_share": 0.0355,
        "post_count_3mo": 44,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Linux",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0769,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.033,
        "post_count_3mo": 36,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": 0.4444,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "GraphQL",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0305,
        "post_count_3mo": 27,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": -0.0968,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "CI/CD",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 9,
        "ai_post_count": 8,
        "demand_share": 0.0279,
        "post_count_3mo": 21,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": 10,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "SQL",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4545,
        "salary_job_count": 3,
        "salary_p50": 158750,
        "salary_p75": 158750,
        "salary_p90": 158750,
        "remote_count": 8,
        "ai_post_count": 8,
        "demand_share": 0.0279,
        "post_count_3mo": 34,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0.2222,
        "salary_delta_3mo": 0.0583,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Azure",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 3,
        "salary_p50": 82550,
        "salary_p75": 82550,
        "salary_p90": 82550,
        "remote_count": 5,
        "ai_post_count": 7,
        "demand_share": 0.0254,
        "post_count_3mo": 23,
        "salary_p50_3mo": 94900,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": 0.1793,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "C#",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0254,
        "post_count_3mo": 20,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": 0.25,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "React Native",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.0254,
        "post_count_3mo": 33,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Web3",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 7,
        "ai_post_count": 2,
        "demand_share": 0.0254,
        "post_count_3mo": 31,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.6,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "FastAPI",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 9,
        "demand_share": 0.0228,
        "post_count_3mo": 26,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.2857,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Vue.js",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5556,
        "salary_job_count": 3,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0228,
        "post_count_3mo": 22,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.1818,
        "salary_delta_3mo": -0.2,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "C++",
        "role_count": 8,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0203,
        "post_count_3mo": 36,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Django",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0203,
        "post_count_3mo": 22,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1111,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "MySQL",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.7143,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.0178,
        "post_count_3mo": 19,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "SDK",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 4,
        "ai_post_count": 6,
        "demand_share": 0.0178,
        "post_count_3mo": 19,
        "salary_p50_3mo": 135000,
        "demand_delta_3mo": 2.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Svelte",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0178,
        "post_count_3mo": 8,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Kafka",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0152,
        "post_count_3mo": 15,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "MongoDB",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0152,
        "post_count_3mo": 12,
        "salary_p50_3mo": 190000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Redis",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 71280,
        "salary_p75": 71280,
        "salary_p90": 71280,
        "remote_count": 1,
        "ai_post_count": 5,
        "demand_share": 0.0152,
        "post_count_3mo": 24,
        "salary_p50_3mo": 165000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.5248,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Tailwind CSS",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0152,
        "post_count_3mo": 15,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": 0.6,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "CSS",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.8,
        "salary_job_count": 1,
        "salary_p50": 85800,
        "salary_p75": 85800,
        "salary_p90": 85800,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0127,
        "post_count_3mo": 7,
        "salary_p50_3mo": 85800,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": -0.285,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "HTML",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0127,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "NLP",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 3,
        "ai_post_count": 5,
        "demand_share": 0.0127,
        "post_count_3mo": 15,
        "salary_p50_3mo": 94900,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": -0.3333,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "PyTorch",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 5,
        "demand_share": 0.0127,
        "post_count_3mo": 21,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "GitLab",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 97200,
        "salary_p75": 97200,
        "salary_p90": 97200,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0102,
        "post_count_3mo": 9,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "PHP",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0102,
        "post_count_3mo": 7,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": 3.1667,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Scala",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0102,
        "post_count_3mo": 6,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": ".NET",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 114300,
        "salary_p75": 114300,
        "salary_p90": 114300,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0076,
        "post_count_3mo": 7,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "ECS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 3,
        "salary_transparency_rate": 1,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0076,
        "post_count_3mo": 5,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Elixir",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0076,
        "post_count_3mo": 10,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "MLOps",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 92500,
        "salary_p75": 92500,
        "salary_p90": 92500,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0076,
        "post_count_3mo": 8,
        "salary_p50_3mo": 94900,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Spring",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0076,
        "post_count_3mo": 5,
        "salary_p50_3mo": 64800,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Windows",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0076,
        "post_count_3mo": 10,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "macOS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0076,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Angular",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0051,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "CLI",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0051,
        "post_count_3mo": 4,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Clojure",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0051,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "OCaml",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 97200,
        "salary_p75": 97200,
        "salary_p90": 97200,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0051,
        "post_count_3mo": 3,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "WebAssembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 158750,
        "salary_p75": 158750,
        "salary_p90": 158750,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0051,
        "post_count_3mo": 4,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Elasticsearch",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 190000,
        "salary_p75": 190000,
        "salary_p90": 190000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 6,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": 0.3571,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Flutter",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 3,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "OCR",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 3,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "PaaS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 5,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "RabbitMQ",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 3,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 5,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "TensorFlow",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-11",
        "tech": "jQuery",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Artificial Intelligence",
        "role_count": 159,
        "company_count": 150,
        "salary_post_count": 39,
        "salary_transparency_rate": 0.2453,
        "salary_job_count": 22,
        "salary_p50": 150000,
        "salary_p75": 170000,
        "salary_p90": 190000,
        "remote_count": 63,
        "ai_post_count": 159,
        "demand_share": 0.4663,
        "post_count_3mo": 437,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1277,
        "salary_delta_3mo": 0.0345,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Full Stack",
        "role_count": 84,
        "company_count": 78,
        "salary_post_count": 26,
        "salary_transparency_rate": 0.3095,
        "salary_job_count": 14,
        "salary_p50": 135000,
        "salary_p75": 160000,
        "salary_p90": 170000,
        "remote_count": 48,
        "ai_post_count": 53,
        "demand_share": 0.2463,
        "post_count_3mo": 264,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1683,
        "salary_delta_3mo": 0.0385,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "TypeScript",
        "role_count": 81,
        "company_count": 76,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.2469,
        "salary_job_count": 8,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 170000,
        "remote_count": 40,
        "ai_post_count": 52,
        "demand_share": 0.2375,
        "post_count_3mo": 255,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.0357,
        "salary_delta_3mo": 0.1029,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "React",
        "role_count": 77,
        "company_count": 74,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.2597,
        "salary_job_count": 12,
        "salary_p50": 152000,
        "salary_p75": 170000,
        "salary_p90": 175000,
        "remote_count": 36,
        "ai_post_count": 48,
        "demand_share": 0.2258,
        "post_count_3mo": 226,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0845,
        "salary_delta_3mo": 0.1176,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Python",
        "role_count": 76,
        "company_count": 71,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.1711,
        "salary_job_count": 8,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 165000,
        "remote_count": 36,
        "ai_post_count": 49,
        "demand_share": 0.2229,
        "post_count_3mo": 239,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.0067,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Backend",
        "role_count": 75,
        "company_count": 71,
        "salary_post_count": 23,
        "salary_transparency_rate": 0.3067,
        "salary_job_count": 12,
        "salary_p50": 135000,
        "salary_p75": 152000,
        "salary_p90": 160000,
        "remote_count": 46,
        "ai_post_count": 43,
        "demand_share": 0.2199,
        "post_count_3mo": 231,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2788,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Machine Learning",
        "role_count": 60,
        "company_count": 57,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.2167,
        "salary_job_count": 7,
        "salary_p50": 170000,
        "salary_p75": 180000,
        "salary_p90": 190000,
        "remote_count": 21,
        "ai_post_count": 60,
        "demand_share": 0.176,
        "post_count_3mo": 151,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.3043,
        "salary_delta_3mo": 0.0625,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Frontend",
        "role_count": 49,
        "company_count": 45,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 9,
        "salary_p50": 135000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 24,
        "ai_post_count": 29,
        "demand_share": 0.1437,
        "post_count_3mo": 150,
        "salary_p50_3mo": 135000,
        "demand_delta_3mo": -0.1091,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "PostgreSQL",
        "role_count": 47,
        "company_count": 45,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.2979,
        "salary_job_count": 11,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 27,
        "ai_post_count": 26,
        "demand_share": 0.1378,
        "post_count_3mo": 136,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.0217,
        "salary_delta_3mo": 0.0067,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "AWS",
        "role_count": 43,
        "company_count": 41,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.3488,
        "salary_job_count": 12,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 165000,
        "remote_count": 26,
        "ai_post_count": 24,
        "demand_share": 0.1261,
        "post_count_3mo": 131,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2182,
        "salary_delta_3mo": 0.1628,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Golang",
        "role_count": 36,
        "company_count": 31,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.3611,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 22,
        "ai_post_count": 19,
        "demand_share": 0.1056,
        "post_count_3mo": 116,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2174,
        "salary_delta_3mo": 0.1029,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Node.js",
        "role_count": 35,
        "company_count": 32,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2286,
        "salary_job_count": 5,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 18,
        "ai_post_count": 22,
        "demand_share": 0.1026,
        "post_count_3mo": 97,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2069,
        "salary_delta_3mo": 0.6667,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Kubernetes",
        "role_count": 26,
        "company_count": 24,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.4231,
        "salary_job_count": 7,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 152000,
        "remote_count": 21,
        "ai_post_count": 9,
        "demand_share": 0.0762,
        "post_count_3mo": 80,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2973,
        "salary_delta_3mo": 0.0294,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "DevOps",
        "role_count": 25,
        "company_count": 24,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.36,
        "salary_job_count": 4,
        "salary_p50": 101088,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 21,
        "ai_post_count": 10,
        "demand_share": 0.0733,
        "post_count_3mo": 70,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1379,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "LLM",
        "role_count": 24,
        "company_count": 22,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 4,
        "salary_p50": 165000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 7,
        "ai_post_count": 24,
        "demand_share": 0.0704,
        "post_count_3mo": 70,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2941,
        "salary_delta_3mo": -0.175,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Rust",
        "role_count": 23,
        "company_count": 23,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.1739,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 17,
        "ai_post_count": 9,
        "demand_share": 0.0674,
        "post_count_3mo": 67,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": -0.08,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "API",
        "role_count": 20,
        "company_count": 18,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 7,
        "salary_p50": 108900,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 14,
        "ai_post_count": 9,
        "demand_share": 0.0587,
        "post_count_3mo": 52,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.3103,
        "salary_delta_3mo": -0.3194,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "GCP",
        "role_count": 20,
        "company_count": 19,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.35,
        "salary_job_count": 7,
        "salary_p50": 120000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 10,
        "ai_post_count": 13,
        "demand_share": 0.0587,
        "post_count_3mo": 52,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.1111,
        "salary_delta_3mo": -0.1176,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "SaaS",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 13,
        "ai_post_count": 12,
        "demand_share": 0.0528,
        "post_count_3mo": 44,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.2857,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "UX",
        "role_count": 18,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 5,
        "salary_p50": 127000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 9,
        "ai_post_count": 12,
        "demand_share": 0.0528,
        "post_count_3mo": 47,
        "salary_p50_3mo": 129233,
        "demand_delta_3mo": 0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Docker",
        "role_count": 17,
        "company_count": 16,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.5294,
        "salary_job_count": 7,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 13,
        "ai_post_count": 4,
        "demand_share": 0.0499,
        "post_count_3mo": 48,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.2143,
        "salary_delta_3mo": 0.0853,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "JavaScript",
        "role_count": 17,
        "company_count": 17,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2941,
        "salary_job_count": 2,
        "salary_p50": 85000,
        "salary_p75": 85000,
        "salary_p90": 85000,
        "remote_count": 11,
        "ai_post_count": 8,
        "demand_share": 0.0499,
        "post_count_3mo": 56,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": -0.0556,
        "salary_delta_3mo": -0.15,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "GitHub",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 4,
        "salary_p50": 101088,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 9,
        "ai_post_count": 7,
        "demand_share": 0.0469,
        "post_count_3mo": 46,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.36,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Next.js",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.1875,
        "salary_job_count": 1,
        "salary_p50": 70200,
        "salary_p75": 70200,
        "salary_p90": 70200,
        "remote_count": 5,
        "ai_post_count": 12,
        "demand_share": 0.0469,
        "post_count_3mo": 50,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.2308,
        "salary_delta_3mo": -0.61,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Ruby on Rails",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 4,
        "salary_p50": 130000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.044,
        "post_count_3mo": 50,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.172,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Java",
        "role_count": 14,
        "company_count": 12,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0411,
        "post_count_3mo": 33,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.5556,
        "salary_delta_3mo": -0.125,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "React Native",
        "role_count": 14,
        "company_count": 12,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0714,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 8,
        "ai_post_count": 9,
        "demand_share": 0.0411,
        "post_count_3mo": 28,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "UI",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 1,
        "salary_p50": 127000,
        "salary_p75": 127000,
        "salary_p90": 127000,
        "remote_count": 6,
        "ai_post_count": 9,
        "demand_share": 0.0411,
        "post_count_3mo": 39,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Android",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 3,
        "salary_p50": 168480,
        "salary_p75": 168480,
        "salary_p90": 168480,
        "remote_count": 9,
        "ai_post_count": 3,
        "demand_share": 0.0381,
        "post_count_3mo": 28,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1818,
        "salary_delta_3mo": -0.064,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "C++",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0381,
        "post_count_3mo": 40,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0833,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "SQL",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 3,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 9,
        "ai_post_count": 5,
        "demand_share": 0.0381,
        "post_count_3mo": 32,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.3,
        "salary_delta_3mo": -0.04,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Web3",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 11,
        "ai_post_count": 1,
        "demand_share": 0.0381,
        "post_count_3mo": 31,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": 1.1667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Linux",
        "role_count": 12,
        "company_count": 10,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0833,
        "salary_job_count": 1,
        "salary_p50": 108000,
        "salary_p75": 108000,
        "salary_p90": 108000,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0352,
        "post_count_3mo": 32,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Terraform",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.5833,
        "salary_job_count": 5,
        "salary_p50": 120000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 9,
        "ai_post_count": 5,
        "demand_share": 0.0352,
        "post_count_3mo": 33,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2941,
        "salary_delta_3mo": -0.25,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "iOS",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3636,
        "salary_job_count": 2,
        "salary_p50": 152000,
        "salary_p75": 152000,
        "salary_p90": 152000,
        "remote_count": 7,
        "ai_post_count": 7,
        "demand_share": 0.0323,
        "post_count_3mo": 24,
        "salary_p50_3mo": 152000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "B2B",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 6,
        "demand_share": 0.0293,
        "post_count_3mo": 21,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "FastAPI",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0293,
        "post_count_3mo": 24,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": -0.0909,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "GraphQL",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0264,
        "post_count_3mo": 21,
        "salary_p50_3mo": 113150,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "PyTorch",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1111,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 9,
        "demand_share": 0.0264,
        "post_count_3mo": 23,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Redis",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0264,
        "post_count_3mo": 24,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "SDK",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 3,
        "ai_post_count": 6,
        "demand_share": 0.0264,
        "post_count_3mo": 14,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.8,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "CI/CD",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 101088,
        "salary_p75": 101088,
        "salary_p90": 101088,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.0235,
        "post_count_3mo": 11,
        "salary_p50_3mo": 101088,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.4224,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Django",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5714,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0205,
        "post_count_3mo": 23,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.4167,
        "salary_delta_3mo": 0.5,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "MySQL",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0176,
        "post_count_3mo": 16,
        "salary_p50_3mo": 120450,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.4,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "NLP",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 165000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 2,
        "ai_post_count": 6,
        "demand_share": 0.0176,
        "post_count_3mo": 13,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Vue.js",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0176,
        "post_count_3mo": 24,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.4545,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Azure",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 5,
        "demand_share": 0.0147,
        "post_count_3mo": 19,
        "salary_p50_3mo": 94900,
        "demand_delta_3mo": -0.4444,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "C#",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 108000,
        "salary_p75": 108000,
        "salary_p90": 108000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0147,
        "post_count_3mo": 14,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.2,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Kafka",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0117,
        "post_count_3mo": 17,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": -0.1946,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Tailwind CSS",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 85000,
        "salary_p75": 85000,
        "salary_p90": 85000,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0117,
        "post_count_3mo": 13,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": ".NET",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 108000,
        "salary_p75": 108000,
        "salary_p90": 108000,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0088,
        "post_count_3mo": 5,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": 0.2,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Flask",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0088,
        "post_count_3mo": 5,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "GitLab",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0088,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Solidity",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0088,
        "post_count_3mo": 4,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "TensorFlow",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0088,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Wasm",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0088,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Windows",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0088,
        "post_count_3mo": 10,
        "salary_p50_3mo": 87500,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Elasticsearch",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0059,
        "post_count_3mo": 7,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": -0.0604,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "MLOps",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0059,
        "post_count_3mo": 7,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "MongoDB",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0059,
        "post_count_3mo": 13,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "OCR",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0059,
        "post_count_3mo": 2,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "PaaS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0059,
        "post_count_3mo": 4,
        "salary_p50_3mo": 94900,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "RabbitMQ",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 108000,
        "salary_p75": 108000,
        "salary_p90": 108000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0059,
        "post_count_3mo": 2,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Spring",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 64800,
        "salary_p75": 64800,
        "salary_p90": 64800,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0059,
        "post_count_3mo": 2,
        "salary_p50_3mo": 64800,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Assembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0029,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0029,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Clojure",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0029,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 2,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "ECS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 3,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Elixir",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0029,
        "post_count_3mo": 10,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "FFmpeg",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0029,
        "post_count_3mo": 3,
        "salary_p50_3mo": 113400,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Flutter",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 2,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "HTML",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 6,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Haskell",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "OpenCV",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0029,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Scala",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 3,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "Svelte",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0029,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-10",
        "tech": "WebAssembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 4,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Artificial Intelligence",
        "role_count": 135,
        "company_count": 129,
        "salary_post_count": 46,
        "salary_transparency_rate": 0.3407,
        "salary_job_count": 20,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 180000,
        "remote_count": 50,
        "ai_post_count": 135,
        "demand_share": 0.45,
        "post_count_3mo": 419,
        "salary_p50_3mo": 149000,
        "demand_delta_3mo": -0.1118,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "TypeScript",
        "role_count": 91,
        "company_count": 86,
        "salary_post_count": 32,
        "salary_transparency_rate": 0.3516,
        "salary_job_count": 15,
        "salary_p50": 130000,
        "salary_p75": 170000,
        "salary_p90": 180000,
        "remote_count": 46,
        "ai_post_count": 45,
        "demand_share": 0.3033,
        "post_count_3mo": 258,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.1235,
        "salary_delta_3mo": -0.1156,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Full Stack",
        "role_count": 88,
        "company_count": 81,
        "salary_post_count": 33,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 15,
        "salary_p50": 160000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 42,
        "ai_post_count": 51,
        "demand_share": 0.2933,
        "post_count_3mo": 281,
        "salary_p50_3mo": 133350,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Backend",
        "role_count": 80,
        "company_count": 75,
        "salary_post_count": 21,
        "salary_transparency_rate": 0.2625,
        "salary_job_count": 8,
        "salary_p50": 130000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 46,
        "ai_post_count": 43,
        "demand_share": 0.2667,
        "post_count_3mo": 260,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.1398,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "React",
        "role_count": 78,
        "company_count": 74,
        "salary_post_count": 27,
        "salary_transparency_rate": 0.3462,
        "salary_job_count": 13,
        "salary_p50": 170000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 38,
        "ai_post_count": 39,
        "demand_share": 0.26,
        "post_count_3mo": 220,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0714,
        "salary_delta_3mo": 0.1333,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Python",
        "role_count": 75,
        "company_count": 69,
        "salary_post_count": 24,
        "salary_transparency_rate": 0.32,
        "salary_job_count": 13,
        "salary_p50": 130000,
        "salary_p75": 160000,
        "salary_p90": 180000,
        "remote_count": 35,
        "ai_post_count": 44,
        "demand_share": 0.25,
        "post_count_3mo": 239,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.1573,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Frontend",
        "role_count": 53,
        "company_count": 48,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.3396,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 25,
        "ai_post_count": 30,
        "demand_share": 0.1767,
        "post_count_3mo": 156,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.0702,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Machine Learning",
        "role_count": 46,
        "company_count": 44,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.2826,
        "salary_job_count": 8,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 17,
        "ai_post_count": 46,
        "demand_share": 0.1533,
        "post_count_3mo": 137,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": -0.0213,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "PostgreSQL",
        "role_count": 45,
        "company_count": 44,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.3111,
        "salary_job_count": 8,
        "salary_p50": 130000,
        "salary_p75": 170000,
        "salary_p90": 180000,
        "remote_count": 20,
        "ai_post_count": 27,
        "demand_share": 0.15,
        "post_count_3mo": 135,
        "salary_p50_3mo": 149000,
        "demand_delta_3mo": -0.1964,
        "salary_delta_3mo": -0.0714,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Golang",
        "role_count": 41,
        "company_count": 39,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.2439,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 22,
        "ai_post_count": 21,
        "demand_share": 0.1367,
        "post_count_3mo": 126,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.1458,
        "salary_delta_3mo": -0.4118,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "AWS",
        "role_count": 39,
        "company_count": 39,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 10,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 180000,
        "remote_count": 18,
        "ai_post_count": 24,
        "demand_share": 0.13,
        "post_count_3mo": 143,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.35,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Node.js",
        "role_count": 31,
        "company_count": 26,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.3871,
        "salary_job_count": 7,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 200000,
        "remote_count": 15,
        "ai_post_count": 14,
        "demand_share": 0.1033,
        "post_count_3mo": 91,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0606,
        "salary_delta_3mo": 0.2857,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Kubernetes",
        "role_count": 25,
        "company_count": 24,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.48,
        "salary_job_count": 7,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 150000,
        "remote_count": 15,
        "ai_post_count": 11,
        "demand_share": 0.0833,
        "post_count_3mo": 91,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "DevOps",
        "role_count": 24,
        "company_count": 23,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 16,
        "ai_post_count": 10,
        "demand_share": 0.08,
        "post_count_3mo": 74,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "LLM",
        "role_count": 23,
        "company_count": 23,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3043,
        "salary_job_count": 3,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 11,
        "ai_post_count": 23,
        "demand_share": 0.0767,
        "post_count_3mo": 80,
        "salary_p50_3mo": 133350,
        "demand_delta_3mo": -0.0417,
        "salary_delta_3mo": 0.2,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Next.js",
        "role_count": 21,
        "company_count": 21,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 129600,
        "salary_p90": 129600,
        "remote_count": 8,
        "ai_post_count": 13,
        "demand_share": 0.07,
        "post_count_3mo": 47,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": 0.05,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "GCP",
        "role_count": 19,
        "company_count": 17,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4211,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 152000,
        "salary_p90": 152000,
        "remote_count": 7,
        "ai_post_count": 11,
        "demand_share": 0.0633,
        "post_count_3mo": 50,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.1176,
        "salary_delta_3mo": 0.2,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Rust",
        "role_count": 18,
        "company_count": 17,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2778,
        "salary_job_count": 3,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 14,
        "ai_post_count": 9,
        "demand_share": 0.06,
        "post_count_3mo": 69,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": -0.4194,
        "salary_delta_3mo": 0.2,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "API",
        "role_count": 16,
        "company_count": 13,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 7,
        "ai_post_count": 8,
        "demand_share": 0.0533,
        "post_count_3mo": 61,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3043,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "C++",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 9,
        "ai_post_count": 3,
        "demand_share": 0.05,
        "post_count_3mo": 39,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1538,
        "salary_delta_3mo": -0.4,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Docker",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4667,
        "salary_job_count": 4,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 7,
        "ai_post_count": 8,
        "demand_share": 0.05,
        "post_count_3mo": 45,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.2105,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "JavaScript",
        "role_count": 15,
        "company_count": 13,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1333,
        "salary_job_count": 1,
        "salary_p50": 129600,
        "salary_p75": 129600,
        "salary_p90": 129600,
        "remote_count": 9,
        "ai_post_count": 5,
        "demand_share": 0.05,
        "post_count_3mo": 57,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": -0.2105,
        "salary_delta_3mo": 0.62,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Ruby on Rails",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 8,
        "ai_post_count": 3,
        "demand_share": 0.05,
        "post_count_3mo": 50,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1176,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "UX",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.5714,
        "salary_job_count": 4,
        "salary_p50": 129233,
        "salary_p75": 152400,
        "salary_p90": 152400,
        "remote_count": 10,
        "ai_post_count": 6,
        "demand_share": 0.0467,
        "post_count_3mo": 43,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5556,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Terraform",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.6154,
        "salary_job_count": 3,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 6,
        "ai_post_count": 8,
        "demand_share": 0.0433,
        "post_count_3mo": 38,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.3158,
        "salary_delta_3mo": -0.2778,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "GitHub",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 4,
        "ai_post_count": 10,
        "demand_share": 0.04,
        "post_count_3mo": 55,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.4286,
        "salary_delta_3mo": 2.75,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "UI",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 65000,
        "salary_p75": 65000,
        "salary_p90": 65000,
        "remote_count": 8,
        "ai_post_count": 6,
        "demand_share": 0.04,
        "post_count_3mo": 33,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Java",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0367,
        "post_count_3mo": 28,
        "salary_p50_3mo": 129000,
        "demand_delta_3mo": -0.1538,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Linux",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0909,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0367,
        "post_count_3mo": 30,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.3125,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "SQL",
        "role_count": 10,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 1,
        "salary_p50": 127000,
        "salary_p75": 127000,
        "salary_p90": 127000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0333,
        "post_count_3mo": 29,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": -0.8845,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "React Native",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.03,
        "post_count_3mo": 21,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3077,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Redis",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 170000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 2,
        "ai_post_count": 5,
        "demand_share": 0.03,
        "post_count_3mo": 24,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": 0.1333,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Azure",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 2,
        "salary_p50": 94900,
        "salary_p75": 94900,
        "salary_p90": 94900,
        "remote_count": 4,
        "ai_post_count": 6,
        "demand_share": 0.0267,
        "post_count_3mo": 23,
        "salary_p50_3mo": 94900,
        "demand_delta_3mo": 0.6,
        "salary_delta_3mo": -0.2408,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "SaaS",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 5,
        "demand_share": 0.0267,
        "post_count_3mo": 40,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": -0.3846,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Web3",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.625,
        "salary_job_count": 2,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0267,
        "post_count_3mo": 24,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Android",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0233,
        "post_count_3mo": 26,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.5882,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Django",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0233,
        "post_count_3mo": 28,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.3,
        "salary_delta_3mo": 0.2,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "FastAPI",
        "role_count": 7,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 3,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 3,
        "ai_post_count": 5,
        "demand_share": 0.0233,
        "post_count_3mo": 22,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.4167,
        "salary_delta_3mo": -0.2,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "PyTorch",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 2,
        "ai_post_count": 7,
        "demand_share": 0.0233,
        "post_count_3mo": 20,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2222,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Vue.js",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5714,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 7,
        "ai_post_count": 1,
        "demand_share": 0.0233,
        "post_count_3mo": 29,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "iOS",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 1,
        "salary_p50": 152000,
        "salary_p75": 152000,
        "salary_p90": 152000,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.0233,
        "post_count_3mo": 24,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.4615,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Elixir",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.02,
        "post_count_3mo": 12,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "GraphQL",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.02,
        "post_count_3mo": 18,
        "salary_p50_3mo": 157000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "MySQL",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 94900,
        "salary_p75": 94900,
        "salary_p90": 94900,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.02,
        "post_count_3mo": 16,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": -0.3221,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "B2B",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.0167,
        "post_count_3mo": 19,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": -0.375,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "C#",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0167,
        "post_count_3mo": 14,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Kafka",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0167,
        "post_count_3mo": 21,
        "salary_p50_3mo": 149000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Tailwind CSS",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 170000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0167,
        "post_count_3mo": 15,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": -0.4444,
        "salary_delta_3mo": 0.1333,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "MongoDB",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0133,
        "post_count_3mo": 15,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.6,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "NLP",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 94900,
        "salary_p75": 94900,
        "salary_p90": 94900,
        "remote_count": 1,
        "ai_post_count": 4,
        "demand_share": 0.0133,
        "post_count_3mo": 9,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Windows",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0133,
        "post_count_3mo": 11,
        "salary_p50_3mo": 87500,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Elasticsearch",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.01,
        "post_count_3mo": 8,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "MLOps",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 3,
        "salary_transparency_rate": 1,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.01,
        "post_count_3mo": 6,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "PHP",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.01,
        "post_count_3mo": 15,
        "salary_p50_3mo": 36000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "SDK",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.01,
        "post_count_3mo": 10,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Wasm",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.01,
        "post_count_3mo": 7,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Angular",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0067,
        "post_count_3mo": 6,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "CI/CD",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0067,
        "post_count_3mo": 11,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "CSS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0067,
        "post_count_3mo": 5,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Clojure",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0067,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "GitLab",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0067,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "HTML",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0067,
        "post_count_3mo": 5,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "PaaS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 94900,
        "salary_p75": 94900,
        "salary_p90": 94900,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0067,
        "post_count_3mo": 3,
        "salary_p50_3mo": 94900,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": ".NET",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 7,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 5,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 1,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "ECS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Flask",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 6,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": 1,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Flutter",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 1,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "OCaml",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Scala",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 3,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "TensorFlow",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-09",
        "tech": "WebAssembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 127000,
        "salary_p75": 127000,
        "salary_p90": 127000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 6,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Artificial Intelligence",
        "role_count": 143,
        "company_count": 133,
        "salary_post_count": 49,
        "salary_transparency_rate": 0.3427,
        "salary_job_count": 27,
        "salary_p50": 127000,
        "salary_p75": 150000,
        "salary_p90": 175000,
        "remote_count": 61,
        "ai_post_count": 143,
        "demand_share": 0.4658,
        "post_count_3mo": 436,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2435,
        "salary_delta_3mo": -0.365,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Full Stack",
        "role_count": 92,
        "company_count": 86,
        "salary_post_count": 27,
        "salary_transparency_rate": 0.2935,
        "salary_job_count": 15,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 48,
        "ai_post_count": 59,
        "demand_share": 0.2997,
        "post_count_3mo": 303,
        "salary_p50_3mo": 132080,
        "demand_delta_3mo": -0.098,
        "salary_delta_3mo": -0.0152,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Python",
        "role_count": 88,
        "company_count": 85,
        "salary_post_count": 28,
        "salary_transparency_rate": 0.3182,
        "salary_job_count": 15,
        "salary_p50": 120450,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 37,
        "ai_post_count": 58,
        "demand_share": 0.2866,
        "post_count_3mo": 253,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.2055,
        "salary_delta_3mo": -0.197,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "TypeScript",
        "role_count": 83,
        "company_count": 79,
        "salary_post_count": 29,
        "salary_transparency_rate": 0.3494,
        "salary_job_count": 15,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 156800,
        "remote_count": 38,
        "ai_post_count": 49,
        "demand_share": 0.2704,
        "post_count_3mo": 248,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.0122,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Backend",
        "role_count": 76,
        "company_count": 73,
        "salary_post_count": 26,
        "salary_transparency_rate": 0.3421,
        "salary_job_count": 14,
        "salary_p50": 130000,
        "salary_p75": 140000,
        "salary_p90": 170000,
        "remote_count": 47,
        "ai_post_count": 43,
        "demand_share": 0.2476,
        "post_count_3mo": 273,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.0732,
        "salary_delta_3mo": -0.35,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "React",
        "role_count": 71,
        "company_count": 68,
        "salary_post_count": 30,
        "salary_transparency_rate": 0.4225,
        "salary_job_count": 16,
        "salary_p50": 125000,
        "salary_p75": 150000,
        "salary_p90": 156000,
        "remote_count": 34,
        "ai_post_count": 43,
        "demand_share": 0.2313,
        "post_count_3mo": 226,
        "salary_p50_3mo": 147000,
        "demand_delta_3mo": -0.0274,
        "salary_delta_3mo": -0.1071,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "AWS",
        "role_count": 49,
        "company_count": 46,
        "salary_post_count": 22,
        "salary_transparency_rate": 0.449,
        "salary_job_count": 14,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 21,
        "ai_post_count": 37,
        "demand_share": 0.1596,
        "post_count_3mo": 164,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.3243,
        "salary_delta_3mo": 0.04,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Frontend",
        "role_count": 48,
        "company_count": 46,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 8,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 27,
        "ai_post_count": 27,
        "demand_share": 0.1564,
        "post_count_3mo": 160,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1273,
        "salary_delta_3mo": -0.0152,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Machine Learning",
        "role_count": 45,
        "company_count": 43,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 8,
        "salary_p50": 127000,
        "salary_p75": 140000,
        "salary_p90": 200000,
        "remote_count": 20,
        "ai_post_count": 45,
        "demand_share": 0.1466,
        "post_count_3mo": 138,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": -0.0625,
        "salary_delta_3mo": -0.5767,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "PostgreSQL",
        "role_count": 44,
        "company_count": 42,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.2955,
        "salary_job_count": 9,
        "salary_p50": 140000,
        "salary_p75": 170000,
        "salary_p90": 175000,
        "remote_count": 26,
        "ai_post_count": 28,
        "demand_share": 0.1433,
        "post_count_3mo": 146,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1892,
        "salary_delta_3mo": 0.1667,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Golang",
        "role_count": 39,
        "company_count": 37,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 8,
        "salary_p50": 87500,
        "salary_p75": 150000,
        "salary_p90": 156000,
        "remote_count": 20,
        "ai_post_count": 21,
        "demand_share": 0.127,
        "post_count_3mo": 133,
        "salary_p50_3mo": 126000,
        "demand_delta_3mo": -0.22,
        "salary_delta_3mo": -0.4281,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Node.js",
        "role_count": 31,
        "company_count": 31,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.4839,
        "salary_job_count": 8,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 14,
        "ai_post_count": 17,
        "demand_share": 0.101,
        "post_count_3mo": 93,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.1071,
        "salary_delta_3mo": -0.0714,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Kubernetes",
        "role_count": 29,
        "company_count": 26,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.5862,
        "salary_job_count": 10,
        "salary_p50": 130000,
        "salary_p75": 140000,
        "salary_p90": 156800,
        "remote_count": 15,
        "ai_post_count": 19,
        "demand_share": 0.0945,
        "post_count_3mo": 101,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1714,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Rust",
        "role_count": 26,
        "company_count": 26,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.1923,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 15,
        "ai_post_count": 13,
        "demand_share": 0.0847,
        "post_count_3mo": 82,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.1875,
        "salary_delta_3mo": -0.25,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "JavaScript",
        "role_count": 24,
        "company_count": 23,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2083,
        "salary_job_count": 3,
        "salary_p50": 108000,
        "salary_p75": 108000,
        "salary_p90": 108000,
        "remote_count": 14,
        "ai_post_count": 15,
        "demand_share": 0.0782,
        "post_count_3mo": 61,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.0769,
        "salary_delta_3mo": -0.1,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "LLM",
        "role_count": 23,
        "company_count": 23,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.4783,
        "salary_job_count": 5,
        "salary_p50": 120000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 14,
        "ai_post_count": 23,
        "demand_share": 0.0749,
        "post_count_3mo": 81,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.5333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "DevOps",
        "role_count": 21,
        "company_count": 19,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 13,
        "ai_post_count": 9,
        "demand_share": 0.0684,
        "post_count_3mo": 80,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1053,
        "salary_delta_3mo": -0.125,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Ruby on Rails",
        "role_count": 20,
        "company_count": 18,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.35,
        "salary_job_count": 5,
        "salary_p50": 130000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 12,
        "ai_post_count": 7,
        "demand_share": 0.0651,
        "post_count_3mo": 52,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": 0.04,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "GitHub",
        "role_count": 18,
        "company_count": 16,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 5,
        "salary_p50": 140000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 13,
        "ai_post_count": 11,
        "demand_share": 0.0586,
        "post_count_3mo": 64,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.0588,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "SaaS",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3889,
        "salary_job_count": 3,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 12,
        "ai_post_count": 9,
        "demand_share": 0.0586,
        "post_count_3mo": 45,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "API",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 9,
        "ai_post_count": 10,
        "demand_share": 0.0521,
        "post_count_3mo": 68,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1111,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Docker",
        "role_count": 16,
        "company_count": 14,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 9,
        "salary_p50": 113400,
        "salary_p75": 130000,
        "salary_p90": 140000,
        "remote_count": 6,
        "ai_post_count": 11,
        "demand_share": 0.0521,
        "post_count_3mo": 49,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.128,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "UX",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 2,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 9,
        "ai_post_count": 7,
        "demand_share": 0.0489,
        "post_count_3mo": 38,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "GCP",
        "role_count": 13,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 2,
        "salary_p50": 70000,
        "salary_p75": 70000,
        "salary_p90": 70000,
        "remote_count": 7,
        "ai_post_count": 9,
        "demand_share": 0.0423,
        "post_count_3mo": 48,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.2778,
        "salary_delta_3mo": -0.5333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Next.js",
        "role_count": 13,
        "company_count": 11,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 2,
        "salary_p50": 113150,
        "salary_p75": 113150,
        "salary_p90": 113150,
        "remote_count": 5,
        "ai_post_count": 9,
        "demand_share": 0.0423,
        "post_count_3mo": 46,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.1333,
        "salary_delta_3mo": -0.2457,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "UI",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 2,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 8,
        "ai_post_count": 8,
        "demand_share": 0.0423,
        "post_count_3mo": 31,
        "salary_p50_3mo": 170000,
        "demand_delta_3mo": 0.625,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "C++",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.0391,
        "post_count_3mo": 37,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": -0.0769,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Vue.js",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3636,
        "salary_job_count": 3,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 11,
        "ai_post_count": 5,
        "demand_share": 0.0358,
        "post_count_3mo": 29,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.0833,
        "salary_delta_3mo": 1.4,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Web3",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 2,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 8,
        "ai_post_count": 6,
        "demand_share": 0.0326,
        "post_count_3mo": 26,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Django",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.0293,
        "post_count_3mo": 31,
        "salary_p50_3mo": 106680,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": 0.6,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Linux",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1111,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0293,
        "post_count_3mo": 35,
        "salary_p50_3mo": 101600,
        "demand_delta_3mo": -0.3077,
        "salary_delta_3mo": -0.2157,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "SQL",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0293,
        "post_count_3mo": 31,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Android",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.625,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0261,
        "post_count_3mo": 36,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.6,
        "salary_delta_3mo": 0.0765,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Java",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0261,
        "post_count_3mo": 30,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2727,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Kafka",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.625,
        "salary_job_count": 2,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0261,
        "post_count_3mo": 21,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": -0.3182,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Terraform",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.625,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.0261,
        "post_count_3mo": 44,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.4667,
        "salary_delta_3mo": 0.12,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "FastAPI",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 1,
        "ai_post_count": 5,
        "demand_share": 0.0228,
        "post_count_3mo": 27,
        "salary_p50_3mo": 149000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": -0.125,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "MongoDB",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5714,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 3,
        "ai_post_count": 5,
        "demand_share": 0.0228,
        "post_count_3mo": 21,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.75,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "PyTorch",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 7,
        "demand_share": 0.0228,
        "post_count_3mo": 22,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1667,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Azure",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 70000,
        "salary_p75": 70000,
        "salary_p90": 70000,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0195,
        "post_count_3mo": 20,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": -0.5625,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "B2B",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 108000,
        "salary_p75": 108000,
        "salary_p90": 108000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0195,
        "post_count_3mo": 22,
        "salary_p50_3mo": 108000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "GraphQL",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 113150,
        "salary_p75": 113150,
        "salary_p90": 113150,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0195,
        "post_count_3mo": 18,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Redis",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.0195,
        "post_count_3mo": 21,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "iOS",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0195,
        "post_count_3mo": 30,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "PHP",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 36000,
        "salary_p75": 36000,
        "salary_p90": 36000,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0163,
        "post_count_3mo": 14,
        "salary_p50_3mo": 36000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": -0.28,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "React Native",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0163,
        "post_count_3mo": 25,
        "salary_p50_3mo": 99000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "C#",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.013,
        "post_count_3mo": 16,
        "salary_p50_3mo": 70200,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "MySQL",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 120450,
        "salary_p75": 120450,
        "salary_p90": 120450,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.013,
        "post_count_3mo": 15,
        "salary_p50_3mo": 120450,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": 0.0038,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Tailwind CSS",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 108000,
        "salary_p75": 108000,
        "salary_p90": 108000,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.013,
        "post_count_3mo": 19,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": -0.928,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "CSS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0098,
        "post_count_3mo": 3,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.3143,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Elixir",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0098,
        "post_count_3mo": 14,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "HTML",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0098,
        "post_count_3mo": 3,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.3143,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "NLP",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0098,
        "post_count_3mo": 6,
        "salary_p50_3mo": 120450,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Windows",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 87500,
        "salary_p75": 87500,
        "salary_p90": 87500,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0098,
        "post_count_3mo": 11,
        "salary_p50_3mo": 87500,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Clojure",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0065,
        "post_count_3mo": 6,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Elasticsearch",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0065,
        "post_count_3mo": 9,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "FFmpeg",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 113400,
        "salary_p75": 113400,
        "salary_p90": 113400,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0065,
        "post_count_3mo": 4,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "MLOps",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 2,
        "salary_p50": 120450,
        "salary_p75": 120450,
        "salary_p90": 120450,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0065,
        "post_count_3mo": 5,
        "salary_p50_3mo": 120450,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "SDK",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0065,
        "post_count_3mo": 13,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "WebAssembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0065,
        "post_count_3mo": 8,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": ".NET",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 8,
        "salary_p50_3mo": 70200,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Angular",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 5,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "CI/CD",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 17,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.9091,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 7,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "ECS",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 6,
        "salary_p50_3mo": 101600,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Flask",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 7,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "GitLab",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "NoSQL",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 2,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Scala",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "TensorFlow",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-08",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 6,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Artificial Intelligence",
        "role_count": 141,
        "company_count": 137,
        "salary_post_count": 54,
        "salary_transparency_rate": 0.383,
        "salary_job_count": 23,
        "salary_p50": 152400,
        "salary_p75": 175000,
        "salary_p90": 180000,
        "remote_count": 68,
        "ai_post_count": 141,
        "demand_share": 0.4234,
        "post_count_3mo": 408,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1102,
        "salary_delta_3mo": -0.238,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Backend",
        "role_count": 104,
        "company_count": 103,
        "salary_post_count": 36,
        "salary_transparency_rate": 0.3462,
        "salary_job_count": 15,
        "salary_p50": 140000,
        "salary_p75": 165000,
        "salary_p90": 175000,
        "remote_count": 61,
        "ai_post_count": 52,
        "demand_share": 0.3123,
        "post_count_3mo": 279,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1685,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Full Stack",
        "role_count": 101,
        "company_count": 96,
        "salary_post_count": 37,
        "salary_transparency_rate": 0.3663,
        "salary_job_count": 18,
        "salary_p50": 130000,
        "salary_p75": 172720,
        "salary_p90": 186624,
        "remote_count": 56,
        "ai_post_count": 52,
        "demand_share": 0.3033,
        "post_count_3mo": 313,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "TypeScript",
        "role_count": 84,
        "company_count": 79,
        "salary_post_count": 33,
        "salary_transparency_rate": 0.3929,
        "salary_job_count": 13,
        "salary_p50": 152400,
        "salary_p75": 175000,
        "salary_p90": 180000,
        "remote_count": 48,
        "ai_post_count": 45,
        "demand_share": 0.2523,
        "post_count_3mo": 247,
        "salary_p50_3mo": 149000,
        "demand_delta_3mo": 0.2537,
        "salary_delta_3mo": 0.0886,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Python",
        "role_count": 76,
        "company_count": 74,
        "salary_post_count": 23,
        "salary_transparency_rate": 0.3026,
        "salary_job_count": 6,
        "salary_p50": 120000,
        "salary_p75": 149000,
        "salary_p90": 165000,
        "remote_count": 35,
        "ai_post_count": 46,
        "demand_share": 0.2282,
        "post_count_3mo": 238,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.2258,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "React",
        "role_count": 71,
        "company_count": 69,
        "salary_post_count": 26,
        "salary_transparency_rate": 0.3662,
        "salary_job_count": 8,
        "salary_p50": 157000,
        "salary_p75": 175000,
        "salary_p90": 200000,
        "remote_count": 39,
        "ai_post_count": 34,
        "demand_share": 0.2132,
        "post_count_3mo": 228,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0405,
        "salary_delta_3mo": 0.0467,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "AWS",
        "role_count": 55,
        "company_count": 49,
        "salary_post_count": 22,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 10,
        "salary_p50": 129000,
        "salary_p75": 160000,
        "salary_p90": 180000,
        "remote_count": 27,
        "ai_post_count": 32,
        "demand_share": 0.1652,
        "post_count_3mo": 152,
        "salary_p50_3mo": 130047,
        "demand_delta_3mo": 0.5278,
        "salary_delta_3mo": -0.0786,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Frontend",
        "role_count": 55,
        "company_count": 55,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.3273,
        "salary_job_count": 6,
        "salary_p50": 97200,
        "salary_p75": 127000,
        "salary_p90": 180000,
        "remote_count": 34,
        "ai_post_count": 30,
        "demand_share": 0.1652,
        "post_count_3mo": 167,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1406,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Golang",
        "role_count": 46,
        "company_count": 46,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.3043,
        "salary_job_count": 3,
        "salary_p50": 133350,
        "salary_p75": 133350,
        "salary_p90": 133350,
        "remote_count": 26,
        "ai_post_count": 24,
        "demand_share": 0.1381,
        "post_count_3mo": 144,
        "salary_p50_3mo": 126000,
        "demand_delta_3mo": 0.0455,
        "salary_delta_3mo": -0.1666,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Machine Learning",
        "role_count": 46,
        "company_count": 45,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.3696,
        "salary_job_count": 8,
        "salary_p50": 150000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 20,
        "ai_post_count": 46,
        "demand_share": 0.1381,
        "post_count_3mo": 141,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0213,
        "salary_delta_3mo": -0.25,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "PostgreSQL",
        "role_count": 46,
        "company_count": 42,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.413,
        "salary_job_count": 9,
        "salary_p50": 152400,
        "salary_p75": 175000,
        "salary_p90": 180000,
        "remote_count": 25,
        "ai_post_count": 24,
        "demand_share": 0.1381,
        "post_count_3mo": 139,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.27,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Kubernetes",
        "role_count": 37,
        "company_count": 37,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.3243,
        "salary_job_count": 3,
        "salary_p50": 149000,
        "salary_p75": 149000,
        "salary_p90": 149000,
        "remote_count": 20,
        "ai_post_count": 21,
        "demand_share": 0.1111,
        "post_count_3mo": 107,
        "salary_p50_3mo": 149000,
        "demand_delta_3mo": 0.2759,
        "salary_delta_3mo": 0.0643,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "LLM",
        "role_count": 34,
        "company_count": 33,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.4412,
        "salary_job_count": 7,
        "salary_p50": 152400,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 19,
        "ai_post_count": 34,
        "demand_share": 0.1021,
        "post_count_3mo": 73,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.7,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "API",
        "role_count": 29,
        "company_count": 29,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.5517,
        "salary_job_count": 11,
        "salary_p50": 160000,
        "salary_p75": 172800,
        "salary_p90": 186624,
        "remote_count": 20,
        "ai_post_count": 16,
        "demand_share": 0.0871,
        "post_count_3mo": 70,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0645,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "DevOps",
        "role_count": 29,
        "company_count": 28,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2759,
        "salary_job_count": 1,
        "salary_p50": 165000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 20,
        "ai_post_count": 14,
        "demand_share": 0.0871,
        "post_count_3mo": 78,
        "salary_p50_3mo": 153000,
        "demand_delta_3mo": 0.8125,
        "salary_delta_3mo": 0.2692,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Node.js",
        "role_count": 29,
        "company_count": 27,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2759,
        "salary_job_count": 4,
        "salary_p50": 97200,
        "salary_p75": 152400,
        "salary_p90": 152400,
        "remote_count": 15,
        "ai_post_count": 18,
        "demand_share": 0.0871,
        "post_count_3mo": 90,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.2609,
        "salary_delta_3mo": 0.08,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "GitHub",
        "role_count": 25,
        "company_count": 24,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.52,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 152400,
        "salary_p90": 152400,
        "remote_count": 16,
        "ai_post_count": 16,
        "demand_share": 0.0751,
        "post_count_3mo": 63,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.9231,
        "salary_delta_3mo": 0.5,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Rust",
        "role_count": 25,
        "company_count": 25,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.24,
        "salary_job_count": 4,
        "salary_p50": 149000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 13,
        "ai_post_count": 10,
        "demand_share": 0.0751,
        "post_count_3mo": 88,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.0417,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "GCP",
        "role_count": 18,
        "company_count": 17,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2778,
        "salary_job_count": 4,
        "salary_p50": 129000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 8,
        "ai_post_count": 12,
        "demand_share": 0.0541,
        "post_count_3mo": 53,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.6364,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "JavaScript",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 12,
        "ai_post_count": 12,
        "demand_share": 0.0541,
        "post_count_3mo": 63,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.1,
        "salary_delta_3mo": -0.4286,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Terraform",
        "role_count": 17,
        "company_count": 16,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4706,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 10,
        "ai_post_count": 12,
        "demand_share": 0.0511,
        "post_count_3mo": 51,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 1.4286,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Ruby on Rails",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 157000,
        "salary_p75": 157000,
        "salary_p90": 157000,
        "remote_count": 11,
        "ai_post_count": 3,
        "demand_share": 0.045,
        "post_count_3mo": 42,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.0714,
        "salary_delta_3mo": 0.0467,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Docker",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3571,
        "salary_job_count": 4,
        "salary_p50": 100000,
        "salary_p75": 129000,
        "salary_p90": 129000,
        "remote_count": 7,
        "ai_post_count": 10,
        "demand_share": 0.042,
        "post_count_3mo": 49,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.0667,
        "salary_delta_3mo": -0.2857,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "SaaS",
        "role_count": 14,
        "company_count": 11,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 5,
        "salary_p50": 127000,
        "salary_p75": 149000,
        "salary_p90": 149000,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.042,
        "post_count_3mo": 39,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.1667,
        "salary_delta_3mo": 0.0583,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "UX",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 9,
        "ai_post_count": 11,
        "demand_share": 0.042,
        "post_count_3mo": 33,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2727,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Next.js",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 3,
        "salary_p50": 152400,
        "salary_p75": 152400,
        "salary_p90": 152400,
        "remote_count": 7,
        "ai_post_count": 5,
        "demand_share": 0.039,
        "post_count_3mo": 48,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.4091,
        "salary_delta_3mo": -0.1533,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "C++",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 5,
        "ai_post_count": 6,
        "demand_share": 0.036,
        "post_count_3mo": 34,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 1.5,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Django",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.036,
        "post_count_3mo": 28,
        "salary_p50_3mo": 99000,
        "demand_delta_3mo": 0.7143,
        "salary_delta_3mo": 0.1905,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Android",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3636,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.033,
        "post_count_3mo": 48,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.3125,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Vue.js",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 2,
        "salary_p50": 50000,
        "salary_p75": 50000,
        "salary_p90": 50000,
        "remote_count": 10,
        "ai_post_count": 5,
        "demand_share": 0.033,
        "post_count_3mo": 30,
        "salary_p50_3mo": 64800,
        "demand_delta_3mo": 0.1,
        "salary_delta_3mo": -0.6429,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "iOS",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3636,
        "salary_job_count": 3,
        "salary_p50": 172720,
        "salary_p75": 172720,
        "salary_p90": 172720,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.033,
        "post_count_3mo": 39,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.0833,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Linux",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.03,
        "post_count_3mo": 39,
        "salary_p50_3mo": 101600,
        "demand_delta_3mo": -0.0909,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "SQL",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 2,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.03,
        "post_count_3mo": 32,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.2308,
        "salary_delta_3mo": -0.4375,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Azure",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 3,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 4,
        "ai_post_count": 6,
        "demand_share": 0.027,
        "post_count_3mo": 18,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.8,
        "salary_delta_3mo": -0.2,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Java",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1111,
        "salary_job_count": 2,
        "salary_p50": 129000,
        "salary_p75": 129000,
        "salary_p90": 129000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.027,
        "post_count_3mo": 33,
        "salary_p50_3mo": 130047,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": -0.0786,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Redis",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.027,
        "post_count_3mo": 18,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "B2B",
        "role_count": 8,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.024,
        "post_count_3mo": 26,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": 0.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "CI/CD",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 3,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.024,
        "post_count_3mo": 27,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 1.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "FastAPI",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 4,
        "salary_p50": 149000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 4,
        "ai_post_count": 5,
        "demand_share": 0.024,
        "post_count_3mo": 34,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1429,
        "salary_delta_3mo": -0.9542,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Kafka",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 149000,
        "salary_p75": 149000,
        "salary_p90": 149000,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.024,
        "post_count_3mo": 17,
        "salary_p50_3mo": 149000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": 0.0347,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "UI",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.024,
        "post_count_3mo": 26,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "PHP",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 1,
        "salary_p50": 50000,
        "salary_p75": 50000,
        "salary_p90": 50000,
        "remote_count": 7,
        "ai_post_count": 2,
        "demand_share": 0.021,
        "post_count_3mo": 12,
        "salary_p50_3mo": 50000,
        "demand_delta_3mo": 2.5,
        "salary_delta_3mo": -0.7143,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "React Native",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.021,
        "post_count_3mo": 30,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "GraphQL",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 3,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.018,
        "post_count_3mo": 22,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.9444,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "MySQL",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.018,
        "post_count_3mo": 13,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": -0.2857,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "PyTorch",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 6,
        "demand_share": 0.018,
        "post_count_3mo": 21,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Tailwind CSS",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.018,
        "post_count_3mo": 20,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Web3",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.018,
        "post_count_3mo": 28,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 1,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": ".NET",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.015,
        "post_count_3mo": 10,
        "salary_p50_3mo": 70200,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": -0.4,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "C#",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.015,
        "post_count_3mo": 16,
        "salary_p50_3mo": 70200,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": -0.4,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "SDK",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.015,
        "post_count_3mo": 13,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Flask",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.012,
        "post_count_3mo": 6,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "GitLab",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.012,
        "post_count_3mo": 10,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "MongoDB",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.012,
        "post_count_3mo": 18,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Windows",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.012,
        "post_count_3mo": 14,
        "salary_p50_3mo": 84000,
        "demand_delta_3mo": -0.4286,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Angular",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.009,
        "post_count_3mo": 5,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": -0.4375,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "CLI",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.009,
        "post_count_3mo": 7,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Elasticsearch",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 149000,
        "salary_p75": 149000,
        "salary_p90": 149000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.009,
        "post_count_3mo": 7,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Elixir",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.009,
        "post_count_3mo": 13,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Wasm",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 1,
        "salary_p50": 127000,
        "salary_p75": 127000,
        "salary_p90": 127000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.009,
        "post_count_3mo": 6,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "WebAssembly",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 1,
        "salary_p50": 127000,
        "salary_p75": 127000,
        "salary_p90": 127000,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.009,
        "post_count_3mo": 9,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Clojure",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.006,
        "post_count_3mo": 4,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "FFmpeg",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 1,
        "salary_p50": 97200,
        "salary_p75": 97200,
        "salary_p90": 97200,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.006,
        "post_count_3mo": 2,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.215,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "NLP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 165000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.006,
        "post_count_3mo": 6,
        "salary_p50_3mo": 165000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Solidity",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.006,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Assembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "ECS",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 5,
        "salary_p50_3mo": 101600,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Haskell",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 3,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "MLOps",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.8,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "OCaml",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "PaaS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "Svelte",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 4,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "TensorFlow",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 4,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "jQuery",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-07",
        "tech": "macOS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Artificial Intelligence",
        "role_count": 152,
        "company_count": 145,
        "salary_post_count": 58,
        "salary_transparency_rate": 0.3816,
        "salary_job_count": 32,
        "salary_p50": 150000,
        "salary_p75": 152000,
        "salary_p90": 180000,
        "remote_count": 66,
        "ai_post_count": 152,
        "demand_share": 0.4211,
        "post_count_3mo": 394,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2258,
        "salary_delta_3mo": 0.7857,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Full Stack",
        "role_count": 110,
        "company_count": 108,
        "salary_post_count": 39,
        "salary_transparency_rate": 0.3545,
        "salary_job_count": 23,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 59,
        "ai_post_count": 60,
        "demand_share": 0.3047,
        "post_count_3mo": 313,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1828,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Backend",
        "role_count": 93,
        "company_count": 90,
        "salary_post_count": 29,
        "salary_transparency_rate": 0.3118,
        "salary_job_count": 14,
        "salary_p50": 150000,
        "salary_p75": 170000,
        "salary_p90": 182500,
        "remote_count": 47,
        "ai_post_count": 43,
        "demand_share": 0.2576,
        "post_count_3mo": 264,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0814,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Python",
        "role_count": 89,
        "company_count": 85,
        "salary_post_count": 29,
        "salary_transparency_rate": 0.3258,
        "salary_job_count": 16,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 180000,
        "remote_count": 40,
        "ai_post_count": 61,
        "demand_share": 0.2465,
        "post_count_3mo": 224,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.2027,
        "salary_delta_3mo": -0.0345,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "React",
        "role_count": 84,
        "company_count": 82,
        "salary_post_count": 32,
        "salary_transparency_rate": 0.381,
        "salary_job_count": 16,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 42,
        "ai_post_count": 39,
        "demand_share": 0.2327,
        "post_count_3mo": 231,
        "salary_p50_3mo": 147000,
        "demand_delta_3mo": 0.2923,
        "salary_delta_3mo": 0.25,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "TypeScript",
        "role_count": 81,
        "company_count": 79,
        "salary_post_count": 32,
        "salary_transparency_rate": 0.3951,
        "salary_job_count": 17,
        "salary_p50": 147000,
        "salary_p75": 150000,
        "salary_p90": 180000,
        "remote_count": 39,
        "ai_post_count": 42,
        "demand_share": 0.2244,
        "post_count_3mo": 230,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.08,
        "salary_delta_3mo": 0.225,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "AWS",
        "role_count": 60,
        "company_count": 57,
        "salary_post_count": 28,
        "salary_transparency_rate": 0.4667,
        "salary_job_count": 18,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 27,
        "ai_post_count": 29,
        "demand_share": 0.1662,
        "post_count_3mo": 133,
        "salary_p50_3mo": 130047,
        "demand_delta_3mo": 0.3636,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Frontend",
        "role_count": 57,
        "company_count": 55,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.3509,
        "salary_job_count": 6,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 25,
        "ai_post_count": 32,
        "demand_share": 0.1579,
        "post_count_3mo": 176,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1364,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "PostgreSQL",
        "role_count": 56,
        "company_count": 52,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.3571,
        "salary_job_count": 11,
        "salary_p50": 125000,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 33,
        "ai_post_count": 26,
        "demand_share": 0.1551,
        "post_count_3mo": 139,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.3023,
        "salary_delta_3mo": 0.0417,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Golang",
        "role_count": 48,
        "company_count": 46,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.2083,
        "salary_job_count": 5,
        "salary_p50": 126000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 23,
        "ai_post_count": 21,
        "demand_share": 0.133,
        "post_count_3mo": 142,
        "salary_p50_3mo": 130047,
        "demand_delta_3mo": 0.0435,
        "salary_delta_3mo": -0.2125,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Machine Learning",
        "role_count": 47,
        "company_count": 45,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.4255,
        "salary_job_count": 11,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 180000,
        "remote_count": 21,
        "ai_post_count": 47,
        "demand_share": 0.1302,
        "post_count_3mo": 142,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0208,
        "salary_delta_3mo": 0.875,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Kubernetes",
        "role_count": 35,
        "company_count": 34,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 6,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 19,
        "ai_post_count": 19,
        "demand_share": 0.097,
        "post_count_3mo": 99,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.129,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Node.js",
        "role_count": 33,
        "company_count": 32,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.4848,
        "salary_job_count": 10,
        "salary_p50": 125000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 20,
        "ai_post_count": 14,
        "demand_share": 0.0914,
        "post_count_3mo": 84,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.4348,
        "salary_delta_3mo": 0.0417,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Rust",
        "role_count": 31,
        "company_count": 30,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.1935,
        "salary_job_count": 4,
        "salary_p50": 160000,
        "salary_p75": 190500,
        "salary_p90": 190500,
        "remote_count": 20,
        "ai_post_count": 14,
        "demand_share": 0.0859,
        "post_count_3mo": 87,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.6316,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "DevOps",
        "role_count": 30,
        "company_count": 29,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 18,
        "ai_post_count": 15,
        "demand_share": 0.0831,
        "post_count_3mo": 65,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.0714,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "LLM",
        "role_count": 24,
        "company_count": 23,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.2917,
        "salary_job_count": 4,
        "salary_p50": 125000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 13,
        "ai_post_count": 24,
        "demand_share": 0.0665,
        "post_count_3mo": 59,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": -0.2857,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "API",
        "role_count": 23,
        "company_count": 23,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.5652,
        "salary_job_count": 8,
        "salary_p50": 140000,
        "salary_p75": 180000,
        "salary_p90": 182500,
        "remote_count": 13,
        "ai_post_count": 10,
        "demand_share": 0.0637,
        "post_count_3mo": 72,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2778,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "GitHub",
        "role_count": 21,
        "company_count": 19,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.4762,
        "salary_job_count": 6,
        "salary_p50": 120000,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 12,
        "ai_post_count": 9,
        "demand_share": 0.0582,
        "post_count_3mo": 51,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.3125,
        "salary_delta_3mo": 0.2,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Next.js",
        "role_count": 20,
        "company_count": 19,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.15,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 8,
        "ai_post_count": 11,
        "demand_share": 0.0554,
        "post_count_3mo": 57,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": 0.1667,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Docker",
        "role_count": 19,
        "company_count": 19,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4211,
        "salary_job_count": 5,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 9,
        "ai_post_count": 11,
        "demand_share": 0.0526,
        "post_count_3mo": 50,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.0556,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "JavaScript",
        "role_count": 19,
        "company_count": 19,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2632,
        "salary_job_count": 3,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 13,
        "ai_post_count": 8,
        "demand_share": 0.0526,
        "post_count_3mo": 65,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.1875,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Terraform",
        "role_count": 19,
        "company_count": 18,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.5263,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 13,
        "ai_post_count": 12,
        "demand_share": 0.0526,
        "post_count_3mo": 41,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1176,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Android",
        "role_count": 17,
        "company_count": 16,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2941,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 6,
        "ai_post_count": 8,
        "demand_share": 0.0471,
        "post_count_3mo": 53,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.15,
        "salary_delta_3mo": -0.1875,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "GCP",
        "role_count": 17,
        "company_count": 16,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2353,
        "salary_job_count": 4,
        "salary_p50": 125000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 10,
        "ai_post_count": 12,
        "demand_share": 0.0471,
        "post_count_3mo": 46,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1333,
        "salary_delta_3mo": 0.6667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Ruby on Rails",
        "role_count": 17,
        "company_count": 15,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4118,
        "salary_job_count": 3,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 11,
        "ai_post_count": 6,
        "demand_share": 0.0471,
        "post_count_3mo": 41,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.7,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Linux",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 2,
        "salary_p50": 50800,
        "salary_p75": 50800,
        "salary_p90": 50800,
        "remote_count": 10,
        "ai_post_count": 2,
        "demand_share": 0.0443,
        "post_count_3mo": 40,
        "salary_p50_3mo": 101600,
        "demand_delta_3mo": 0.2308,
        "salary_delta_3mo": -0.6613,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "C++",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 5,
        "ai_post_count": 6,
        "demand_share": 0.036,
        "post_count_3mo": 34,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": 0.3,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Java",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.036,
        "post_count_3mo": 42,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1818,
        "salary_delta_3mo": -0.125,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "React Native",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 3,
        "salary_p50": 99000,
        "salary_p75": 99000,
        "salary_p90": 99000,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.036,
        "post_count_3mo": 28,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 1.6,
        "salary_delta_3mo": -0.0481,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "SaaS",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 2,
        "salary_p50": 105000,
        "salary_p75": 105000,
        "salary_p90": 105000,
        "remote_count": 8,
        "ai_post_count": 7,
        "demand_share": 0.036,
        "post_count_3mo": 37,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.35,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "iOS",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1538,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.036,
        "post_count_3mo": 40,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.1875,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "FastAPI",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 10,
        "demand_share": 0.0332,
        "post_count_3mo": 33,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.7143,
        "salary_delta_3mo": 0.5,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "SQL",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 2,
        "salary_p50": 13200,
        "salary_p75": 13200,
        "salary_p90": 13200,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0332,
        "post_count_3mo": 35,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.824,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Django",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 1,
        "salary_p50": 99000,
        "salary_p75": 99000,
        "salary_p90": 99000,
        "remote_count": 7,
        "ai_post_count": 5,
        "demand_share": 0.0277,
        "post_count_3mo": 23,
        "salary_p50_3mo": 81000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": -0.01,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "MongoDB",
        "role_count": 10,
        "company_count": 8,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0277,
        "post_count_3mo": 19,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "UI",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1,
        "salary_job_count": 1,
        "salary_p50": 170000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0277,
        "post_count_3mo": 28,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Web3",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 8,
        "ai_post_count": 2,
        "demand_share": 0.0277,
        "post_count_3mo": 28,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": -0.2308,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "PyTorch",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 2,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 3,
        "ai_post_count": 9,
        "demand_share": 0.0249,
        "post_count_3mo": 17,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 3.5,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Tailwind CSS",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5556,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 2,
        "ai_post_count": 7,
        "demand_share": 0.0249,
        "post_count_3mo": 16,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "UX",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 5,
        "ai_post_count": 7,
        "demand_share": 0.0249,
        "post_count_3mo": 30,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3077,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "B2B",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 2,
        "salary_p50": 105000,
        "salary_p75": 105000,
        "salary_p90": 105000,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0222,
        "post_count_3mo": 23,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "CI/CD",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 210000,
        "salary_p75": 210000,
        "salary_p90": 210000,
        "remote_count": 3,
        "ai_post_count": 5,
        "demand_share": 0.0222,
        "post_count_3mo": 22,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Elixir",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0222,
        "post_count_3mo": 11,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1429,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "C#",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 1,
        "salary_p50": 70200,
        "salary_p75": 70200,
        "salary_p90": 70200,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0194,
        "post_count_3mo": 17,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": -0.064,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Vue.js",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5714,
        "salary_job_count": 4,
        "salary_p50": 64800,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 7,
        "ai_post_count": 2,
        "demand_share": 0.0194,
        "post_count_3mo": 29,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.28,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "GraphQL",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 3,
        "salary_p50": 147000,
        "salary_p75": 147000,
        "salary_p90": 147000,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0166,
        "post_count_3mo": 22,
        "salary_p50_3mo": 99000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": 0.6333,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Redis",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0166,
        "post_count_3mo": 16,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "SDK",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0166,
        "post_count_3mo": 10,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Azure",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0139,
        "post_count_3mo": 14,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.4444,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Kafka",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0139,
        "post_count_3mo": 15,
        "salary_p50_3mo": 144000,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "MySQL",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0139,
        "post_count_3mo": 14,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": 0.5556,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "ECS",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 101600,
        "salary_p75": 101600,
        "salary_p90": 101600,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0111,
        "post_count_3mo": 4,
        "salary_p50_3mo": 101600,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": 0.016,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Elasticsearch",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0111,
        "post_count_3mo": 8,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Windows",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0111,
        "post_count_3mo": 17,
        "salary_p50_3mo": 84000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "CLI",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0083,
        "post_count_3mo": 6,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "GitLab",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0083,
        "post_count_3mo": 8,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "WebAssembly",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0083,
        "post_count_3mo": 9,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": ".NET",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 70200,
        "salary_p75": 70200,
        "salary_p90": 70200,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0055,
        "post_count_3mo": 11,
        "salary_p50_3mo": 70200,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": -0.064,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Assembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0055,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Clojure",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0055,
        "post_count_3mo": 6,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Flask",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0055,
        "post_count_3mo": 4,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Flutter",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0055,
        "post_count_3mo": 4,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Haskell",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0055,
        "post_count_3mo": 3,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "MLOps",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0055,
        "post_count_3mo": 9,
        "salary_p50_3mo": 94900,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "OCaml",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0055,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "PHP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0055,
        "post_count_3mo": 7,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Svelte",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0055,
        "post_count_3mo": 3,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Wasm",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0055,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Angular",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0028,
        "post_count_3mo": 6,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0028,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0028,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "F#",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0028,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "NLP",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0028,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "NoSQL",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0028,
        "post_count_3mo": 1,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "OpenCV",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0028,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-06",
        "tech": "TensorFlow",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0028,
        "post_count_3mo": 3,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Artificial Intelligence",
        "role_count": 115,
        "company_count": 111,
        "salary_post_count": 48,
        "salary_transparency_rate": 0.4174,
        "salary_job_count": 19,
        "salary_p50": 150000,
        "salary_p75": 180000,
        "salary_p90": 183600,
        "remote_count": 50,
        "ai_post_count": 115,
        "demand_share": 0.3821,
        "post_count_3mo": 366,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.0873,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Full Stack",
        "role_count": 102,
        "company_count": 97,
        "salary_post_count": 45,
        "salary_transparency_rate": 0.4412,
        "salary_job_count": 21,
        "salary_p50": 150000,
        "salary_p75": 170000,
        "salary_p90": 180000,
        "remote_count": 58,
        "ai_post_count": 56,
        "demand_share": 0.3389,
        "post_count_3mo": 296,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0893,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Backend",
        "role_count": 82,
        "company_count": 80,
        "salary_post_count": 27,
        "salary_transparency_rate": 0.3293,
        "salary_job_count": 13,
        "salary_p50": 160000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 47,
        "ai_post_count": 41,
        "demand_share": 0.2724,
        "post_count_3mo": 257,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": -0.0575,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "TypeScript",
        "role_count": 82,
        "company_count": 76,
        "salary_post_count": 37,
        "salary_transparency_rate": 0.4512,
        "salary_job_count": 20,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 175000,
        "remote_count": 46,
        "ai_post_count": 47,
        "demand_share": 0.2724,
        "post_count_3mo": 224,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": 0.0789,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Python",
        "role_count": 73,
        "company_count": 69,
        "salary_post_count": 26,
        "salary_transparency_rate": 0.3562,
        "salary_job_count": 13,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 153000,
        "remote_count": 36,
        "ai_post_count": 48,
        "demand_share": 0.2425,
        "post_count_3mo": 209,
        "salary_p50_3mo": 132080,
        "demand_delta_3mo": -0.1098,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "React",
        "role_count": 73,
        "company_count": 70,
        "salary_post_count": 28,
        "salary_transparency_rate": 0.3836,
        "salary_job_count": 14,
        "salary_p50": 125000,
        "salary_p75": 150000,
        "salary_p90": 167640,
        "remote_count": 43,
        "ai_post_count": 37,
        "demand_share": 0.2425,
        "post_count_3mo": 212,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.1512,
        "salary_delta_3mo": 0.0417,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Frontend",
        "role_count": 55,
        "company_count": 52,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.3273,
        "salary_job_count": 8,
        "salary_p50": 150000,
        "salary_p75": 175000,
        "salary_p90": 180000,
        "remote_count": 27,
        "ai_post_count": 31,
        "demand_share": 0.1827,
        "post_count_3mo": 185,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": -0.2029,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Golang",
        "role_count": 50,
        "company_count": 46,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.34,
        "salary_job_count": 8,
        "salary_p50": 120000,
        "salary_p75": 153000,
        "salary_p90": 160000,
        "remote_count": 34,
        "ai_post_count": 18,
        "demand_share": 0.1661,
        "post_count_3mo": 140,
        "salary_p50_3mo": 120650,
        "demand_delta_3mo": 0.0638,
        "salary_delta_3mo": -0.4,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Machine Learning",
        "role_count": 48,
        "company_count": 47,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 6,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 180000,
        "remote_count": 17,
        "ai_post_count": 48,
        "demand_share": 0.1595,
        "post_count_3mo": 143,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1724,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "AWS",
        "role_count": 37,
        "company_count": 36,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.5135,
        "salary_job_count": 10,
        "salary_p50": 125000,
        "salary_p75": 130047,
        "salary_p90": 160000,
        "remote_count": 22,
        "ai_post_count": 20,
        "demand_share": 0.1229,
        "post_count_3mo": 117,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.3273,
        "salary_delta_3mo": -0.1935,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "PostgreSQL",
        "role_count": 37,
        "company_count": 35,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.4054,
        "salary_job_count": 8,
        "salary_p50": 120000,
        "salary_p75": 150000,
        "salary_p90": 180000,
        "remote_count": 18,
        "ai_post_count": 19,
        "demand_share": 0.1229,
        "post_count_3mo": 126,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.2449,
        "salary_delta_3mo": -0.2,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Kubernetes",
        "role_count": 35,
        "company_count": 34,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 6,
        "salary_p50": 125000,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 19,
        "ai_post_count": 17,
        "demand_share": 0.1163,
        "post_count_3mo": 95,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.0294,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Rust",
        "role_count": 32,
        "company_count": 32,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.2188,
        "salary_job_count": 4,
        "salary_p50": 153000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 21,
        "ai_post_count": 17,
        "demand_share": 0.1063,
        "post_count_3mo": 75,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.28,
        "salary_delta_3mo": -0.235,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Node.js",
        "role_count": 28,
        "company_count": 26,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.4643,
        "salary_job_count": 6,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 167640,
        "remote_count": 18,
        "ai_post_count": 12,
        "demand_share": 0.093,
        "post_count_3mo": 74,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.0345,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "JavaScript",
        "role_count": 26,
        "company_count": 25,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 7,
        "salary_p50": 120000,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 22,
        "ai_post_count": 11,
        "demand_share": 0.0864,
        "post_count_3mo": 62,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.7333,
        "salary_delta_3mo": -0.25,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Android",
        "role_count": 20,
        "company_count": 19,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.15,
        "salary_job_count": 3,
        "salary_p50": 95250,
        "salary_p75": 95250,
        "salary_p90": 95250,
        "remote_count": 10,
        "ai_post_count": 6,
        "demand_share": 0.0664,
        "post_count_3mo": 56,
        "salary_p50_3mo": 95250,
        "demand_delta_3mo": 0.4286,
        "salary_delta_3mo": -0.365,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "DevOps",
        "role_count": 19,
        "company_count": 18,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4211,
        "salary_job_count": 3,
        "salary_p50": 153000,
        "salary_p75": 153000,
        "salary_p90": 153000,
        "remote_count": 13,
        "ai_post_count": 9,
        "demand_share": 0.0631,
        "post_count_3mo": 63,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": -0.4242,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "API",
        "role_count": 18,
        "company_count": 17,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 11,
        "ai_post_count": 7,
        "demand_share": 0.0598,
        "post_count_3mo": 67,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "GCP",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2778,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 9,
        "ai_post_count": 9,
        "demand_share": 0.0598,
        "post_count_3mo": 44,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0526,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "GitHub",
        "role_count": 17,
        "company_count": 16,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.5882,
        "salary_job_count": 4,
        "salary_p50": 130000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 10,
        "ai_post_count": 11,
        "demand_share": 0.0565,
        "post_count_3mo": 46,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.2273,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Docker",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.5625,
        "salary_job_count": 7,
        "salary_p50": 120000,
        "salary_p75": 125000,
        "salary_p90": 130047,
        "remote_count": 8,
        "ai_post_count": 10,
        "demand_share": 0.0532,
        "post_count_3mo": 49,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": -0.2,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "LLM",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 10,
        "ai_post_count": 15,
        "demand_share": 0.0498,
        "post_count_3mo": 47,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.0714,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Next.js",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 5,
        "salary_p50": 80000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 8,
        "ai_post_count": 7,
        "demand_share": 0.0498,
        "post_count_3mo": 52,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.3182,
        "salary_delta_3mo": -0.4286,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Terraform",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4667,
        "salary_job_count": 3,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 11,
        "ai_post_count": 7,
        "demand_share": 0.0498,
        "post_count_3mo": 39,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.3478,
        "salary_delta_3mo": -0.2188,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "iOS",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 9,
        "ai_post_count": 9,
        "demand_share": 0.0498,
        "post_count_3mo": 43,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.3636,
        "salary_delta_3mo": 0.0667,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "FastAPI",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 12,
        "demand_share": 0.0465,
        "post_count_3mo": 28,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 2.5,
        "salary_delta_3mo": -0.2,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Linux",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 3,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 7,
        "ai_post_count": 2,
        "demand_share": 0.0432,
        "post_count_3mo": 37,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "SaaS",
        "role_count": 12,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 3,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0399,
        "post_count_3mo": 44,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Vue.js",
        "role_count": 12,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 3,
        "salary_p50": 50000,
        "salary_p75": 50000,
        "salary_p90": 50000,
        "remote_count": 10,
        "ai_post_count": 4,
        "demand_share": 0.0399,
        "post_count_3mo": 29,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0.0909,
        "salary_delta_3mo": -0.6667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Web3",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 10,
        "ai_post_count": 4,
        "demand_share": 0.0399,
        "post_count_3mo": 31,
        "salary_p50_3mo": 75000,
        "demand_delta_3mo": -0.3684,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "CI/CD",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.6364,
        "salary_job_count": 6,
        "salary_p50": 130047,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 7,
        "ai_post_count": 5,
        "demand_share": 0.0365,
        "post_count_3mo": 26,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.8333,
        "salary_delta_3mo": -0.133,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Java",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0909,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.0365,
        "post_count_3mo": 40,
        "salary_p50_3mo": 130047,
        "demand_delta_3mo": 0.375,
        "salary_delta_3mo": -0.3333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "B2B",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 2,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.0332,
        "post_count_3mo": 25,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "GraphQL",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.0332,
        "post_count_3mo": 24,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.2308,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "React Native",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 8,
        "ai_post_count": 2,
        "demand_share": 0.0332,
        "post_count_3mo": 20,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": -0.2,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Ruby on Rails",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 3,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 8,
        "ai_post_count": 4,
        "demand_share": 0.0332,
        "post_count_3mo": 34,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": -0.2188,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "SQL",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.0332,
        "post_count_3mo": 35,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": -0.4,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "UX",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.0332,
        "post_count_3mo": 34,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": -0.375,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "C++",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 2,
        "salary_p50": 84000,
        "salary_p75": 84000,
        "salary_p90": 84000,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0299,
        "post_count_3mo": 31,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": -0.3538,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "UI",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 40000,
        "salary_p75": 40000,
        "salary_p90": 40000,
        "remote_count": 7,
        "ai_post_count": 3,
        "demand_share": 0.0266,
        "post_count_3mo": 32,
        "salary_p50_3mo": 101600,
        "demand_delta_3mo": -0.3846,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Django",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 81000,
        "salary_p75": 81000,
        "salary_p90": 81000,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.0199,
        "post_count_3mo": 21,
        "salary_p50_3mo": 81000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": -0.325,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "PyTorch",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 4,
        "ai_post_count": 6,
        "demand_share": 0.0199,
        "post_count_3mo": 10,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Windows",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 84000,
        "salary_p75": 84000,
        "salary_p90": 84000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0199,
        "post_count_3mo": 17,
        "salary_p50_3mo": 84000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Tailwind CSS",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.8,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 4,
        "demand_share": 0.0166,
        "post_count_3mo": 13,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Azure",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0133,
        "post_count_3mo": 18,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.4286,
        "salary_delta_3mo": -0.0857,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "C#",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0133,
        "post_count_3mo": 18,
        "salary_p50_3mo": 84196,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Kafka",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0133,
        "post_count_3mo": 12,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "MongoDB",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0133,
        "post_count_3mo": 19,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": ".NET",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.01,
        "post_count_3mo": 15,
        "salary_p50_3mo": 75000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "CSS",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.01,
        "post_count_3mo": 11,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "GitLab",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.01,
        "post_count_3mo": 6,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "HTML",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.01,
        "post_count_3mo": 9,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "NLP",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.01,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "PHP",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 3,
        "salary_transparency_rate": 1,
        "salary_job_count": 2,
        "salary_p50": 50000,
        "salary_p75": 50000,
        "salary_p90": 50000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.01,
        "post_count_3mo": 8,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": -0.6429,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Redis",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.01,
        "post_count_3mo": 17,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "WebAssembly",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.01,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Elixir",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0066,
        "post_count_3mo": 10,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "MLOps",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0066,
        "post_count_3mo": 9,
        "salary_p50_3mo": 94900,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "MySQL",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 2,
        "salary_p50": 40000,
        "salary_p75": 40000,
        "salary_p90": 40000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0066,
        "post_count_3mo": 16,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.6,
        "salary_delta_3mo": -0.7143,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "SDK",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0066,
        "post_count_3mo": 9,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "TensorFlow",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0066,
        "post_count_3mo": 3,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "macOS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0066,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Angular",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 9,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Assembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "JSON",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 1,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "RabbitMQ",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Svelte",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-05",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Artificial Intelligence",
        "role_count": 127,
        "company_count": 124,
        "salary_post_count": 34,
        "salary_transparency_rate": 0.2677,
        "salary_job_count": 12,
        "salary_p50": 120000,
        "salary_p75": 152400,
        "salary_p90": 160000,
        "remote_count": 55,
        "ai_post_count": 127,
        "demand_share": 0.4123,
        "post_count_3mo": 377,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.3229,
        "salary_delta_3mo": -0.2,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Full Stack",
        "role_count": 101,
        "company_count": 94,
        "salary_post_count": 31,
        "salary_transparency_rate": 0.3069,
        "salary_job_count": 19,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 180000,
        "remote_count": 44,
        "ai_post_count": 55,
        "demand_share": 0.3279,
        "post_count_3mo": 306,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.4028,
        "salary_delta_3mo": 0.5,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Backend",
        "role_count": 89,
        "company_count": 84,
        "salary_post_count": 23,
        "salary_transparency_rate": 0.2584,
        "salary_job_count": 11,
        "salary_p50": 100000,
        "salary_p75": 140000,
        "salary_p90": 160000,
        "remote_count": 41,
        "ai_post_count": 47,
        "demand_share": 0.289,
        "post_count_3mo": 262,
        "salary_p50_3mo": 132080,
        "demand_delta_3mo": 0.5345,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "React",
        "role_count": 74,
        "company_count": 71,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.2568,
        "salary_job_count": 9,
        "salary_p50": 120000,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 37,
        "ai_post_count": 39,
        "demand_share": 0.2403,
        "post_count_3mo": 225,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.48,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "TypeScript",
        "role_count": 67,
        "company_count": 64,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.2836,
        "salary_job_count": 10,
        "salary_p50": 100000,
        "salary_p75": 140000,
        "salary_p90": 160000,
        "remote_count": 35,
        "ai_post_count": 31,
        "demand_share": 0.2175,
        "post_count_3mo": 218,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": 0.3673,
        "salary_delta_3mo": -0.2857,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Frontend",
        "role_count": 64,
        "company_count": 61,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 5,
        "salary_p50": 90000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 27,
        "ai_post_count": 30,
        "demand_share": 0.2078,
        "post_count_3mo": 199,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.2549,
        "salary_delta_3mo": -0.1,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Python",
        "role_count": 62,
        "company_count": 59,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.1613,
        "salary_job_count": 4,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 26,
        "ai_post_count": 30,
        "demand_share": 0.2013,
        "post_count_3mo": 218,
        "salary_p50_3mo": 132080,
        "demand_delta_3mo": 0.0508,
        "salary_delta_3mo": -0.2857,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Machine Learning",
        "role_count": 47,
        "company_count": 44,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.3404,
        "salary_job_count": 4,
        "salary_p50": 100000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 15,
        "ai_post_count": 47,
        "demand_share": 0.1526,
        "post_count_3mo": 153,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2368,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "PostgreSQL",
        "role_count": 46,
        "company_count": 44,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.2391,
        "salary_job_count": 8,
        "salary_p50": 120000,
        "salary_p75": 144000,
        "salary_p90": 160000,
        "remote_count": 20,
        "ai_post_count": 19,
        "demand_share": 0.1494,
        "post_count_3mo": 138,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.0952,
        "salary_delta_3mo": -0.2,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Golang",
        "role_count": 44,
        "company_count": 42,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.3182,
        "salary_job_count": 6,
        "salary_p50": 144000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 23,
        "ai_post_count": 21,
        "demand_share": 0.1429,
        "post_count_3mo": 137,
        "salary_p50_3mo": 129000,
        "demand_delta_3mo": 0.5172,
        "salary_delta_3mo": -0.1,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "AWS",
        "role_count": 36,
        "company_count": 32,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.3611,
        "salary_job_count": 7,
        "salary_p50": 120000,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 15,
        "ai_post_count": 14,
        "demand_share": 0.1169,
        "post_count_3mo": 135,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0526,
        "salary_delta_3mo": -0.2,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "API",
        "role_count": 31,
        "company_count": 28,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.3226,
        "salary_job_count": 8,
        "salary_p50": 140000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 17,
        "ai_post_count": 11,
        "demand_share": 0.1006,
        "post_count_3mo": 73,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.8235,
        "salary_delta_3mo": 0.1667,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Kubernetes",
        "role_count": 29,
        "company_count": 26,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3103,
        "salary_job_count": 6,
        "salary_p50": 90000,
        "salary_p75": 140000,
        "salary_p90": 144000,
        "remote_count": 16,
        "ai_post_count": 12,
        "demand_share": 0.0942,
        "post_count_3mo": 94,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": 0.7059,
        "salary_delta_3mo": -0.3571,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Rust",
        "role_count": 24,
        "company_count": 24,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 9,
        "ai_post_count": 12,
        "demand_share": 0.0779,
        "post_count_3mo": 68,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Node.js",
        "role_count": 23,
        "company_count": 21,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3043,
        "salary_job_count": 4,
        "salary_p50": 86400,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 9,
        "ai_post_count": 9,
        "demand_share": 0.0747,
        "post_count_3mo": 75,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.2778,
        "salary_delta_3mo": -0.424,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Next.js",
        "role_count": 22,
        "company_count": 21,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3182,
        "salary_job_count": 4,
        "salary_p50": 50000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 4,
        "ai_post_count": 15,
        "demand_share": 0.0714,
        "post_count_3mo": 59,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.8333,
        "salary_delta_3mo": -0.7727,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "JavaScript",
        "role_count": 20,
        "company_count": 18,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.15,
        "salary_job_count": 2,
        "salary_p50": 98550,
        "salary_p75": 98550,
        "salary_p90": 98550,
        "remote_count": 11,
        "ai_post_count": 7,
        "demand_share": 0.0649,
        "post_count_3mo": 51,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.4286,
        "salary_delta_3mo": -0.0145,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "LLM",
        "role_count": 20,
        "company_count": 18,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 3,
        "salary_p50": 86400,
        "salary_p75": 86400,
        "salary_p90": 86400,
        "remote_count": 9,
        "ai_post_count": 20,
        "demand_share": 0.0649,
        "post_count_3mo": 46,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": -0.3088,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Java",
        "role_count": 18,
        "company_count": 17,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 8,
        "ai_post_count": 7,
        "demand_share": 0.0584,
        "post_count_3mo": 37,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Android",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3125,
        "salary_job_count": 2,
        "salary_p50": 155000,
        "salary_p75": 155000,
        "salary_p90": 155000,
        "remote_count": 9,
        "ai_post_count": 5,
        "demand_share": 0.0519,
        "post_count_3mo": 50,
        "salary_p50_3mo": 155000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": 0.1071,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "DevOps",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3125,
        "salary_job_count": 2,
        "salary_p50": 94900,
        "salary_p75": 94900,
        "salary_p90": 94900,
        "remote_count": 7,
        "ai_post_count": 9,
        "demand_share": 0.0519,
        "post_count_3mo": 77,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3043,
        "salary_delta_3mo": -0.051,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Docker",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 4,
        "salary_p50": 86400,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0487,
        "post_count_3mo": 53,
        "salary_p50_3mo": 113000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": -0.424,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Ruby on Rails",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 2,
        "salary_p50": 94900,
        "salary_p75": 94900,
        "salary_p90": 94900,
        "remote_count": 8,
        "ai_post_count": 8,
        "demand_share": 0.0455,
        "post_count_3mo": 39,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0667,
        "salary_delta_3mo": -0.4728,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "GitHub",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.5385,
        "salary_job_count": 3,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0422,
        "post_count_3mo": 51,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "SQL",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 9,
        "ai_post_count": 3,
        "demand_share": 0.0422,
        "post_count_3mo": 33,
        "salary_p50_3mo": 144000,
        "demand_delta_3mo": 0.8571,
        "salary_delta_3mo": -0.3182,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "C++",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 1,
        "salary_p50": 86400,
        "salary_p75": 86400,
        "salary_p90": 86400,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.039,
        "post_count_3mo": 37,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "SaaS",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.039,
        "post_count_3mo": 56,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": -0.2,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "iOS",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.039,
        "post_count_3mo": 39,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "GCP",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 6,
        "demand_share": 0.0357,
        "post_count_3mo": 45,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Linux",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0357,
        "post_count_3mo": 37,
        "salary_p50_3mo": 113000,
        "demand_delta_3mo": 0.8333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "UX",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 10,
        "ai_post_count": 8,
        "demand_share": 0.0357,
        "post_count_3mo": 40,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "UI",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 2,
        "salary_p50": 86400,
        "salary_p75": 86400,
        "salary_p90": 86400,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.0325,
        "post_count_3mo": 37,
        "salary_p50_3mo": 101600,
        "demand_delta_3mo": -0.0909,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Vue.js",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 9,
        "ai_post_count": 2,
        "demand_share": 0.0325,
        "post_count_3mo": 28,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": 0.034,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Django",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0227,
        "post_count_3mo": 24,
        "salary_p50_3mo": 87600,
        "demand_delta_3mo": -0.3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "FastAPI",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 1,
        "salary_p50": 39000,
        "salary_p75": 39000,
        "salary_p90": 39000,
        "remote_count": 2,
        "ai_post_count": 6,
        "demand_share": 0.0227,
        "post_count_3mo": 18,
        "salary_p50_3mo": 39000,
        "demand_delta_3mo": 0.1667,
        "salary_delta_3mo": -0.844,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "MySQL",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 2,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0227,
        "post_count_3mo": 19,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 1.3333,
        "salary_delta_3mo": -0.4375,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Redis",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0227,
        "post_count_3mo": 20,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Terraform",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0227,
        "post_count_3mo": 47,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Windows",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 1,
        "salary_p50": 129000,
        "salary_p75": 129000,
        "salary_p90": 129000,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0227,
        "post_count_3mo": 16,
        "salary_p50_3mo": 129000,
        "demand_delta_3mo": 0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": ".NET",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0195,
        "post_count_3mo": 14,
        "salary_p50_3mo": 75000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "C#",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0195,
        "post_count_3mo": 18,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "GraphQL",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0195,
        "post_count_3mo": 27,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": -0.4,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Kafka",
        "role_count": 6,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 4,
        "ai_post_count": 1,
        "demand_share": 0.0195,
        "post_count_3mo": 11,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": -0.2857,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Web3",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.0195,
        "post_count_3mo": 38,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Azure",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0162,
        "post_count_3mo": 21,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": 0.875,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "B2B",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.8,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0162,
        "post_count_3mo": 30,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.4444,
        "salary_delta_3mo": 0.1667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "MLOps",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 94900,
        "salary_p75": 94900,
        "salary_p90": 94900,
        "remote_count": 4,
        "ai_post_count": 5,
        "demand_share": 0.0162,
        "post_count_3mo": 11,
        "salary_p50_3mo": 94900,
        "demand_delta_3mo": 4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "MongoDB",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0162,
        "post_count_3mo": 21,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "React Native",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.0162,
        "post_count_3mo": 24,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": -0.4545,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Angular",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.013,
        "post_count_3mo": 10,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "CSS",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.013,
        "post_count_3mo": 12,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Clojure",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 70000,
        "salary_p75": 70000,
        "salary_p90": 70000,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.013,
        "post_count_3mo": 5,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Elasticsearch",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.013,
        "post_count_3mo": 9,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "CI/CD",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0097,
        "post_count_3mo": 21,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "HTML",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0097,
        "post_count_3mo": 9,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Spring",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0097,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "WebAssembly",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0097,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "CLI",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0065,
        "post_count_3mo": 5,
        "salary_p50_3mo": 87600,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Flask",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0065,
        "post_count_3mo": 7,
        "salary_p50_3mo": 75000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Flutter",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0065,
        "post_count_3mo": 4,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "GitLab",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0065,
        "post_count_3mo": 4,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "NLP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0065,
        "post_count_3mo": 7,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": -0.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "PHP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0065,
        "post_count_3mo": 10,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": 0.5909,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "PyTorch",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0065,
        "post_count_3mo": 8,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "SDK",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0065,
        "post_count_3mo": 8,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Scala",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0065,
        "post_count_3mo": 4,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Tailwind CSS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0065,
        "post_count_3mo": 15,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": -0.2,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Assembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0032,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Elixir",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0032,
        "post_count_3mo": 16,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.8,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Haskell",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0032,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "OCaml",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0032,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "PaaS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0032,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "RabbitMQ",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0032,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0032,
        "post_count_3mo": 2,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-04",
        "tech": "macOS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0032,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Artificial Intelligence",
        "role_count": 124,
        "company_count": 118,
        "salary_post_count": 35,
        "salary_transparency_rate": 0.2823,
        "salary_job_count": 18,
        "salary_p50": 129600,
        "salary_p75": 160000,
        "salary_p90": 200000,
        "remote_count": 56,
        "ai_post_count": 124,
        "demand_share": 0.3503,
        "post_count_3mo": 346,
        "salary_p50_3mo": 149000,
        "demand_delta_3mo": 0.1171,
        "salary_delta_3mo": 0.296,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Full Stack",
        "role_count": 93,
        "company_count": 90,
        "salary_post_count": 28,
        "salary_transparency_rate": 0.3011,
        "salary_job_count": 11,
        "salary_p50": 129600,
        "salary_p75": 160000,
        "salary_p90": 180000,
        "remote_count": 51,
        "ai_post_count": 41,
        "demand_share": 0.2627,
        "post_count_3mo": 277,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1071,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Backend",
        "role_count": 86,
        "company_count": 84,
        "salary_post_count": 22,
        "salary_transparency_rate": 0.2558,
        "salary_job_count": 13,
        "salary_p50": 120000,
        "salary_p75": 132080,
        "salary_p90": 160000,
        "remote_count": 52,
        "ai_post_count": 34,
        "demand_share": 0.2429,
        "post_count_3mo": 231,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1944,
        "salary_delta_3mo": -0.0247,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "TypeScript",
        "role_count": 75,
        "company_count": 69,
        "salary_post_count": 25,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 18,
        "salary_p50": 129600,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 43,
        "ai_post_count": 31,
        "demand_share": 0.2119,
        "post_count_3mo": 200,
        "salary_p50_3mo": 135400,
        "demand_delta_3mo": 0.3636,
        "salary_delta_3mo": 0.296,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Python",
        "role_count": 74,
        "company_count": 73,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.2432,
        "salary_job_count": 15,
        "salary_p50": 145000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 33,
        "ai_post_count": 42,
        "demand_share": 0.209,
        "post_count_3mo": 215,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.3962,
        "salary_delta_3mo": 0.16,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Frontend",
        "role_count": 66,
        "company_count": 61,
        "salary_post_count": 21,
        "salary_transparency_rate": 0.3182,
        "salary_job_count": 11,
        "salary_p50": 120000,
        "salary_p75": 129600,
        "salary_p90": 160000,
        "remote_count": 37,
        "ai_post_count": 29,
        "demand_share": 0.1864,
        "post_count_3mo": 186,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1579,
        "salary_delta_3mo": -0.0247,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "React",
        "role_count": 65,
        "company_count": 64,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 16,
        "salary_p50": 120000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 33,
        "ai_post_count": 24,
        "demand_share": 0.1836,
        "post_count_3mo": 201,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.1404,
        "salary_delta_3mo": -0.04,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Machine Learning",
        "role_count": 48,
        "company_count": 46,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 9,
        "salary_p50": 150000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 27,
        "ai_post_count": 48,
        "demand_share": 0.1356,
        "post_count_3mo": 144,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2308,
        "salary_delta_3mo": 0.2191,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Golang",
        "role_count": 46,
        "company_count": 45,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.2826,
        "salary_job_count": 8,
        "salary_p50": 100000,
        "salary_p75": 120650,
        "salary_p90": 160000,
        "remote_count": 31,
        "ai_post_count": 15,
        "demand_share": 0.1299,
        "post_count_3mo": 122,
        "salary_p50_3mo": 120650,
        "demand_delta_3mo": 0.3939,
        "salary_delta_3mo": -0.2857,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "AWS",
        "role_count": 44,
        "company_count": 41,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 7,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 200000,
        "remote_count": 28,
        "ai_post_count": 15,
        "demand_share": 0.1243,
        "post_count_3mo": 137,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.0345,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "PostgreSQL",
        "role_count": 43,
        "company_count": 42,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.2326,
        "salary_job_count": 8,
        "salary_p50": 100000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 27,
        "ai_post_count": 10,
        "demand_share": 0.1215,
        "post_count_3mo": 134,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1026,
        "salary_delta_3mo": -0.2857,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Kubernetes",
        "role_count": 31,
        "company_count": 30,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.4839,
        "salary_job_count": 8,
        "salary_p50": 100000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 19,
        "ai_post_count": 13,
        "demand_share": 0.0876,
        "post_count_3mo": 82,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": 0.4762,
        "salary_delta_3mo": -0.4286,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "DevOps",
        "role_count": 28,
        "company_count": 27,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3214,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 18,
        "ai_post_count": 8,
        "demand_share": 0.0791,
        "post_count_3mo": 84,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Node.js",
        "role_count": 23,
        "company_count": 22,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.4348,
        "salary_job_count": 7,
        "salary_p50": 125000,
        "salary_p75": 129600,
        "salary_p90": 145000,
        "remote_count": 10,
        "ai_post_count": 8,
        "demand_share": 0.065,
        "post_count_3mo": 70,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.0455,
        "salary_delta_3mo": 0.1364,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Android",
        "role_count": 20,
        "company_count": 19,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.35,
        "salary_job_count": 4,
        "salary_p50": 75000,
        "salary_p75": 95250,
        "salary_p90": 95250,
        "remote_count": 11,
        "ai_post_count": 5,
        "demand_share": 0.0565,
        "post_count_3mo": 42,
        "salary_p50_3mo": 95250,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": -0.25,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "SaaS",
        "role_count": 20,
        "company_count": 18,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 3,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 15,
        "ai_post_count": 9,
        "demand_share": 0.0565,
        "post_count_3mo": 58,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.1111,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Rust",
        "role_count": 19,
        "company_count": 19,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0526,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 11,
        "ai_post_count": 8,
        "demand_share": 0.0537,
        "post_count_3mo": 62,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.0556,
        "salary_delta_3mo": 0.6,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "API",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.5556,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 10,
        "ai_post_count": 5,
        "demand_share": 0.0508,
        "post_count_3mo": 59,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.125,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Docker",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2778,
        "salary_job_count": 4,
        "salary_p50": 100000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 11,
        "ai_post_count": 6,
        "demand_share": 0.0508,
        "post_count_3mo": 56,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": -0.2857,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Terraform",
        "role_count": 17,
        "company_count": 17,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2941,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 12,
        "ai_post_count": 5,
        "demand_share": 0.048,
        "post_count_3mo": 50,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.7,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "GitHub",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3125,
        "salary_job_count": 3,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 11,
        "ai_post_count": 4,
        "demand_share": 0.0452,
        "post_count_3mo": 48,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.4545,
        "salary_delta_3mo": -0.3939,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "JavaScript",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3125,
        "salary_job_count": 6,
        "salary_p50": 84196,
        "salary_p75": 100000,
        "salary_p90": 125000,
        "remote_count": 10,
        "ai_post_count": 6,
        "demand_share": 0.0452,
        "post_count_3mo": 45,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.3043,
        "salary_delta_3mo": -0.2346,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "iOS",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 4,
        "salary_p50": 84196,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 12,
        "ai_post_count": 5,
        "demand_share": 0.0452,
        "post_count_3mo": 36,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 1.2857,
        "salary_delta_3mo": -0.158,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "GCP",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0667,
        "salary_job_count": 1,
        "salary_p50": 15120,
        "salary_p75": 15120,
        "salary_p90": 15120,
        "remote_count": 7,
        "ai_post_count": 7,
        "demand_share": 0.0424,
        "post_count_3mo": 44,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": -0.9136,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Next.js",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4667,
        "salary_job_count": 6,
        "salary_p50": 100000,
        "salary_p75": 120000,
        "salary_p90": 129600,
        "remote_count": 4,
        "ai_post_count": 6,
        "demand_share": 0.0424,
        "post_count_3mo": 49,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": -0.5833,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "UI",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 3,
        "salary_p50": 101600,
        "salary_p75": 101600,
        "salary_p90": 101600,
        "remote_count": 9,
        "ai_post_count": 5,
        "demand_share": 0.0395,
        "post_count_3mo": 38,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Linux",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 8,
        "ai_post_count": 5,
        "demand_share": 0.0367,
        "post_count_3mo": 32,
        "salary_p50_3mo": 113000,
        "demand_delta_3mo": 0.625,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "UX",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 3,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 8,
        "ai_post_count": 8,
        "demand_share": 0.0367,
        "post_count_3mo": 39,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0.8571,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Web3",
        "role_count": 13,
        "company_count": 11,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 2,
        "salary_p50": 40000,
        "salary_p75": 40000,
        "salary_p90": 40000,
        "remote_count": 11,
        "ai_post_count": 3,
        "demand_share": 0.0367,
        "post_count_3mo": 44,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.0833,
        "salary_delta_3mo": -0.3333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "CI/CD",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0339,
        "post_count_3mo": 23,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": -0.375,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "LLM",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 12,
        "demand_share": 0.0339,
        "post_count_3mo": 36,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "SQL",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0833,
        "salary_job_count": 2,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 4,
        "ai_post_count": 5,
        "demand_share": 0.0339,
        "post_count_3mo": 27,
        "salary_p50_3mo": 84196,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": -0.6875,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Java",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 7,
        "ai_post_count": 8,
        "demand_share": 0.0311,
        "post_count_3mo": 25,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.1429,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "B2B",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 4,
        "salary_p50": 95250,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.0282,
        "post_count_3mo": 34,
        "salary_p50_3mo": 95250,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "C++",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0282,
        "post_count_3mo": 33,
        "salary_p50_3mo": 136000,
        "demand_delta_3mo": -0.0909,
        "salary_delta_3mo": 0.1538,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "MongoDB",
        "role_count": 10,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0282,
        "post_count_3mo": 18,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": 0.0606,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Ruby on Rails",
        "role_count": 10,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 3,
        "demand_share": 0.0282,
        "post_count_3mo": 40,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.4737,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Azure",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 1,
        "salary_p50": 66000,
        "salary_p75": 66000,
        "salary_p90": 66000,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.0254,
        "post_count_3mo": 22,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": 1.25,
        "salary_delta_3mo": -0.56,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "C#",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0226,
        "post_count_3mo": 19,
        "salary_p50_3mo": 84196,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": -0.25,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Django",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.0226,
        "post_count_3mo": 27,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.2727,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "GraphQL",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.625,
        "salary_job_count": 2,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0226,
        "post_count_3mo": 29,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0.1429,
        "salary_delta_3mo": -0.25,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Elixir",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0198,
        "post_count_3mo": 20,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 2.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "FastAPI",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0198,
        "post_count_3mo": 17,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 1.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "MySQL",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 3,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0198,
        "post_count_3mo": 15,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0.75,
        "salary_delta_3mo": -0.3571,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Redis",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0198,
        "post_count_3mo": 18,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Vue.js",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 2,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.0198,
        "post_count_3mo": 26,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.1667,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": ".NET",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 66000,
        "salary_p75": 66000,
        "salary_p90": 66000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0169,
        "post_count_3mo": 10,
        "salary_p50_3mo": 66000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": -0.34,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Tailwind CSS",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0169,
        "post_count_3mo": 17,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "React Native",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 1,
        "demand_share": 0.0141,
        "post_count_3mo": 29,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.4444,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "SDK",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 2,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0141,
        "post_count_3mo": 6,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": 4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Angular",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 129600,
        "salary_p75": 129600,
        "salary_p90": 129600,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0113,
        "post_count_3mo": 7,
        "salary_p50_3mo": 129600,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "CSS",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0113,
        "post_count_3mo": 10,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Windows",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0113,
        "post_count_3mo": 13,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Elasticsearch",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0085,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "HTML",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0085,
        "post_count_3mo": 7,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "NLP",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0085,
        "post_count_3mo": 10,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "PHP",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0085,
        "post_count_3mo": 12,
        "salary_p50_3mo": 118800,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Svelte",
        "role_count": 3,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0085,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Dart",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0056,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "ECS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0056,
        "post_count_3mo": 2,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Flask",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0056,
        "post_count_3mo": 7,
        "salary_p50_3mo": 75000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Kafka",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0056,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "MLOps",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0056,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "NoSQL",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0056,
        "post_count_3mo": 6,
        "salary_p50_3mo": 155000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "PyTorch",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0056,
        "post_count_3mo": 10,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Scala",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0056,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Assembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0028,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0028,
        "post_count_3mo": 4,
        "salary_p50_3mo": 87600,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Clojure",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0028,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "FFmpeg",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0028,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "Flutter",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0028,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "GitLab",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0028,
        "post_count_3mo": 3,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "TensorFlow",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0028,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "WebAssembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0028,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "jQuery",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 66000,
        "salary_p75": 66000,
        "salary_p90": 66000,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0028,
        "post_count_3mo": 2,
        "salary_p50_3mo": 66000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-03",
        "tech": "macOS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0028,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Artificial Intelligence",
        "role_count": 126,
        "company_count": 120,
        "salary_post_count": 44,
        "salary_transparency_rate": 0.3492,
        "salary_job_count": 22,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 51,
        "ai_post_count": 126,
        "demand_share": 0.3182,
        "post_count_3mo": 333,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.2353,
        "salary_delta_3mo": 0.25,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Full Stack",
        "role_count": 112,
        "company_count": 104,
        "salary_post_count": 38,
        "salary_transparency_rate": 0.3393,
        "salary_job_count": 17,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 59,
        "ai_post_count": 50,
        "demand_share": 0.2828,
        "post_count_3mo": 268,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.4,
        "salary_delta_3mo": 0.875,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Backend",
        "role_count": 87,
        "company_count": 82,
        "salary_post_count": 29,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 15,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 48,
        "ai_post_count": 40,
        "demand_share": 0.2197,
        "post_count_3mo": 217,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1013,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "React",
        "role_count": 86,
        "company_count": 83,
        "salary_post_count": 25,
        "salary_transparency_rate": 0.2907,
        "salary_job_count": 14,
        "salary_p50": 120000,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 48,
        "ai_post_count": 37,
        "demand_share": 0.2172,
        "post_count_3mo": 193,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.1316,
        "salary_delta_3mo": 0.0909,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Python",
        "role_count": 82,
        "company_count": 78,
        "salary_post_count": 23,
        "salary_transparency_rate": 0.2805,
        "salary_job_count": 11,
        "salary_p50": 150000,
        "salary_p75": 155000,
        "salary_p90": 175000,
        "remote_count": 39,
        "ai_post_count": 47,
        "demand_share": 0.2071,
        "post_count_3mo": 194,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.3016,
        "salary_delta_3mo": 0.1538,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "TypeScript",
        "role_count": 76,
        "company_count": 73,
        "salary_post_count": 31,
        "salary_transparency_rate": 0.4079,
        "salary_job_count": 12,
        "salary_p50": 140000,
        "salary_p75": 172800,
        "salary_p90": 175000,
        "remote_count": 38,
        "ai_post_count": 35,
        "demand_share": 0.1919,
        "post_count_3mo": 180,
        "salary_p50_3mo": 135400,
        "demand_delta_3mo": 0.1014,
        "salary_delta_3mo": 0.12,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Frontend",
        "role_count": 69,
        "company_count": 66,
        "salary_post_count": 25,
        "salary_transparency_rate": 0.3623,
        "salary_job_count": 11,
        "salary_p50": 160000,
        "salary_p75": 165000,
        "salary_p90": 175000,
        "remote_count": 38,
        "ai_post_count": 32,
        "demand_share": 0.1742,
        "post_count_3mo": 177,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.2778,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Machine Learning",
        "role_count": 58,
        "company_count": 53,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.3448,
        "salary_job_count": 9,
        "salary_p50": 150000,
        "salary_p75": 175000,
        "salary_p90": 180000,
        "remote_count": 23,
        "ai_post_count": 58,
        "demand_share": 0.1465,
        "post_count_3mo": 135,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0943,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "AWS",
        "role_count": 55,
        "company_count": 52,
        "salary_post_count": 26,
        "salary_transparency_rate": 0.4727,
        "salary_job_count": 17,
        "salary_p50": 160000,
        "salary_p75": 175000,
        "salary_p90": 180000,
        "remote_count": 32,
        "ai_post_count": 19,
        "demand_share": 0.1389,
        "post_count_3mo": 137,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2791,
        "salary_delta_3mo": 0.28,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "PostgreSQL",
        "role_count": 49,
        "company_count": 49,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.3061,
        "salary_job_count": 9,
        "salary_p50": 140000,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 34,
        "ai_post_count": 22,
        "demand_share": 0.1237,
        "post_count_3mo": 130,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1951,
        "salary_delta_3mo": 0.0769,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Golang",
        "role_count": 47,
        "company_count": 45,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.2128,
        "salary_job_count": 4,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 33,
        "ai_post_count": 13,
        "demand_share": 0.1187,
        "post_count_3mo": 109,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.3824,
        "salary_delta_3mo": 0.3793,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Kubernetes",
        "role_count": 34,
        "company_count": 33,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.4706,
        "salary_job_count": 7,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 172800,
        "remote_count": 24,
        "ai_post_count": 14,
        "demand_share": 0.0859,
        "post_count_3mo": 72,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.2143,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "DevOps",
        "role_count": 33,
        "company_count": 33,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.3939,
        "salary_job_count": 7,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 20,
        "ai_post_count": 16,
        "demand_share": 0.0833,
        "post_count_3mo": 84,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1786,
        "salary_delta_3mo": 0.25,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Node.js",
        "role_count": 29,
        "company_count": 26,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.4828,
        "salary_job_count": 7,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 172800,
        "remote_count": 18,
        "ai_post_count": 13,
        "demand_share": 0.0732,
        "post_count_3mo": 69,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.3182,
        "salary_delta_3mo": 0.3636,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Rust",
        "role_count": 25,
        "company_count": 25,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.24,
        "salary_job_count": 4,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 16,
        "ai_post_count": 11,
        "demand_share": 0.0631,
        "post_count_3mo": 61,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.3889,
        "salary_delta_3mo": 0.0256,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "API",
        "role_count": 24,
        "company_count": 24,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.5417,
        "salary_job_count": 6,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 175000,
        "remote_count": 14,
        "ai_post_count": 11,
        "demand_share": 0.0606,
        "post_count_3mo": 57,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.0909,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "SaaS",
        "role_count": 24,
        "company_count": 23,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.4583,
        "salary_job_count": 4,
        "salary_p50": 80000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 17,
        "ai_post_count": 9,
        "demand_share": 0.0606,
        "post_count_3mo": 56,
        "salary_p50_3mo": 146000,
        "demand_delta_3mo": 0.2632,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Terraform",
        "role_count": 23,
        "company_count": 23,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3913,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 172800,
        "salary_p90": 172800,
        "remote_count": 20,
        "ai_post_count": 9,
        "demand_share": 0.0581,
        "post_count_3mo": 43,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.6429,
        "salary_delta_3mo": 0.1538,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "GitHub",
        "role_count": 22,
        "company_count": 19,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.4091,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 11,
        "ai_post_count": 12,
        "demand_share": 0.0556,
        "post_count_3mo": 43,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1.4444,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Next.js",
        "role_count": 22,
        "company_count": 22,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.5455,
        "salary_job_count": 6,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 11,
        "ai_post_count": 9,
        "demand_share": 0.0556,
        "post_count_3mo": 46,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.2222,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Docker",
        "role_count": 20,
        "company_count": 19,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 6,
        "salary_p50": 125000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 11,
        "ai_post_count": 11,
        "demand_share": 0.0505,
        "post_count_3mo": 47,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 1.2222,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "GCP",
        "role_count": 19,
        "company_count": 19,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2632,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 10,
        "ai_post_count": 12,
        "demand_share": 0.048,
        "post_count_3mo": 38,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.7273,
        "salary_delta_3mo": -0.04,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Web3",
        "role_count": 19,
        "company_count": 19,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3684,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 17,
        "ai_post_count": 2,
        "demand_share": 0.048,
        "post_count_3mo": 43,
        "salary_p50_3mo": 120650,
        "demand_delta_3mo": 0.5833,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "UX",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3125,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 14,
        "ai_post_count": 7,
        "demand_share": 0.0404,
        "post_count_3mo": 33,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0.4545,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "B2B",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2667,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 13,
        "ai_post_count": 4,
        "demand_share": 0.0379,
        "post_count_3mo": 32,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0714,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "C++",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 4,
        "salary_p50": 130000,
        "salary_p75": 136000,
        "salary_p90": 136000,
        "remote_count": 9,
        "ai_post_count": 4,
        "demand_share": 0.0379,
        "post_count_3mo": 34,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "JavaScript",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2667,
        "salary_job_count": 2,
        "salary_p50": 115192,
        "salary_p75": 115192,
        "salary_p90": 115192,
        "remote_count": 10,
        "ai_post_count": 5,
        "demand_share": 0.0379,
        "post_count_3mo": 52,
        "salary_p50_3mo": 115192,
        "demand_delta_3mo": 0.3636,
        "salary_delta_3mo": -0.338,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Ruby on Rails",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 13,
        "ai_post_count": 6,
        "demand_share": 0.0379,
        "post_count_3mo": 49,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.0625,
        "salary_delta_3mo": 1.1333,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Android",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 1,
        "salary_p50": 162000,
        "salary_p75": 162000,
        "salary_p90": 162000,
        "remote_count": 9,
        "ai_post_count": 6,
        "demand_share": 0.0354,
        "post_count_3mo": 30,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "LLM",
        "role_count": 14,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 2,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 6,
        "ai_post_count": 14,
        "demand_share": 0.0354,
        "post_count_3mo": 36,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "React Native",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 10,
        "ai_post_count": 3,
        "demand_share": 0.0354,
        "post_count_3mo": 33,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.1765,
        "salary_delta_3mo": -0.3143,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "GraphQL",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 4,
        "salary_p50": 79200,
        "salary_p75": 115192,
        "salary_p90": 115192,
        "remote_count": 7,
        "ai_post_count": 5,
        "demand_share": 0.0328,
        "post_count_3mo": 28,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.1333,
        "salary_delta_3mo": -0.208,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Linux",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 2,
        "salary_p50": 113000,
        "salary_p75": 113000,
        "salary_p90": 113000,
        "remote_count": 10,
        "ai_post_count": 4,
        "demand_share": 0.0328,
        "post_count_3mo": 27,
        "salary_p50_3mo": 113000,
        "demand_delta_3mo": 0.4444,
        "salary_delta_3mo": -0.2467,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "UI",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1538,
        "salary_job_count": 1,
        "salary_p50": 210000,
        "salary_p75": 210000,
        "salary_p90": 210000,
        "remote_count": 10,
        "ai_post_count": 4,
        "demand_share": 0.0328,
        "post_count_3mo": 31,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0.8571,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Vue.js",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3636,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 9,
        "ai_post_count": 2,
        "demand_share": 0.0278,
        "post_count_3mo": 25,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.375,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "iOS",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0909,
        "salary_job_count": 1,
        "salary_p50": 162000,
        "salary_p75": 162000,
        "salary_p90": 162000,
        "remote_count": 5,
        "ai_post_count": 7,
        "demand_share": 0.0278,
        "post_count_3mo": 27,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.2222,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Django",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0227,
        "post_count_3mo": 30,
        "salary_p50_3mo": 87600,
        "demand_delta_3mo": 0.125,
        "salary_delta_3mo": -0.4231,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Elixir",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 0,
        "demand_share": 0.0202,
        "post_count_3mo": 15,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Java",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0202,
        "post_count_3mo": 25,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.4667,
        "salary_delta_3mo": 0.0286,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "SQL",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0202,
        "post_count_3mo": 23,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": -0.2727,
        "salary_delta_3mo": 0.5748,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Azure",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5714,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0177,
        "post_count_3mo": 17,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 2.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Tailwind CSS",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 2,
        "salary_p50": 79200,
        "salary_p75": 79200,
        "salary_p90": 79200,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.0177,
        "post_count_3mo": 16,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "CI/CD",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 115192,
        "salary_p75": 115192,
        "salary_p90": 115192,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0152,
        "post_count_3mo": 20,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "MongoDB",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0152,
        "post_count_3mo": 13,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Redis",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0152,
        "post_count_3mo": 18,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "MySQL",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0126,
        "post_count_3mo": 12,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "PHP",
        "role_count": 5,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0126,
        "post_count_3mo": 14,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": -0.1954,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Windows",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0126,
        "post_count_3mo": 13,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "C#",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0101,
        "post_count_3mo": 17,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5556,
        "salary_delta_3mo": 0.25,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "CSS",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0101,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "FastAPI",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0101,
        "post_count_3mo": 13,
        "salary_p50_3mo": 60000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "MLOps",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0101,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "PyTorch",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 0,
        "ai_post_count": 4,
        "demand_share": 0.0101,
        "post_count_3mo": 11,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": 0.5,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Flask",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0076,
        "post_count_3mo": 7,
        "salary_p50_3mo": 75000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "HTML",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0076,
        "post_count_3mo": 6,
        "salary_p50_3mo": 250000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Kafka",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0076,
        "post_count_3mo": 11,
        "salary_p50_3mo": 165000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "NoSQL",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 155000,
        "salary_p75": 155000,
        "salary_p90": 155000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0076,
        "post_count_3mo": 5,
        "salary_p50_3mo": 155000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": ".NET",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0051,
        "post_count_3mo": 6,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.7143,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Angular",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0051,
        "post_count_3mo": 4,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "CDC",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0051,
        "post_count_3mo": 5,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "CLI",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 87600,
        "salary_p75": 87600,
        "salary_p90": 87600,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0051,
        "post_count_3mo": 6,
        "salary_p50_3mo": 87600,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Elasticsearch",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0051,
        "post_count_3mo": 8,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "NLP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0051,
        "post_count_3mo": 9,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Spring",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0051,
        "post_count_3mo": 8,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "WebAssembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0051,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Assembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Flutter",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "GitLab",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Haskell",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 7,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "OCaml",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "SDK",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 2,
        "salary_p50_3mo": 120650,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Svelte",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "TensorFlow",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 6,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-02",
        "tech": "jQuery",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Artificial Intelligence",
        "role_count": 96,
        "company_count": 93,
        "salary_post_count": 30,
        "salary_transparency_rate": 0.3125,
        "salary_job_count": 18,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 175000,
        "remote_count": 51,
        "ai_post_count": 96,
        "demand_share": 0.3478,
        "post_count_3mo": 309,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.2152,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Full Stack",
        "role_count": 72,
        "company_count": 69,
        "salary_post_count": 27,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 15,
        "salary_p50": 127000,
        "salary_p75": 160000,
        "salary_p90": 200000,
        "remote_count": 40,
        "ai_post_count": 36,
        "demand_share": 0.2609,
        "post_count_3mo": 236,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.2088,
        "salary_delta_3mo": 0.8143,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Python",
        "role_count": 59,
        "company_count": 59,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.339,
        "salary_job_count": 11,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 172800,
        "remote_count": 37,
        "ai_post_count": 29,
        "demand_share": 0.2138,
        "post_count_3mo": 175,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.0781,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Backend",
        "role_count": 58,
        "company_count": 56,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.2414,
        "salary_job_count": 8,
        "salary_p50": 125000,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 40,
        "ai_post_count": 22,
        "demand_share": 0.2101,
        "post_count_3mo": 209,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.3176,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Frontend",
        "role_count": 51,
        "company_count": 49,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 7,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 185000,
        "remote_count": 24,
        "ai_post_count": 20,
        "demand_share": 0.1848,
        "post_count_3mo": 162,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": -0.0556,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "React",
        "role_count": 50,
        "company_count": 48,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 8,
        "salary_p50": 125000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 28,
        "ai_post_count": 20,
        "demand_share": 0.1812,
        "post_count_3mo": 183,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.3506,
        "salary_delta_3mo": -0.1071,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "TypeScript",
        "role_count": 49,
        "company_count": 47,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.3265,
        "salary_job_count": 11,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 172800,
        "remote_count": 31,
        "ai_post_count": 25,
        "demand_share": 0.1775,
        "post_count_3mo": 173,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.3951,
        "salary_delta_3mo": 0.1966,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "PostgreSQL",
        "role_count": 42,
        "company_count": 39,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.3571,
        "salary_job_count": 12,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 30,
        "ai_post_count": 22,
        "demand_share": 0.1522,
        "post_count_3mo": 122,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.05,
        "salary_delta_3mo": 0.5556,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "AWS",
        "role_count": 38,
        "company_count": 36,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 11,
        "salary_p50": 135400,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 23,
        "ai_post_count": 13,
        "demand_share": 0.1377,
        "post_count_3mo": 125,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.24,
        "salary_delta_3mo": 0.354,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Machine Learning",
        "role_count": 38,
        "company_count": 36,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.1316,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 21,
        "ai_post_count": 38,
        "demand_share": 0.1377,
        "post_count_3mo": 130,
        "salary_p50_3mo": 123041,
        "demand_delta_3mo": -0.1739,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Golang",
        "role_count": 29,
        "company_count": 29,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.3793,
        "salary_job_count": 3,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 19,
        "ai_post_count": 13,
        "demand_share": 0.1051,
        "post_count_3mo": 96,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.3256,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "DevOps",
        "role_count": 23,
        "company_count": 23,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3913,
        "salary_job_count": 5,
        "salary_p50": 110000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 16,
        "ai_post_count": 10,
        "demand_share": 0.0833,
        "post_count_3mo": 79,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.2069,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Docker",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 6,
        "salary_p50": 125000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 12,
        "ai_post_count": 10,
        "demand_share": 0.0652,
        "post_count_3mo": 36,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0.8,
        "salary_delta_3mo": 0.3889,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Node.js",
        "role_count": 18,
        "company_count": 17,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 5,
        "salary_p50": 110000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 14,
        "ai_post_count": 9,
        "demand_share": 0.0652,
        "post_count_3mo": 62,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": -0.1538,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Rust",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 2,
        "salary_p50": 120650,
        "salary_p75": 120650,
        "salary_p90": 120650,
        "remote_count": 10,
        "ai_post_count": 7,
        "demand_share": 0.0652,
        "post_count_3mo": 54,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2174,
        "salary_delta_3mo": -0.1957,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "API",
        "role_count": 17,
        "company_count": 15,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4118,
        "salary_job_count": 3,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 8,
        "ai_post_count": 8,
        "demand_share": 0.0616,
        "post_count_3mo": 55,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2609,
        "salary_delta_3mo": 0.0417,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Kubernetes",
        "role_count": 17,
        "company_count": 17,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.7059,
        "salary_job_count": 6,
        "salary_p50": 100000,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 11,
        "ai_post_count": 6,
        "demand_share": 0.0616,
        "post_count_3mo": 66,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.3929,
        "salary_delta_3mo": -0.2857,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Ruby on Rails",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2667,
        "salary_job_count": 3,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 11,
        "ai_post_count": 7,
        "demand_share": 0.0543,
        "post_count_3mo": 50,
        "salary_p50_3mo": 135000,
        "demand_delta_3mo": 0.875,
        "salary_delta_3mo": 1,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "JavaScript",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 9,
        "ai_post_count": 5,
        "demand_share": 0.0507,
        "post_count_3mo": 48,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.1765,
        "salary_delta_3mo": -0.2308,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "SaaS",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3571,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 10,
        "ai_post_count": 6,
        "demand_share": 0.0507,
        "post_count_3mo": 51,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Next.js",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 2,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0435,
        "post_count_3mo": 42,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": -0.2667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Web3",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 9,
        "ai_post_count": 3,
        "demand_share": 0.0435,
        "post_count_3mo": 36,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.0909,
        "salary_delta_3mo": -0.5,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "UI",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.0399,
        "post_count_3mo": 25,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": -0.1538,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Django",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.0362,
        "post_count_3mo": 29,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0909,
        "salary_delta_3mo": -0.8438,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "GCP",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 4,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0362,
        "post_count_3mo": 30,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.0909,
        "salary_delta_3mo": -0.2857,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "GitHub",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 1,
        "salary_p50": 250000,
        "salary_p75": 250000,
        "salary_p90": 250000,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.0362,
        "post_count_3mo": 30,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": 1.7778,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "LLM",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 4,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 3,
        "ai_post_count": 10,
        "demand_share": 0.0362,
        "post_count_3mo": 36,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.4286,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "React Native",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.0362,
        "post_count_3mo": 36,
        "salary_p50_3mo": 75000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Terraform",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.9,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.0362,
        "post_count_3mo": 34,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "UX",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.0362,
        "post_count_3mo": 28,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "B2B",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.0326,
        "post_count_3mo": 31,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "iOS",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0326,
        "post_count_3mo": 25,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.4375,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Android",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.029,
        "post_count_3mo": 26,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.5789,
        "salary_delta_3mo": 0.1966,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "C++",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.029,
        "post_count_3mo": 31,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "GraphQL",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 2,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.029,
        "post_count_3mo": 30,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.1111,
        "salary_delta_3mo": -0.4,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Vue.js",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 7,
        "ai_post_count": 1,
        "demand_share": 0.029,
        "post_count_3mo": 22,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 0.1429,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "C#",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0254,
        "post_count_3mo": 22,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "SQL",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0254,
        "post_count_3mo": 26,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": -0.3636,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Azure",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0217,
        "post_count_3mo": 12,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "FastAPI",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 60000,
        "salary_p75": 60000,
        "salary_p90": 60000,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0217,
        "post_count_3mo": 14,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": -0.5385,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Java",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0217,
        "post_count_3mo": 32,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.6842,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Linux",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0217,
        "post_count_3mo": 23,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": -0.4545,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "CI/CD",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 2,
        "salary_p50": 40000,
        "salary_p75": 40000,
        "salary_p90": 40000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0181,
        "post_count_3mo": 18,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": -0.5556,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Elixir",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 0,
        "demand_share": 0.0181,
        "post_count_3mo": 12,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "NLP",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 5,
        "demand_share": 0.0181,
        "post_count_3mo": 10,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Redis",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.8,
        "salary_job_count": 2,
        "salary_p50": 60000,
        "salary_p75": 60000,
        "salary_p90": 60000,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.0181,
        "post_count_3mo": 18,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "PHP",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 118800,
        "salary_p75": 118800,
        "salary_p90": 118800,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0145,
        "post_count_3mo": 13,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "PyTorch",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 250000,
        "salary_p75": 250000,
        "salary_p90": 250000,
        "remote_count": 1,
        "ai_post_count": 4,
        "demand_share": 0.0145,
        "post_count_3mo": 13,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": 0.9231,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Tailwind CSS",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0145,
        "post_count_3mo": 15,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.1538,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Windows",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0145,
        "post_count_3mo": 11,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Flutter",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0109,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Haskell",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0109,
        "post_count_3mo": 10,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Kafka",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0109,
        "post_count_3mo": 12,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "MySQL",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0109,
        "post_count_3mo": 14,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.5714,
        "salary_delta_3mo": -0.4,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Spring",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0109,
        "post_count_3mo": 11,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Wasm",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0109,
        "post_count_3mo": 7,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": 0.25,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": ".NET",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0072,
        "post_count_3mo": 11,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Assembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0072,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "CDC",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0072,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "CSS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0072,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Elasticsearch",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0072,
        "post_count_3mo": 7,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Flask",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0072,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "MongoDB",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0072,
        "post_count_3mo": 14,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "TensorFlow",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0072,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Angular",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0036,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0036,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0036,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "GitLab",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0036,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "HTML",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0036,
        "post_count_3mo": 3,
        "salary_p50_3mo": 250000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "MLOps",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0036,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "NoSQL",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0036,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "OCR",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0036,
        "post_count_3mo": 4,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "OCaml",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0036,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 1,
        "salary_p50": 120650,
        "salary_p75": 120650,
        "salary_p90": 120650,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0036,
        "post_count_3mo": 1,
        "salary_p50_3mo": 120650,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "Svelte",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0036,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "WebAssembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0036,
        "post_count_3mo": 6,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2025-01",
        "tech": "macOS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0036,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Artificial Intelligence",
        "role_count": 111,
        "company_count": 105,
        "salary_post_count": 36,
        "salary_transparency_rate": 0.3243,
        "salary_job_count": 20,
        "salary_p50": 123041,
        "salary_p75": 150000,
        "salary_p90": 180000,
        "remote_count": 52,
        "ai_post_count": 111,
        "demand_share": 0.3364,
        "post_count_3mo": 292,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.2907,
        "salary_delta_3mo": 0.1186,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Full Stack",
        "role_count": 84,
        "company_count": 79,
        "salary_post_count": 27,
        "salary_transparency_rate": 0.3214,
        "salary_job_count": 14,
        "salary_p50": 125000,
        "salary_p75": 150000,
        "salary_p90": 165000,
        "remote_count": 44,
        "ai_post_count": 44,
        "demand_share": 0.2545,
        "post_count_3mo": 255,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.0562,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Backend",
        "role_count": 72,
        "company_count": 65,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.2778,
        "salary_job_count": 10,
        "salary_p50": 100000,
        "salary_p75": 125000,
        "salary_p90": 150000,
        "remote_count": 42,
        "ai_post_count": 28,
        "demand_share": 0.2182,
        "post_count_3mo": 236,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0141,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Frontend",
        "role_count": 57,
        "company_count": 53,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.3509,
        "salary_job_count": 9,
        "salary_p50": 123041,
        "salary_p75": 127000,
        "salary_p90": 150000,
        "remote_count": 27,
        "ai_post_count": 23,
        "demand_share": 0.1727,
        "post_count_3mo": 165,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": -0.0806,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "React",
        "role_count": 57,
        "company_count": 55,
        "salary_post_count": 22,
        "salary_transparency_rate": 0.386,
        "salary_job_count": 11,
        "salary_p50": 145000,
        "salary_p75": 150000,
        "salary_p90": 240000,
        "remote_count": 31,
        "ai_post_count": 17,
        "demand_share": 0.1727,
        "post_count_3mo": 210,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1972,
        "salary_delta_3mo": 0.16,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "TypeScript",
        "role_count": 55,
        "company_count": 50,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.3455,
        "salary_job_count": 8,
        "salary_p50": 90000,
        "salary_p75": 125000,
        "salary_p90": 150000,
        "remote_count": 33,
        "ai_post_count": 19,
        "demand_share": 0.1667,
        "post_count_3mo": 205,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.127,
        "salary_delta_3mo": -0.3571,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Python",
        "role_count": 53,
        "company_count": 51,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.2642,
        "salary_job_count": 6,
        "salary_p50": 110000,
        "salary_p75": 125000,
        "salary_p90": 130000,
        "remote_count": 25,
        "ai_post_count": 25,
        "demand_share": 0.1606,
        "post_count_3mo": 180,
        "salary_p50_3mo": 112000,
        "demand_delta_3mo": -0.2535,
        "salary_delta_3mo": -0.3125,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "AWS",
        "role_count": 44,
        "company_count": 40,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.4318,
        "salary_job_count": 8,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 25,
        "ai_post_count": 15,
        "demand_share": 0.1333,
        "post_count_3mo": 137,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.1,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Machine Learning",
        "role_count": 39,
        "company_count": 38,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2051,
        "salary_job_count": 3,
        "salary_p50": 123041,
        "salary_p75": 123041,
        "salary_p90": 123041,
        "remote_count": 19,
        "ai_post_count": 39,
        "demand_share": 0.1182,
        "post_count_3mo": 138,
        "salary_p50_3mo": 123041,
        "demand_delta_3mo": -0.1522,
        "salary_delta_3mo": 0.2304,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "PostgreSQL",
        "role_count": 39,
        "company_count": 36,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.2821,
        "salary_job_count": 5,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 23,
        "ai_post_count": 13,
        "demand_share": 0.1182,
        "post_count_3mo": 120,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.1136,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Golang",
        "role_count": 33,
        "company_count": 31,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.4848,
        "salary_job_count": 9,
        "salary_p50": 140000,
        "salary_p75": 165000,
        "salary_p90": 175000,
        "remote_count": 23,
        "ai_post_count": 10,
        "demand_share": 0.1,
        "post_count_3mo": 110,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.0571,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "DevOps",
        "role_count": 28,
        "company_count": 27,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 16,
        "ai_post_count": 12,
        "demand_share": 0.0848,
        "post_count_3mo": 85,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.12,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "JavaScript",
        "role_count": 23,
        "company_count": 20,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3913,
        "salary_job_count": 5,
        "salary_p50": 110000,
        "salary_p75": 240000,
        "salary_p90": 240000,
        "remote_count": 13,
        "ai_post_count": 7,
        "demand_share": 0.0697,
        "post_count_3mo": 51,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": 0.2105,
        "salary_delta_3mo": -0.1538,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Node.js",
        "role_count": 22,
        "company_count": 20,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3182,
        "salary_job_count": 5,
        "salary_p50": 110000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 9,
        "ai_post_count": 7,
        "demand_share": 0.0667,
        "post_count_3mo": 68,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.1,
        "salary_delta_3mo": -0.12,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Kubernetes",
        "role_count": 21,
        "company_count": 21,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.619,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 11,
        "ai_post_count": 5,
        "demand_share": 0.0636,
        "post_count_3mo": 77,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1923,
        "salary_delta_3mo": 0.0769,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Ruby on Rails",
        "role_count": 19,
        "company_count": 18,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.1579,
        "salary_job_count": 1,
        "salary_p50": 135000,
        "salary_p75": 135000,
        "salary_p90": 135000,
        "remote_count": 15,
        "ai_post_count": 7,
        "demand_share": 0.0576,
        "post_count_3mo": 43,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": 0.4615,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Rust",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2778,
        "salary_job_count": 1,
        "salary_p50": 73000,
        "salary_p75": 73000,
        "salary_p90": 73000,
        "remote_count": 10,
        "ai_post_count": 5,
        "demand_share": 0.0545,
        "post_count_3mo": 59,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.1818,
        "salary_delta_3mo": -0.5133,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "SaaS",
        "role_count": 18,
        "company_count": 16,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2778,
        "salary_job_count": 2,
        "salary_p50": 146000,
        "salary_p75": 146000,
        "salary_p90": 146000,
        "remote_count": 13,
        "ai_post_count": 4,
        "demand_share": 0.0545,
        "post_count_3mo": 53,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "API",
        "role_count": 16,
        "company_count": 14,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 4,
        "salary_p50": 125000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 8,
        "ai_post_count": 3,
        "demand_share": 0.0485,
        "post_count_3mo": 61,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2381,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "LLM",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 3,
        "ai_post_count": 12,
        "demand_share": 0.0364,
        "post_count_3mo": 33,
        "salary_p50_3mo": 112000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": -0.3333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Next.js",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 240000,
        "salary_p75": 240000,
        "salary_p90": 240000,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0364,
        "post_count_3mo": 44,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2941,
        "salary_delta_3mo": 0.6,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Web3",
        "role_count": 12,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 2,
        "salary_p50": 60000,
        "salary_p75": 60000,
        "salary_p90": 60000,
        "remote_count": 9,
        "ai_post_count": 1,
        "demand_share": 0.0364,
        "post_count_3mo": 35,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "C++",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0333,
        "post_count_3mo": 39,
        "salary_p50_3mo": 112000,
        "demand_delta_3mo": -0.1538,
        "salary_delta_3mo": -0.2614,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Django",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 1,
        "salary_p50": 86400,
        "salary_p75": 86400,
        "salary_p90": 86400,
        "remote_count": 8,
        "ai_post_count": 4,
        "demand_share": 0.0333,
        "post_count_3mo": 30,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": 0.5714,
        "salary_delta_3mo": -0.6544,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "GitHub",
        "role_count": 11,
        "company_count": 9,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4545,
        "salary_job_count": 2,
        "salary_p50": 145000,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 9,
        "ai_post_count": 2,
        "demand_share": 0.0333,
        "post_count_3mo": 32,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": -0.2667,
        "salary_delta_3mo": -0.3409,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Java",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4545,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0333,
        "post_count_3mo": 45,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.4211,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Terraform",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.8,
        "salary_job_count": 2,
        "salary_p50": 73000,
        "salary_p75": 73000,
        "salary_p90": 73000,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.0303,
        "post_count_3mo": 36,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": -0.5133,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "CI/CD",
        "role_count": 9,
        "company_count": 7,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5556,
        "salary_job_count": 3,
        "salary_p50": 165000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.0273,
        "post_count_3mo": 20,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 1.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Docker",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.0273,
        "post_count_3mo": 28,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": -0.3571,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "GCP",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 2,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 7,
        "ai_post_count": 5,
        "demand_share": 0.0273,
        "post_count_3mo": 31,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "React Native",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 2,
        "salary_p50": 73000,
        "salary_p75": 73000,
        "salary_p90": 73000,
        "remote_count": 5,
        "ai_post_count": 0,
        "demand_share": 0.0273,
        "post_count_3mo": 41,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": -0.2316,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Android",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0242,
        "post_count_3mo": 37,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.2727,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "B2B",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.0242,
        "post_count_3mo": 28,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Linux",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 73000,
        "salary_p75": 73000,
        "salary_p90": 73000,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.0242,
        "post_count_3mo": 28,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.1111,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "SQL",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0242,
        "post_count_3mo": 30,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "GraphQL",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5714,
        "salary_job_count": 3,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0212,
        "post_count_3mo": 31,
        "salary_p50_3mo": 101600,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Redis",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 1,
        "salary_p50": 165000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0212,
        "post_count_3mo": 19,
        "salary_p50_3mo": 165000,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": 0.0313,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "UI",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0212,
        "post_count_3mo": 27,
        "salary_p50_3mo": 60000,
        "demand_delta_3mo": -0.3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "UX",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 1,
        "salary_p50": 60000,
        "salary_p75": 60000,
        "salary_p90": 60000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0212,
        "post_count_3mo": 28,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": -0.4615,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "iOS",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0212,
        "post_count_3mo": 32,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.2222,
        "salary_delta_3mo": -0.375,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "C#",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0182,
        "post_count_3mo": 22,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Vue.js",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.0182,
        "post_count_3mo": 21,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": -0.28,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Kafka",
        "role_count": 5,
        "company_count": 3,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 1,
        "salary_p50": 165000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0152,
        "post_count_3mo": 15,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": 0.2692,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "MongoDB",
        "role_count": 5,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 165000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0152,
        "post_count_3mo": 16,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": 0.1786,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "PHP",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0152,
        "post_count_3mo": 14,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": 0.3636,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Tailwind CSS",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 250000,
        "salary_p75": 250000,
        "salary_p90": 250000,
        "remote_count": 4,
        "ai_post_count": 1,
        "demand_share": 0.0152,
        "post_count_3mo": 15,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Azure",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0121,
        "post_count_3mo": 10,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Elasticsearch",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 2,
        "salary_p50": 97200,
        "salary_p75": 97200,
        "salary_p90": 97200,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0121,
        "post_count_3mo": 6,
        "salary_p50_3mo": 97200,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.2523,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "MySQL",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 2,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0121,
        "post_count_3mo": 18,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.3571,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Windows",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0121,
        "post_count_3mo": 10,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "CLI",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0091,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "FastAPI",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0091,
        "post_count_3mo": 10,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Haskell",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0091,
        "post_count_3mo": 9,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "PyTorch",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0091,
        "post_count_3mo": 15,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.625,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Spring",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0091,
        "post_count_3mo": 12,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": ".NET",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0061,
        "post_count_3mo": 15,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Assembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0061,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Elixir",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0061,
        "post_count_3mo": 12,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Flask",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0061,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "HTML",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 250000,
        "salary_p75": 250000,
        "salary_p90": 250000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0061,
        "post_count_3mo": 2,
        "salary_p50_3mo": 250000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": 0.9231,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "NLP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0061,
        "post_count_3mo": 7,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "TensorFlow",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0061,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Wasm",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0061,
        "post_count_3mo": 6,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "WebAssembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0061,
        "post_count_3mo": 7,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Angular",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "CDC",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Clojure",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 5,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "F#",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Flutter",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 9,
        "salary_p50_3mo": 54000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "MLOps",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 8,
        "salary_p50_3mo": 70200,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "NoSQL",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 7,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "OCR",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 3,
        "salary_p50_3mo": 60000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "RabbitMQ",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "SDK",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 9,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "Svelte",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 4,
        "salary_p50_3mo": 60000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-12",
        "tech": "macOS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Artificial Intelligence",
        "role_count": 102,
        "company_count": 101,
        "salary_post_count": 33,
        "salary_transparency_rate": 0.3235,
        "salary_job_count": 15,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 170000,
        "remote_count": 54,
        "ai_post_count": 102,
        "demand_share": 0.3208,
        "post_count_3mo": 267,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0303,
        "salary_delta_3mo": -0.1875,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Full Stack",
        "role_count": 80,
        "company_count": 76,
        "salary_post_count": 27,
        "salary_transparency_rate": 0.3375,
        "salary_job_count": 11,
        "salary_p50": 110000,
        "salary_p75": 130000,
        "salary_p90": 160000,
        "remote_count": 39,
        "ai_post_count": 39,
        "demand_share": 0.2516,
        "post_count_3mo": 260,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.1011,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Backend",
        "role_count": 79,
        "company_count": 74,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.2532,
        "salary_job_count": 7,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 46,
        "ai_post_count": 36,
        "demand_share": 0.2484,
        "post_count_3mo": 235,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.026,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "React",
        "role_count": 76,
        "company_count": 73,
        "salary_post_count": 24,
        "salary_transparency_rate": 0.3158,
        "salary_job_count": 12,
        "salary_p50": 110000,
        "salary_p75": 130000,
        "salary_p90": 145000,
        "remote_count": 42,
        "ai_post_count": 30,
        "demand_share": 0.239,
        "post_count_3mo": 224,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0556,
        "salary_delta_3mo": -0.1538,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "TypeScript",
        "role_count": 69,
        "company_count": 65,
        "salary_post_count": 22,
        "salary_transparency_rate": 0.3188,
        "salary_job_count": 10,
        "salary_p50": 120000,
        "salary_p75": 130000,
        "salary_p90": 145000,
        "remote_count": 40,
        "ai_post_count": 28,
        "demand_share": 0.217,
        "post_count_3mo": 213,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0781,
        "salary_delta_3mo": -0.2,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Python",
        "role_count": 63,
        "company_count": 60,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 7,
        "salary_p50": 125000,
        "salary_p75": 130000,
        "salary_p90": 150000,
        "remote_count": 29,
        "ai_post_count": 34,
        "demand_share": 0.1981,
        "post_count_3mo": 198,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0328,
        "salary_delta_3mo": -0.0385,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Frontend",
        "role_count": 54,
        "company_count": 53,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.2778,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 30,
        "ai_post_count": 21,
        "demand_share": 0.1698,
        "post_count_3mo": 170,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0189,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Machine Learning",
        "role_count": 53,
        "company_count": 52,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.2264,
        "salary_job_count": 6,
        "salary_p50": 112000,
        "salary_p75": 150000,
        "salary_p90": 151200,
        "remote_count": 31,
        "ai_post_count": 53,
        "demand_share": 0.1667,
        "post_count_3mo": 145,
        "salary_p50_3mo": 112000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "AWS",
        "role_count": 43,
        "company_count": 39,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.3721,
        "salary_job_count": 7,
        "salary_p50": 125000,
        "salary_p75": 130000,
        "salary_p90": 140000,
        "remote_count": 26,
        "ai_post_count": 14,
        "demand_share": 0.1352,
        "post_count_3mo": 133,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.075,
        "salary_delta_3mo": -0.0385,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "PostgreSQL",
        "role_count": 41,
        "company_count": 36,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.3415,
        "salary_job_count": 5,
        "salary_p50": 125000,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 28,
        "ai_post_count": 11,
        "demand_share": 0.1289,
        "post_count_3mo": 125,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1389,
        "salary_delta_3mo": -0.0385,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Golang",
        "role_count": 34,
        "company_count": 33,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.4118,
        "salary_job_count": 7,
        "salary_p50": 140000,
        "salary_p75": 145000,
        "salary_p90": 150000,
        "remote_count": 23,
        "ai_post_count": 17,
        "demand_share": 0.1069,
        "post_count_3mo": 112,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": 0.0625,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "DevOps",
        "role_count": 28,
        "company_count": 27,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 17,
        "ai_post_count": 13,
        "demand_share": 0.0881,
        "post_count_3mo": 82,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.4,
        "salary_delta_3mo": -0.3684,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Kubernetes",
        "role_count": 28,
        "company_count": 27,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3214,
        "salary_job_count": 1,
        "salary_p50": 127000,
        "salary_p75": 127000,
        "salary_p90": 127000,
        "remote_count": 19,
        "ai_post_count": 11,
        "demand_share": 0.0881,
        "post_count_3mo": 82,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1667,
        "salary_delta_3mo": -0.1533,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "API",
        "role_count": 22,
        "company_count": 20,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 6,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 174000,
        "remote_count": 8,
        "ai_post_count": 10,
        "demand_share": 0.0692,
        "post_count_3mo": 66,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.4667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Node.js",
        "role_count": 22,
        "company_count": 19,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.4545,
        "salary_job_count": 4,
        "salary_p50": 110000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 11,
        "ai_post_count": 9,
        "demand_share": 0.0692,
        "post_count_3mo": 66,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.1852,
        "salary_delta_3mo": -0.0833,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "SaaS",
        "role_count": 19,
        "company_count": 17,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4211,
        "salary_job_count": 4,
        "salary_p50": 100000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 16,
        "ai_post_count": 7,
        "demand_share": 0.0597,
        "post_count_3mo": 55,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.0556,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Next.js",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 4,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 11,
        "ai_post_count": 9,
        "demand_share": 0.0566,
        "post_count_3mo": 49,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0588,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Rust",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 2,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 7,
        "ai_post_count": 7,
        "demand_share": 0.0566,
        "post_count_3mo": 63,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3077,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "React Native",
        "role_count": 17,
        "company_count": 15,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.1765,
        "salary_job_count": 2,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 9,
        "ai_post_count": 5,
        "demand_share": 0.0535,
        "post_count_3mo": 38,
        "salary_p50_3mo": 148590,
        "demand_delta_3mo": 0.2143,
        "salary_delta_3mo": -0.4231,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Ruby on Rails",
        "role_count": 16,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 13,
        "ai_post_count": 3,
        "demand_share": 0.0503,
        "post_count_3mo": 37,
        "salary_p50_3mo": 75000,
        "demand_delta_3mo": -0.0588,
        "salary_delta_3mo": -0.5,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "GraphQL",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4667,
        "salary_job_count": 4,
        "salary_p50": 100000,
        "salary_p75": 101600,
        "salary_p90": 101600,
        "remote_count": 9,
        "ai_post_count": 4,
        "demand_share": 0.0472,
        "post_count_3mo": 32,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Java",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2667,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 10,
        "ai_post_count": 6,
        "demand_share": 0.0472,
        "post_count_3mo": 53,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.3462,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "B2B",
        "role_count": 14,
        "company_count": 11,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 3,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 11,
        "ai_post_count": 5,
        "demand_share": 0.044,
        "post_count_3mo": 26,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.5556,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "LLM",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 14,
        "demand_share": 0.044,
        "post_count_3mo": 39,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.0667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Terraform",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 8,
        "ai_post_count": 4,
        "demand_share": 0.044,
        "post_count_3mo": 41,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0769,
        "salary_delta_3mo": -0.0769,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "C++",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 112000,
        "salary_p75": 112000,
        "salary_p90": 112000,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.0377,
        "post_count_3mo": 41,
        "salary_p50_3mo": 112000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": -0.4074,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Web3",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 9,
        "ai_post_count": 3,
        "demand_share": 0.0377,
        "post_count_3mo": 31,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "GCP",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.6364,
        "salary_job_count": 4,
        "salary_p50": 100000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0346,
        "post_count_3mo": 31,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.2222,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "JavaScript",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 1,
        "salary_p50": 174000,
        "salary_p75": 174000,
        "salary_p90": 174000,
        "remote_count": 8,
        "ai_post_count": 5,
        "demand_share": 0.0346,
        "post_count_3mo": 47,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": 0.3385,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "SQL",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 2,
        "salary_p50": 127000,
        "salary_p75": 127000,
        "salary_p90": 127000,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0346,
        "post_count_3mo": 28,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0.375,
        "salary_delta_3mo": -0.1241,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "UX",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 2,
        "salary_p50": 70000,
        "salary_p75": 70000,
        "salary_p90": 70000,
        "remote_count": 7,
        "ai_post_count": 8,
        "demand_share": 0.0346,
        "post_count_3mo": 34,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": -0.0833,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Android",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0314,
        "post_count_3mo": 40,
        "salary_p50_3mo": 148590,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "C#",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 3,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0283,
        "post_count_3mo": 23,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.125,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Docker",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5556,
        "salary_job_count": 3,
        "salary_p50": 127000,
        "salary_p75": 127000,
        "salary_p90": 127000,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.0283,
        "post_count_3mo": 33,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": 0.0583,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "GitHub",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 7,
        "demand_share": 0.0283,
        "post_count_3mo": 36,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": -0.5263,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Linux",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 2,
        "salary_p50": 127000,
        "salary_p75": 127000,
        "salary_p90": 127000,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.0283,
        "post_count_3mo": 29,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0.125,
        "salary_delta_3mo": -0.0231,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "iOS",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 7,
        "demand_share": 0.0283,
        "post_count_3mo": 34,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.4375,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Django",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0252,
        "post_count_3mo": 26,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.1429,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Vue.js",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 2,
        "demand_share": 0.0252,
        "post_count_3mo": 25,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.3846,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": ".NET",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 3,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 5,
        "ai_post_count": 0,
        "demand_share": 0.022,
        "post_count_3mo": 16,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.1667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "MongoDB",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.022,
        "post_count_3mo": 15,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 1.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "MySQL",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.022,
        "post_count_3mo": 18,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "UI",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.022,
        "post_count_3mo": 30,
        "salary_p50_3mo": 60000,
        "demand_delta_3mo": -0.3636,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "PyTorch",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 3,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 4,
        "ai_post_count": 6,
        "demand_share": 0.0189,
        "post_count_3mo": 20,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": -0.2308,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Redis",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0189,
        "post_count_3mo": 20,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.4545,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Tailwind CSS",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0189,
        "post_count_3mo": 13,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Elixir",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0157,
        "post_count_3mo": 16,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "FastAPI",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0157,
        "post_count_3mo": 13,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Spring",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0157,
        "post_count_3mo": 11,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "CI/CD",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0126,
        "post_count_3mo": 15,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Haskell",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0126,
        "post_count_3mo": 9,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Kafka",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0126,
        "post_count_3mo": 14,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.4286,
        "salary_delta_3mo": 0.0769,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "MLOps",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 4,
        "demand_share": 0.0126,
        "post_count_3mo": 9,
        "salary_p50_3mo": 70200,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "PHP",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 3,
        "salary_p50": 174000,
        "salary_p75": 174000,
        "salary_p90": 174000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0126,
        "post_count_3mo": 12,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": 0.5818,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Clojure",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0094,
        "post_count_3mo": 6,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Flutter",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0094,
        "post_count_3mo": 10,
        "salary_p50_3mo": 54000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "NLP",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0094,
        "post_count_3mo": 6,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "NoSQL",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0094,
        "post_count_3mo": 6,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "WebAssembly",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0094,
        "post_count_3mo": 7,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Windows",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0094,
        "post_count_3mo": 10,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Angular",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0063,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Assembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0063,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Azure",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0063,
        "post_count_3mo": 11,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": -0.0345,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "OCR",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 60000,
        "salary_p75": 60000,
        "salary_p90": 60000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0063,
        "post_count_3mo": 2,
        "salary_p50_3mo": 60000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "SDK",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0063,
        "post_count_3mo": 12,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Wasm",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0063,
        "post_count_3mo": 6,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "macOS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0063,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "CSS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 4,
        "salary_p50_3mo": 55000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "ECS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 4,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Elasticsearch",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 6,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "GitLab",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "OCaml",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "RabbitMQ",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Scala",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 175000,
        "salary_p75": 175000,
        "salary_p90": 175000,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 2,
        "salary_p50_3mo": 175000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-11",
        "tech": "Svelte",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 4,
        "salary_p50_3mo": 60000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Full Stack",
        "role_count": 91,
        "company_count": 86,
        "salary_post_count": 27,
        "salary_transparency_rate": 0.2967,
        "salary_job_count": 13,
        "salary_p50": 125000,
        "salary_p75": 174000,
        "salary_p90": 190000,
        "remote_count": 51,
        "ai_post_count": 35,
        "demand_share": 0.2758,
        "post_count_3mo": 269,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": -0.0619,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Backend",
        "role_count": 85,
        "company_count": 79,
        "salary_post_count": 24,
        "salary_transparency_rate": 0.2824,
        "salary_job_count": 11,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 42,
        "ai_post_count": 26,
        "demand_share": 0.2576,
        "post_count_3mo": 233,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.0556,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "TypeScript",
        "role_count": 81,
        "company_count": 76,
        "salary_post_count": 27,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 12,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 42,
        "ai_post_count": 27,
        "demand_share": 0.2455,
        "post_count_3mo": 208,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1408,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Artificial Intelligence",
        "role_count": 79,
        "company_count": 76,
        "salary_post_count": 28,
        "salary_transparency_rate": 0.3544,
        "salary_job_count": 10,
        "salary_p50": 130000,
        "salary_p75": 140000,
        "salary_p90": 174000,
        "remote_count": 31,
        "ai_post_count": 79,
        "demand_share": 0.2394,
        "post_count_3mo": 264,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.21,
        "salary_delta_3mo": 0.0833,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "React",
        "role_count": 77,
        "company_count": 74,
        "salary_post_count": 29,
        "salary_transparency_rate": 0.3766,
        "salary_job_count": 16,
        "salary_p50": 148590,
        "salary_p75": 160000,
        "salary_p90": 190000,
        "remote_count": 36,
        "ai_post_count": 26,
        "demand_share": 0.2333,
        "post_count_3mo": 220,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0405,
        "salary_delta_3mo": 0.0248,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Python",
        "role_count": 64,
        "company_count": 59,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.2188,
        "salary_job_count": 7,
        "salary_p50": 101600,
        "salary_p75": 130000,
        "salary_p90": 140000,
        "remote_count": 25,
        "ai_post_count": 29,
        "demand_share": 0.1939,
        "post_count_3mo": 196,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2099,
        "salary_delta_3mo": -0.1872,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Frontend",
        "role_count": 54,
        "company_count": 51,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.3148,
        "salary_job_count": 7,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 27,
        "ai_post_count": 12,
        "demand_share": 0.1636,
        "post_count_3mo": 169,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "AWS",
        "role_count": 50,
        "company_count": 46,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.36,
        "salary_job_count": 8,
        "salary_p50": 112000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 21,
        "ai_post_count": 13,
        "demand_share": 0.1515,
        "post_count_3mo": 130,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0638,
        "salary_delta_3mo": -0.2533,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Machine Learning",
        "role_count": 46,
        "company_count": 43,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.1522,
        "salary_job_count": 4,
        "salary_p50": 112000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 19,
        "ai_post_count": 46,
        "demand_share": 0.1394,
        "post_count_3mo": 145,
        "salary_p50_3mo": 112000,
        "demand_delta_3mo": -0.2698,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Golang",
        "role_count": 43,
        "company_count": 41,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.3953,
        "salary_job_count": 8,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 190000,
        "remote_count": 26,
        "ai_post_count": 8,
        "demand_share": 0.1303,
        "post_count_3mo": 110,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0488,
        "salary_delta_3mo": -0.1892,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "PostgreSQL",
        "role_count": 40,
        "company_count": 34,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 7,
        "salary_p50": 114300,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 21,
        "ai_post_count": 9,
        "demand_share": 0.1212,
        "post_count_3mo": 120,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.0476,
        "salary_delta_3mo": -0.1208,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "DevOps",
        "role_count": 29,
        "company_count": 28,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2759,
        "salary_job_count": 2,
        "salary_p50": 112000,
        "salary_p75": 112000,
        "salary_p90": 112000,
        "remote_count": 17,
        "ai_post_count": 7,
        "demand_share": 0.0879,
        "post_count_3mo": 74,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0333,
        "salary_delta_3mo": -0.4105,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Kubernetes",
        "role_count": 28,
        "company_count": 26,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 15,
        "ai_post_count": 6,
        "demand_share": 0.0848,
        "post_count_3mo": 78,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.037,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Node.js",
        "role_count": 24,
        "company_count": 22,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.2917,
        "salary_job_count": 2,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 15,
        "ai_post_count": 7,
        "demand_share": 0.0727,
        "post_count_3mo": 71,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2258,
        "salary_delta_3mo": 0.3,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "API",
        "role_count": 23,
        "company_count": 22,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.4348,
        "salary_job_count": 7,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 150000,
        "remote_count": 10,
        "ai_post_count": 6,
        "demand_share": 0.0697,
        "post_count_3mo": 59,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.15,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Rust",
        "role_count": 23,
        "company_count": 23,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2174,
        "salary_job_count": 4,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 14,
        "ai_post_count": 5,
        "demand_share": 0.0697,
        "post_count_3mo": 71,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.2105,
        "salary_delta_3mo": 0.1818,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Android",
        "role_count": 19,
        "company_count": 19,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3684,
        "salary_job_count": 3,
        "salary_p50": 148590,
        "salary_p75": 148590,
        "salary_p90": 148590,
        "remote_count": 7,
        "ai_post_count": 5,
        "demand_share": 0.0576,
        "post_count_3mo": 44,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1176,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Java",
        "role_count": 19,
        "company_count": 17,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3158,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 9,
        "ai_post_count": 6,
        "demand_share": 0.0576,
        "post_count_3mo": 53,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1176,
        "salary_delta_3mo": -0.125,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "JavaScript",
        "role_count": 17,
        "company_count": 17,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2353,
        "salary_job_count": 2,
        "salary_p50": 114300,
        "salary_p75": 114300,
        "salary_p90": 114300,
        "remote_count": 11,
        "ai_post_count": 6,
        "demand_share": 0.0515,
        "post_count_3mo": 58,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2273,
        "salary_delta_3mo": -0.1208,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "C++",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3125,
        "salary_job_count": 3,
        "salary_p50": 112000,
        "salary_p75": 112000,
        "salary_p90": 112000,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.0485,
        "post_count_3mo": 45,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.1429,
        "salary_delta_3mo": 0.0182,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "SaaS",
        "role_count": 16,
        "company_count": 14,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3125,
        "salary_job_count": 2,
        "salary_p50": 54000,
        "salary_p75": 54000,
        "salary_p90": 54000,
        "remote_count": 10,
        "ai_post_count": 6,
        "demand_share": 0.0485,
        "post_count_3mo": 54,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.3043,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "iOS",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 3,
        "salary_p50": 148590,
        "salary_p75": 148590,
        "salary_p90": 148590,
        "remote_count": 8,
        "ai_post_count": 6,
        "demand_share": 0.0485,
        "post_count_3mo": 41,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.1429,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "React Native",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4667,
        "salary_job_count": 6,
        "salary_p50": 148590,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 7,
        "ai_post_count": 3,
        "demand_share": 0.0455,
        "post_count_3mo": 35,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": -0.1968,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Next.js",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3571,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 8,
        "ai_post_count": 9,
        "demand_share": 0.0424,
        "post_count_3mo": 48,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "UI",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1538,
        "salary_job_count": 2,
        "salary_p50": 60000,
        "salary_p75": 60000,
        "salary_p90": 60000,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.0394,
        "post_count_3mo": 34,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": 0.3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "GitHub",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 4,
        "salary_p50": 88900,
        "salary_p75": 114300,
        "salary_p90": 114300,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0364,
        "post_count_3mo": 46,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Terraform",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 82550,
        "salary_p75": 82550,
        "salary_p90": 82550,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0364,
        "post_count_3mo": 40,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2941,
        "salary_delta_3mo": -0.4497,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Django",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 2,
        "salary_p50": 82550,
        "salary_p75": 82550,
        "salary_p90": 82550,
        "remote_count": 8,
        "ai_post_count": 5,
        "demand_share": 0.0333,
        "post_count_3mo": 25,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.0833,
        "salary_delta_3mo": -0.365,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "GCP",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3636,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0333,
        "post_count_3mo": 29,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2143,
        "salary_delta_3mo": -0.2432,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Linux",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 3,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0333,
        "post_count_3mo": 28,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": 0.2222,
        "salary_delta_3mo": 1,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "SQL",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 1,
        "salary_p50": 101600,
        "salary_p75": 101600,
        "salary_p90": 101600,
        "remote_count": 7,
        "ai_post_count": 3,
        "demand_share": 0.0333,
        "post_count_3mo": 25,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": 0.1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Web3",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 9,
        "ai_post_count": 0,
        "demand_share": 0.0333,
        "post_count_3mo": 31,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": -0.0833,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Docker",
        "role_count": 10,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 114300,
        "salary_p75": 114300,
        "salary_p90": 114300,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0303,
        "post_count_3mo": 39,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": -0.0856,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "UX",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 2,
        "salary_p50": 60000,
        "salary_p75": 60000,
        "salary_p90": 60000,
        "remote_count": 4,
        "ai_post_count": 5,
        "demand_share": 0.0303,
        "post_count_3mo": 35,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "GraphQL",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.7778,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.0273,
        "post_count_3mo": 26,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Ruby on Rails",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 1,
        "salary_p50": 114300,
        "salary_p75": 114300,
        "salary_p90": 114300,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0242,
        "post_count_3mo": 38,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": -0.3276,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "C#",
        "role_count": 7,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 2,
        "salary_p50": 60000,
        "salary_p75": 60000,
        "salary_p90": 60000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0212,
        "post_count_3mo": 22,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": -0.2222,
        "salary_delta_3mo": -0.4545,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "CI/CD",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 1,
        "salary_p50": 114300,
        "salary_p75": 114300,
        "salary_p90": 114300,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0212,
        "post_count_3mo": 16,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": 0.75,
        "salary_delta_3mo": -0.0475,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "LLM",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5714,
        "salary_job_count": 1,
        "salary_p50": 112000,
        "salary_p75": 112000,
        "salary_p90": 112000,
        "remote_count": 1,
        "ai_post_count": 7,
        "demand_share": 0.0212,
        "post_count_3mo": 40,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": -0.2533,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "MySQL",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0212,
        "post_count_3mo": 19,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Vue.js",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 1,
        "demand_share": 0.0212,
        "post_count_3mo": 30,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.3636,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": ".NET",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0182,
        "post_count_3mo": 15,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": -0.2667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "B2B",
        "role_count": 6,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 1,
        "demand_share": 0.0182,
        "post_count_3mo": 21,
        "salary_p50_3mo": 76200,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Kafka",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0182,
        "post_count_3mo": 17,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "PyTorch",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 70200,
        "salary_p75": 70200,
        "salary_p90": 70200,
        "remote_count": 2,
        "ai_post_count": 6,
        "demand_share": 0.0182,
        "post_count_3mo": 18,
        "salary_p50_3mo": 70200,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Redis",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0182,
        "post_count_3mo": 25,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "SDK",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0182,
        "post_count_3mo": 15,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Elixir",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 0,
        "demand_share": 0.0152,
        "post_count_3mo": 15,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.2857,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Flutter",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 1,
        "salary_p50": 54000,
        "salary_p75": 54000,
        "salary_p90": 54000,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0152,
        "post_count_3mo": 12,
        "salary_p50_3mo": 54000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "PHP",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0152,
        "post_count_3mo": 10,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Azure",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0121,
        "post_count_3mo": 17,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "MongoDB",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0121,
        "post_count_3mo": 11,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": 0.1667,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Spring",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0121,
        "post_count_3mo": 9,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Tailwind CSS",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0121,
        "post_count_3mo": 13,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "MLOps",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 70200,
        "salary_p75": 70200,
        "salary_p90": 70200,
        "remote_count": 0,
        "ai_post_count": 3,
        "demand_share": 0.0091,
        "post_count_3mo": 7,
        "salary_p50_3mo": 85000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "NoSQL",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0091,
        "post_count_3mo": 3,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Windows",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0091,
        "post_count_3mo": 10,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Assembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0061,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "FastAPI",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0061,
        "post_count_3mo": 11,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "GitLab",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0061,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Haskell",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0061,
        "post_count_3mo": 6,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "NLP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0061,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Svelte",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 60000,
        "salary_p75": 60000,
        "salary_p90": 60000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0061,
        "post_count_3mo": 3,
        "salary_p50_3mo": 60000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "TensorFlow",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0061,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Wasm",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 86400,
        "salary_p75": 86400,
        "salary_p90": 86400,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0061,
        "post_count_3mo": 7,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "WebAssembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0061,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "macOS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0061,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Angular",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.8,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 5,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Clojure",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 3,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 4,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "ECS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Elasticsearch",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.003,
        "post_count_3mo": 9,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "FFmpeg",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "OCaml",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-10",
        "tech": "jQuery",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.003,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Full Stack",
        "role_count": 89,
        "company_count": 80,
        "salary_post_count": 30,
        "salary_transparency_rate": 0.3371,
        "salary_job_count": 9,
        "salary_p50": 125000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 50,
        "ai_post_count": 36,
        "demand_share": 0.2928,
        "post_count_3mo": 275,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0723,
        "salary_delta_3mo": -0.3056,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Artificial Intelligence",
        "role_count": 86,
        "company_count": 78,
        "salary_post_count": 28,
        "salary_transparency_rate": 0.3256,
        "salary_job_count": 14,
        "salary_p50": 130000,
        "salary_p75": 160000,
        "salary_p90": 175000,
        "remote_count": 44,
        "ai_post_count": 86,
        "demand_share": 0.2829,
        "post_count_3mo": 285,
        "salary_p50_3mo": 149000,
        "demand_delta_3mo": -0.0753,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Backend",
        "role_count": 71,
        "company_count": 65,
        "salary_post_count": 22,
        "salary_transparency_rate": 0.3099,
        "salary_job_count": 14,
        "salary_p50": 127000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 42,
        "ai_post_count": 27,
        "demand_share": 0.2336,
        "post_count_3mo": 238,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.0533,
        "salary_delta_3mo": -0.0987,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Python",
        "role_count": 71,
        "company_count": 65,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.2394,
        "salary_job_count": 9,
        "salary_p50": 130000,
        "salary_p75": 175000,
        "salary_p90": 220000,
        "remote_count": 36,
        "ai_post_count": 38,
        "demand_share": 0.2336,
        "post_count_3mo": 213,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.2241,
        "salary_delta_3mo": -0.2121,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "React",
        "role_count": 71,
        "company_count": 67,
        "salary_post_count": 24,
        "salary_transparency_rate": 0.338,
        "salary_job_count": 10,
        "salary_p50": 125000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 42,
        "ai_post_count": 29,
        "demand_share": 0.2336,
        "post_count_3mo": 217,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.1452,
        "salary_delta_3mo": 0.0417,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "TypeScript",
        "role_count": 63,
        "company_count": 57,
        "salary_post_count": 26,
        "salary_transparency_rate": 0.4127,
        "salary_job_count": 12,
        "salary_p50": 140000,
        "salary_p75": 152400,
        "salary_p90": 160000,
        "remote_count": 34,
        "ai_post_count": 25,
        "demand_share": 0.2072,
        "post_count_3mo": 198,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.05,
        "salary_delta_3mo": 0.75,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Frontend",
        "role_count": 62,
        "company_count": 59,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.2742,
        "salary_job_count": 9,
        "salary_p50": 130000,
        "salary_p75": 152400,
        "salary_p90": 160000,
        "remote_count": 38,
        "ai_post_count": 18,
        "demand_share": 0.2039,
        "post_count_3mo": 169,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.1481,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Machine Learning",
        "role_count": 46,
        "company_count": 43,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.2391,
        "salary_job_count": 5,
        "salary_p50": 100000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 25,
        "ai_post_count": 46,
        "demand_share": 0.1513,
        "post_count_3mo": 162,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": -0.2698,
        "salary_delta_3mo": -0.3333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "PostgreSQL",
        "role_count": 44,
        "company_count": 40,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.3636,
        "salary_job_count": 11,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 31,
        "ai_post_count": 14,
        "demand_share": 0.1447,
        "post_count_3mo": 122,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": 0.8667,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "AWS",
        "role_count": 40,
        "company_count": 36,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.45,
        "salary_job_count": 7,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 21,
        "ai_post_count": 20,
        "demand_share": 0.1316,
        "post_count_3mo": 127,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": 0.0833,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Golang",
        "role_count": 35,
        "company_count": 32,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.3429,
        "salary_job_count": 6,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 20,
        "ai_post_count": 7,
        "demand_share": 0.1151,
        "post_count_3mo": 108,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2391,
        "salary_delta_3mo": 0.1667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Kubernetes",
        "role_count": 26,
        "company_count": 22,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 152400,
        "salary_p90": 152400,
        "remote_count": 15,
        "ai_post_count": 10,
        "demand_share": 0.0855,
        "post_count_3mo": 77,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.1333,
        "salary_delta_3mo": -0.0064,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "DevOps",
        "role_count": 25,
        "company_count": 24,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.32,
        "salary_job_count": 7,
        "salary_p50": 140000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 16,
        "ai_post_count": 10,
        "demand_share": 0.0822,
        "post_count_3mo": 75,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.087,
        "salary_delta_3mo": -0.0064,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Rust",
        "role_count": 22,
        "company_count": 22,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 3,
        "salary_p50": 152400,
        "salary_p75": 152400,
        "salary_p90": 152400,
        "remote_count": 13,
        "ai_post_count": 3,
        "demand_share": 0.0724,
        "post_count_3mo": 67,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1,
        "salary_delta_3mo": 0.1723,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "API",
        "role_count": 21,
        "company_count": 19,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 2,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 12,
        "ai_post_count": 9,
        "demand_share": 0.0691,
        "post_count_3mo": 56,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.3125,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Node.js",
        "role_count": 20,
        "company_count": 18,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 5,
        "salary_p50": 125000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 13,
        "ai_post_count": 6,
        "demand_share": 0.0658,
        "post_count_3mo": 78,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.3103,
        "salary_delta_3mo": 0.25,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "SaaS",
        "role_count": 20,
        "company_count": 16,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 13,
        "ai_post_count": 3,
        "demand_share": 0.0658,
        "post_count_3mo": 61,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.1765,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Java",
        "role_count": 19,
        "company_count": 17,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3158,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 10,
        "ai_post_count": 5,
        "demand_share": 0.0625,
        "post_count_3mo": 51,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.3571,
        "salary_delta_3mo": -0.0064,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "JavaScript",
        "role_count": 19,
        "company_count": 17,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2632,
        "salary_job_count": 4,
        "salary_p50": 110000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 10,
        "ai_post_count": 4,
        "demand_share": 0.0625,
        "post_count_3mo": 63,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.3214,
        "salary_delta_3mo": 1.2917,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "LLM",
        "role_count": 18,
        "company_count": 17,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 4,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 9,
        "ai_post_count": 18,
        "demand_share": 0.0592,
        "post_count_3mo": 47,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.3846,
        "salary_delta_3mo": 0.04,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Next.js",
        "role_count": 17,
        "company_count": 16,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4706,
        "salary_job_count": 6,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 175000,
        "remote_count": 9,
        "ai_post_count": 10,
        "demand_share": 0.0559,
        "post_count_3mo": 50,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.0625,
        "salary_delta_3mo": 0.1667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "GitHub",
        "role_count": 15,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2667,
        "salary_job_count": 1,
        "salary_p50": 220000,
        "salary_p75": 220000,
        "salary_p90": 220000,
        "remote_count": 9,
        "ai_post_count": 8,
        "demand_share": 0.0493,
        "post_count_3mo": 46,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.0625,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Terraform",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 8,
        "ai_post_count": 5,
        "demand_share": 0.0493,
        "post_count_3mo": 45,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.0625,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Docker",
        "role_count": 14,
        "company_count": 11,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 10,
        "ai_post_count": 3,
        "demand_share": 0.0461,
        "post_count_3mo": 49,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0769,
        "salary_delta_3mo": -0.125,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "C++",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 1,
        "salary_p50": 176000,
        "salary_p75": 176000,
        "salary_p90": 176000,
        "remote_count": 7,
        "ai_post_count": 3,
        "demand_share": 0.0428,
        "post_count_3mo": 43,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.0714,
        "salary_delta_3mo": 0.1,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Ruby on Rails",
        "role_count": 13,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1538,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 8,
        "ai_post_count": 4,
        "demand_share": 0.0428,
        "post_count_3mo": 42,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.1875,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "UX",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.5385,
        "salary_job_count": 4,
        "salary_p50": 70000,
        "salary_p75": 70000,
        "salary_p90": 70000,
        "remote_count": 7,
        "ai_post_count": 7,
        "demand_share": 0.0428,
        "post_count_3mo": 30,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": 0.3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Android",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0362,
        "post_count_3mo": 42,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.2667,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "UI",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 2,
        "salary_p50": 38100,
        "salary_p75": 38100,
        "salary_p90": 38100,
        "remote_count": 7,
        "ai_post_count": 2,
        "demand_share": 0.0329,
        "post_count_3mo": 31,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Vue.js",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1,
        "salary_job_count": 1,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 8,
        "ai_post_count": 3,
        "demand_share": 0.0329,
        "post_count_3mo": 34,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": 0.4286,
        "salary_delta_3mo": -0.0385,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "GCP",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 5,
        "ai_post_count": 7,
        "demand_share": 0.0296,
        "post_count_3mo": 32,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.1,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Linux",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0296,
        "post_count_3mo": 26,
        "salary_p50_3mo": 76200,
        "demand_delta_3mo": 0.8,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "iOS",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 2,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0296,
        "post_count_3mo": 39,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": -0.1818,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "GraphQL",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.0263,
        "post_count_3mo": 26,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "PyTorch",
        "role_count": 8,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 2,
        "salary_p50": 70000,
        "salary_p75": 70000,
        "salary_p90": 70000,
        "remote_count": 3,
        "ai_post_count": 8,
        "demand_share": 0.0263,
        "post_count_3mo": 16,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 1.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Redis",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0263,
        "post_count_3mo": 28,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": 1,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Web3",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 0,
        "demand_share": 0.0263,
        "post_count_3mo": 32,
        "salary_p50_3mo": 105000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "C#",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 2,
        "salary_p50": 70000,
        "salary_p75": 70000,
        "salary_p90": 70000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.023,
        "post_count_3mo": 24,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Django",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 2,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.023,
        "post_count_3mo": 26,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.3636,
        "salary_delta_3mo": 0.0833,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "B2B",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 76200,
        "salary_p75": 76200,
        "salary_p90": 76200,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0197,
        "post_count_3mo": 23,
        "salary_p50_3mo": 76200,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Elixir",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 0,
        "demand_share": 0.0197,
        "post_count_3mo": 17,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "FastAPI",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 4,
        "ai_post_count": 5,
        "demand_share": 0.0197,
        "post_count_3mo": 14,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "React Native",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 95000,
        "salary_p75": 95000,
        "salary_p90": 95000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0197,
        "post_count_3mo": 29,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": -0.1364,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "SQL",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0197,
        "post_count_3mo": 24,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": -0.5385,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Azure",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0164,
        "post_count_3mo": 25,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "CI/CD",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0132,
        "post_count_3mo": 13,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Elasticsearch",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0132,
        "post_count_3mo": 10,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "HTML",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 55000,
        "salary_p75": 55000,
        "salary_p90": 55000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0132,
        "post_count_3mo": 11,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": -0.56,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Kafka",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0132,
        "post_count_3mo": 16,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "MongoDB",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0132,
        "post_count_3mo": 15,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "MySQL",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0132,
        "post_count_3mo": 20,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "SDK",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 2,
        "salary_p50": 70000,
        "salary_p75": 70000,
        "salary_p90": 70000,
        "remote_count": 4,
        "ai_post_count": 1,
        "demand_share": 0.0132,
        "post_count_3mo": 14,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Windows",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 176000,
        "salary_p75": 176000,
        "salary_p90": 176000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0132,
        "post_count_3mo": 12,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": ".NET",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0099,
        "post_count_3mo": 17,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Assembly",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0099,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "CSS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 55000,
        "salary_p75": 55000,
        "salary_p90": 55000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0099,
        "post_count_3mo": 9,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.625,
        "salary_delta_3mo": -0.56,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "GitLab",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0099,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Haskell",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0099,
        "post_count_3mo": 4,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "PHP",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0099,
        "post_count_3mo": 10,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Tailwind CSS",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0099,
        "post_count_3mo": 12,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Clojure",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 152400,
        "salary_p75": 152400,
        "salary_p90": 152400,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0066,
        "post_count_3mo": 2,
        "salary_p50_3mo": 152400,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Dart",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0066,
        "post_count_3mo": 3,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "ECS",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0066,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Flask",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0066,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Flutter",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0066,
        "post_count_3mo": 11,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "MLOps",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0066,
        "post_count_3mo": 6,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "OpenCV",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0066,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Spring",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0066,
        "post_count_3mo": 7,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Wasm",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 152400,
        "salary_p75": 152400,
        "salary_p90": 152400,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0066,
        "post_count_3mo": 6,
        "salary_p50_3mo": 152400,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.1723,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "WebAssembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0066,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Angular",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 12,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 6,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "F#",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "JSON",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "NLP",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "OCaml",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "RabbitMQ",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Scala",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.8,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "Svelte",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.8,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "TensorFlow",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "jQuery",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-09",
        "tech": "macOS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Artificial Intelligence",
        "role_count": 99,
        "company_count": 91,
        "salary_post_count": 28,
        "salary_transparency_rate": 0.2828,
        "salary_job_count": 12,
        "salary_p50": 150000,
        "salary_p75": 152400,
        "salary_p90": 160000,
        "remote_count": 50,
        "ai_post_count": 99,
        "demand_share": 0.3046,
        "post_count_3mo": 292,
        "salary_p50_3mo": 149000,
        "demand_delta_3mo": -0.0481,
        "salary_delta_3mo": 0.5,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Full Stack",
        "role_count": 89,
        "company_count": 85,
        "salary_post_count": 24,
        "salary_transparency_rate": 0.2697,
        "salary_job_count": 10,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 150000,
        "remote_count": 50,
        "ai_post_count": 36,
        "demand_share": 0.2738,
        "post_count_3mo": 269,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.1909,
        "salary_delta_3mo": 0.3,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Backend",
        "role_count": 77,
        "company_count": 73,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.2597,
        "salary_job_count": 7,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 48,
        "ai_post_count": 33,
        "demand_share": 0.2369,
        "post_count_3mo": 242,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.1047,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "React",
        "role_count": 72,
        "company_count": 70,
        "salary_post_count": 21,
        "salary_transparency_rate": 0.2917,
        "salary_job_count": 8,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 150000,
        "remote_count": 42,
        "ai_post_count": 27,
        "demand_share": 0.2215,
        "post_count_3mo": 208,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.0886,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "TypeScript",
        "role_count": 64,
        "company_count": 62,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.2813,
        "salary_job_count": 7,
        "salary_p50": 150000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 35,
        "ai_post_count": 27,
        "demand_share": 0.1969,
        "post_count_3mo": 195,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.1233,
        "salary_delta_3mo": 0.0714,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Python",
        "role_count": 61,
        "company_count": 58,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.1803,
        "salary_job_count": 8,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 28,
        "ai_post_count": 27,
        "demand_share": 0.1877,
        "post_count_3mo": 200,
        "salary_p50_3mo": 145300,
        "demand_delta_3mo": -0.2078,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Frontend",
        "role_count": 53,
        "company_count": 50,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.3396,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 32,
        "ai_post_count": 18,
        "demand_share": 0.1631,
        "post_count_3mo": 161,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.0862,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Machine Learning",
        "role_count": 53,
        "company_count": 52,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.1887,
        "salary_job_count": 2,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 27,
        "ai_post_count": 53,
        "demand_share": 0.1631,
        "post_count_3mo": 179,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0816,
        "salary_delta_3mo": -0.2143,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "AWS",
        "role_count": 40,
        "company_count": 36,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.425,
        "salary_job_count": 7,
        "salary_p50": 130000,
        "salary_p75": 149000,
        "salary_p90": 150000,
        "remote_count": 16,
        "ai_post_count": 14,
        "demand_share": 0.1231,
        "post_count_3mo": 119,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.0256,
        "salary_delta_3mo": -0.2778,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "PostgreSQL",
        "role_count": 36,
        "company_count": 34,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.1944,
        "salary_job_count": 5,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 20,
        "ai_post_count": 11,
        "demand_share": 0.1108,
        "post_count_3mo": 111,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.027,
        "salary_delta_3mo": 0.1818,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Golang",
        "role_count": 32,
        "company_count": 29,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.3125,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 15,
        "ai_post_count": 10,
        "demand_share": 0.0985,
        "post_count_3mo": 119,
        "salary_p50_3mo": 170000,
        "demand_delta_3mo": -0.3191,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Node.js",
        "role_count": 27,
        "company_count": 26,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2963,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 18,
        "ai_post_count": 9,
        "demand_share": 0.0831,
        "post_count_3mo": 87,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.125,
        "salary_delta_3mo": 1,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Rust",
        "role_count": 26,
        "company_count": 26,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.1538,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 12,
        "ai_post_count": 8,
        "demand_share": 0.08,
        "post_count_3mo": 65,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.04,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Kubernetes",
        "role_count": 24,
        "company_count": 24,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.2917,
        "salary_job_count": 3,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 19,
        "ai_post_count": 5,
        "demand_share": 0.0738,
        "post_count_3mo": 81,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.1111,
        "salary_delta_3mo": -0.2778,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "JavaScript",
        "role_count": 22,
        "company_count": 21,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 4,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 12,
        "ai_post_count": 9,
        "demand_share": 0.0677,
        "post_count_3mo": 72,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.0833,
        "salary_delta_3mo": -0.2571,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "DevOps",
        "role_count": 20,
        "company_count": 20,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 2,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 11,
        "ai_post_count": 9,
        "demand_share": 0.0615,
        "post_count_3mo": 73,
        "salary_p50_3mo": 140900,
        "demand_delta_3mo": -0.3548,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "GitHub",
        "role_count": 19,
        "company_count": 16,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.4211,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 13,
        "ai_post_count": 11,
        "demand_share": 0.0585,
        "post_count_3mo": 47,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.5833,
        "salary_delta_3mo": -0.2,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "SaaS",
        "role_count": 18,
        "company_count": 16,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 11,
        "ai_post_count": 5,
        "demand_share": 0.0554,
        "post_count_3mo": 58,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Next.js",
        "role_count": 17,
        "company_count": 16,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3529,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 8,
        "ai_post_count": 11,
        "demand_share": 0.0523,
        "post_count_3mo": 49,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.2143,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Ruby on Rails",
        "role_count": 17,
        "company_count": 14,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2353,
        "salary_job_count": 2,
        "salary_p50": 127000,
        "salary_p75": 127000,
        "salary_p90": 127000,
        "remote_count": 11,
        "ai_post_count": 3,
        "demand_share": 0.0523,
        "post_count_3mo": 45,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.1333,
        "salary_delta_3mo": 0.5875,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "C++",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.1875,
        "salary_job_count": 2,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0492,
        "post_count_3mo": 44,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.2308,
        "salary_delta_3mo": -0.2,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "iOS",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4375,
        "salary_job_count": 3,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 10,
        "ai_post_count": 10,
        "demand_share": 0.0492,
        "post_count_3mo": 41,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.0667,
        "salary_delta_3mo": 0.0667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "API",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0462,
        "post_count_3mo": 51,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Docker",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2667,
        "salary_job_count": 3,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 9,
        "ai_post_count": 6,
        "demand_share": 0.0462,
        "post_count_3mo": 48,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": 0.0909,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Java",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2667,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 8,
        "ai_post_count": 5,
        "demand_share": 0.0462,
        "post_count_3mo": 46,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.1538,
        "salary_delta_3mo": -0.3333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "LLM",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2667,
        "salary_job_count": 2,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 7,
        "ai_post_count": 15,
        "demand_share": 0.0462,
        "post_count_3mo": 42,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.3636,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Android",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3571,
        "salary_job_count": 2,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 8,
        "ai_post_count": 6,
        "demand_share": 0.0431,
        "post_count_3mo": 46,
        "salary_p50_3mo": 148800,
        "demand_delta_3mo": -0.0667,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "React Native",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3571,
        "salary_job_count": 3,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 10,
        "ai_post_count": 4,
        "demand_share": 0.0431,
        "post_count_3mo": 32,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.2727,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Terraform",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 2,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 7,
        "ai_post_count": 3,
        "demand_share": 0.04,
        "post_count_3mo": 46,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.35,
        "salary_delta_3mo": -0.0714,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Vue.js",
        "role_count": 13,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1538,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 12,
        "ai_post_count": 1,
        "demand_share": 0.04,
        "post_count_3mo": 31,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.4444,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "UX",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0369,
        "post_count_3mo": 27,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Web3",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 9,
        "ai_post_count": 2,
        "demand_share": 0.0369,
        "post_count_3mo": 34,
        "salary_p50_3mo": 105000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Redis",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.0338,
        "post_count_3mo": 26,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.8333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "UI",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0909,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0338,
        "post_count_3mo": 31,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "B2B",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 2,
        "demand_share": 0.0277,
        "post_count_3mo": 24,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.8,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "GCP",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.0277,
        "post_count_3mo": 33,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.1818,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "GraphQL",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5556,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.0277,
        "post_count_3mo": 26,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.1818,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Azure",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 1,
        "salary_p50": 145000,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.0246,
        "post_count_3mo": 24,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "C#",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0246,
        "post_count_3mo": 24,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": 0.1429,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Linux",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 76200,
        "salary_p75": 76200,
        "salary_p90": 76200,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0246,
        "post_count_3mo": 22,
        "salary_p50_3mo": 76200,
        "demand_delta_3mo": -0.3846,
        "salary_delta_3mo": -0.4557,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "MySQL",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 7,
        "ai_post_count": 0,
        "demand_share": 0.0246,
        "post_count_3mo": 21,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": -0.3333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "SQL",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 3,
        "salary_p50": 145000,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0246,
        "post_count_3mo": 31,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.1429,
        "salary_delta_3mo": 1.4167,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Django",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 2,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0215,
        "post_count_3mo": 30,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.6111,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Kafka",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0215,
        "post_count_3mo": 17,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 1.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": ".NET",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0185,
        "post_count_3mo": 18,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Angular",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0185,
        "post_count_3mo": 15,
        "salary_p50_3mo": 165000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Tailwind CSS",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0185,
        "post_count_3mo": 12,
        "salary_p50_3mo": 75000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.0714,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "CI/CD",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 189000,
        "salary_p75": 189000,
        "salary_p90": 189000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0154,
        "post_count_3mo": 15,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Flutter",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0154,
        "post_count_3mo": 11,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "HTML",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0154,
        "post_count_3mo": 13,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "SDK",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0154,
        "post_count_3mo": 14,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Elasticsearch",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0123,
        "post_count_3mo": 10,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Elixir",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0123,
        "post_count_3mo": 16,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.4286,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "PyTorch",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 1,
        "ai_post_count": 4,
        "demand_share": 0.0123,
        "post_count_3mo": 11,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "CLI",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0092,
        "post_count_3mo": 8,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "CSS",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0092,
        "post_count_3mo": 14,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "FastAPI",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0092,
        "post_count_3mo": 12,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "MongoDB",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0092,
        "post_count_3mo": 16,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Spring",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0092,
        "post_count_3mo": 11,
        "salary_p50_3mo": 75600,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Wasm",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0092,
        "post_count_3mo": 6,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "WebAssembly",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0092,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Windows",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 76200,
        "salary_p75": 76200,
        "salary_p90": 76200,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0092,
        "post_count_3mo": 11,
        "salary_p50_3mo": 76200,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Assembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0062,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "F#",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0062,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Flask",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0062,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "MLOps",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0062,
        "post_count_3mo": 9,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "NLP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0062,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "PHP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0062,
        "post_count_3mo": 11,
        "salary_p50_3mo": 82550,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": -0.2667,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "TensorFlow",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0062,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "ECS",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "GitLab",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 9,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Haskell",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "OpenCV",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "PaaS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "RabbitMQ",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 6,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "Scala",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "SecOps",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0031,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-08",
        "tech": "jQuery",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0031,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Artificial Intelligence",
        "role_count": 100,
        "company_count": 93,
        "salary_post_count": 26,
        "salary_transparency_rate": 0.26,
        "salary_job_count": 6,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 47,
        "ai_post_count": 100,
        "demand_share": 0.2632,
        "post_count_3mo": 297,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.4706,
        "salary_delta_3mo": -0.0714,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Full Stack",
        "role_count": 97,
        "company_count": 90,
        "salary_post_count": 27,
        "salary_transparency_rate": 0.2784,
        "salary_job_count": 6,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 150000,
        "remote_count": 50,
        "ai_post_count": 34,
        "demand_share": 0.2553,
        "post_count_3mo": 290,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": 0.2125,
        "salary_delta_3mo": 0.0833,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Backend",
        "role_count": 90,
        "company_count": 83,
        "salary_post_count": 27,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 12,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 160000,
        "remote_count": 51,
        "ai_post_count": 34,
        "demand_share": 0.2368,
        "post_count_3mo": 251,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.3846,
        "salary_delta_3mo": -0.0714,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Python",
        "role_count": 81,
        "company_count": 79,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.2346,
        "salary_job_count": 10,
        "salary_p50": 127000,
        "salary_p75": 150000,
        "salary_p90": 175000,
        "remote_count": 44,
        "ai_post_count": 33,
        "demand_share": 0.2132,
        "post_count_3mo": 216,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.3279,
        "salary_delta_3mo": 0.0855,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "React",
        "role_count": 74,
        "company_count": 72,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.2297,
        "salary_job_count": 6,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 152000,
        "remote_count": 39,
        "ai_post_count": 21,
        "demand_share": 0.1947,
        "post_count_3mo": 215,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.2759,
        "salary_delta_3mo": -0.0714,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "TypeScript",
        "role_count": 71,
        "company_count": 69,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.2535,
        "salary_job_count": 9,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 152000,
        "remote_count": 31,
        "ai_post_count": 18,
        "demand_share": 0.1868,
        "post_count_3mo": 204,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.4792,
        "salary_delta_3mo": -0.1034,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Machine Learning",
        "role_count": 63,
        "company_count": 61,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.2063,
        "salary_job_count": 4,
        "salary_p50": 127000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 34,
        "ai_post_count": 63,
        "demand_share": 0.1658,
        "post_count_3mo": 175,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.4651,
        "salary_delta_3mo": 0.5875,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Frontend",
        "role_count": 54,
        "company_count": 51,
        "salary_post_count": 13,
        "salary_transparency_rate": 0.2407,
        "salary_job_count": 4,
        "salary_p50": 130000,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 28,
        "ai_post_count": 19,
        "demand_share": 0.1421,
        "post_count_3mo": 166,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.0182,
        "salary_delta_3mo": -0.0714,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "AWS",
        "role_count": 47,
        "company_count": 46,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.3191,
        "salary_job_count": 6,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 20,
        "ai_post_count": 15,
        "demand_share": 0.1237,
        "post_count_3mo": 118,
        "salary_p50_3mo": 136000,
        "demand_delta_3mo": 0.3429,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "PostgreSQL",
        "role_count": 42,
        "company_count": 40,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 3,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 24,
        "ai_post_count": 12,
        "demand_share": 0.1105,
        "post_count_3mo": 112,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.68,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Golang",
        "role_count": 41,
        "company_count": 41,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.2195,
        "salary_job_count": 3,
        "salary_p50": 185000,
        "salary_p75": 185000,
        "salary_p90": 185000,
        "remote_count": 23,
        "ai_post_count": 10,
        "demand_share": 0.1079,
        "post_count_3mo": 134,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.0465,
        "salary_delta_3mo": 0.3214,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Node.js",
        "role_count": 31,
        "company_count": 30,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.3226,
        "salary_job_count": 4,
        "salary_p50": 100000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 15,
        "ai_post_count": 6,
        "demand_share": 0.0816,
        "post_count_3mo": 84,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.55,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "DevOps",
        "role_count": 30,
        "company_count": 27,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 3,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 13,
        "ai_post_count": 11,
        "demand_share": 0.0789,
        "post_count_3mo": 84,
        "salary_p50_3mo": 136000,
        "demand_delta_3mo": 1.3077,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Kubernetes",
        "role_count": 27,
        "company_count": 25,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2963,
        "salary_job_count": 4,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 17,
        "ai_post_count": 8,
        "demand_share": 0.0711,
        "post_count_3mo": 84,
        "salary_p50_3mo": 136000,
        "demand_delta_3mo": 0.5882,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "SaaS",
        "role_count": 23,
        "company_count": 19,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2174,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 14,
        "ai_post_count": 9,
        "demand_share": 0.0605,
        "post_count_3mo": 64,
        "salary_p50_3mo": 98000,
        "demand_delta_3mo": 0.2105,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "JavaScript",
        "role_count": 22,
        "company_count": 22,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 3,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 10,
        "ai_post_count": 6,
        "demand_share": 0.0579,
        "post_count_3mo": 74,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.2222,
        "salary_delta_3mo": -0.3939,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "API",
        "role_count": 20,
        "company_count": 18,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.35,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 7,
        "ai_post_count": 8,
        "demand_share": 0.0526,
        "post_count_3mo": 56,
        "salary_p50_3mo": 136000,
        "demand_delta_3mo": 0.8182,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Docker",
        "role_count": 20,
        "company_count": 18,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 3,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 10,
        "ai_post_count": 7,
        "demand_share": 0.0526,
        "post_count_3mo": 43,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.8182,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Rust",
        "role_count": 19,
        "company_count": 18,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2105,
        "salary_job_count": 3,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 11,
        "ai_post_count": 6,
        "demand_share": 0.05,
        "post_count_3mo": 64,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.0556,
        "salary_delta_3mo": -0.2667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Android",
        "role_count": 17,
        "company_count": 17,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2353,
        "salary_job_count": 1,
        "salary_p50": 148800,
        "salary_p75": 148800,
        "salary_p90": 148800,
        "remote_count": 10,
        "ai_post_count": 6,
        "demand_share": 0.0447,
        "post_count_3mo": 47,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.3077,
        "salary_delta_3mo": 0.0333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Java",
        "role_count": 17,
        "company_count": 14,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1176,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 9,
        "ai_post_count": 5,
        "demand_share": 0.0447,
        "post_count_3mo": 44,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": 0.5455,
        "salary_delta_3mo": 0.0667,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Terraform",
        "role_count": 17,
        "company_count": 17,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2941,
        "salary_job_count": 2,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 9,
        "ai_post_count": 2,
        "demand_share": 0.0447,
        "post_count_3mo": 53,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1333,
        "salary_delta_3mo": -0.0714,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Next.js",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 8,
        "ai_post_count": 6,
        "demand_share": 0.0421,
        "post_count_3mo": 46,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.2308,
        "salary_delta_3mo": -0.6,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "C++",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3571,
        "salary_job_count": 2,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0368,
        "post_count_3mo": 41,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": -0.2143,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "GCP",
        "role_count": 14,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 9,
        "ai_post_count": 5,
        "demand_share": 0.0368,
        "post_count_3mo": 35,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 1.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "LLM",
        "role_count": 14,
        "company_count": 12,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3571,
        "salary_job_count": 3,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 7,
        "ai_post_count": 14,
        "demand_share": 0.0368,
        "post_count_3mo": 38,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.2727,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "iOS",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 1,
        "salary_p50": 148800,
        "salary_p75": 148800,
        "salary_p90": 148800,
        "remote_count": 8,
        "ai_post_count": 6,
        "demand_share": 0.0368,
        "post_count_3mo": 40,
        "salary_p50_3mo": 148800,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 2.1,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Azure",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0833,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 8,
        "ai_post_count": 3,
        "demand_share": 0.0316,
        "post_count_3mo": 22,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Django",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.0316,
        "post_count_3mo": 41,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "GitHub",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 75600,
        "salary_p75": 75600,
        "salary_p90": 75600,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.0316,
        "post_count_3mo": 40,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Ruby on Rails",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 1,
        "salary_p50": 170000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.0316,
        "post_count_3mo": 43,
        "salary_p50_3mo": 101600,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": 0.0303,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Web3",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.5833,
        "salary_job_count": 3,
        "salary_p50": 105000,
        "salary_p75": 105000,
        "salary_p90": 105000,
        "remote_count": 8,
        "ai_post_count": 3,
        "demand_share": 0.0316,
        "post_count_3mo": 38,
        "salary_p50_3mo": 105000,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Vue.js",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 2,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 9,
        "ai_post_count": 1,
        "demand_share": 0.0289,
        "post_count_3mo": 27,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.2222,
        "salary_delta_3mo": -0.4667,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "SQL",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 8,
        "ai_post_count": 3,
        "demand_share": 0.0263,
        "post_count_3mo": 30,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": 0.1111,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "UI",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 2,
        "salary_p50": 70000,
        "salary_p75": 70000,
        "salary_p90": 70000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0263,
        "post_count_3mo": 31,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.2308,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "C#",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1111,
        "salary_job_count": 1,
        "salary_p50": 70000,
        "salary_p75": 70000,
        "salary_p90": 70000,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0237,
        "post_count_3mo": 23,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": -0.1,
        "salary_delta_3mo": -0.5172,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "GraphQL",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0237,
        "post_count_3mo": 28,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Linux",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1111,
        "salary_job_count": 1,
        "salary_p50": 59400,
        "salary_p75": 59400,
        "salary_p90": 59400,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0237,
        "post_count_3mo": 27,
        "salary_p50_3mo": 59400,
        "demand_delta_3mo": -0.1,
        "salary_delta_3mo": -0.5757,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "React Native",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0237,
        "post_count_3mo": 29,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Redis",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0237,
        "post_count_3mo": 21,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.8,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": ".NET",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0211,
        "post_count_3mo": 16,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.1429,
        "salary_delta_3mo": 0.3158,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "B2B",
        "role_count": 8,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.0211,
        "post_count_3mo": 20,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.1111,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "MongoDB",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.0211,
        "post_count_3mo": 15,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 1.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "MySQL",
        "role_count": 8,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0211,
        "post_count_3mo": 19,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 7,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Elixir",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0184,
        "post_count_3mo": 19,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 2.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Angular",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0132,
        "post_count_3mo": 11,
        "salary_p50_3mo": 165000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "FastAPI",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 5,
        "demand_share": 0.0132,
        "post_count_3mo": 12,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Kafka",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0132,
        "post_count_3mo": 13,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "PHP",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 82550,
        "salary_p75": 82550,
        "salary_p90": 82550,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0132,
        "post_count_3mo": 13,
        "salary_p50_3mo": 82550,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "SDK",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 5,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 4,
        "ai_post_count": 1,
        "demand_share": 0.0132,
        "post_count_3mo": 15,
        "salary_p50_3mo": 190000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "UX",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 1,
        "salary_p50": 127000,
        "salary_p75": 127000,
        "salary_p90": 127000,
        "remote_count": 0,
        "ai_post_count": 4,
        "demand_share": 0.0132,
        "post_count_3mo": 24,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.4444,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Windows",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0132,
        "post_count_3mo": 13,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "CI/CD",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0105,
        "post_count_3mo": 11,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Flutter",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0105,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "GitLab",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0105,
        "post_count_3mo": 10,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "PyTorch",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 4,
        "demand_share": 0.0105,
        "post_count_3mo": 11,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "CSS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0079,
        "post_count_3mo": 12,
        "salary_p50_3mo": 75000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "NLP",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0079,
        "post_count_3mo": 10,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Tailwind CSS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0079,
        "post_count_3mo": 12,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "jQuery",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0079,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "CLI",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0053,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Elasticsearch",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0053,
        "post_count_3mo": 7,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Flask",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0053,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "HTML",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0053,
        "post_count_3mo": 10,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "MLOps",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0053,
        "post_count_3mo": 10,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "NoSQL",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0053,
        "post_count_3mo": 2,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "RabbitMQ",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0053,
        "post_count_3mo": 7,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Scala",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0053,
        "post_count_3mo": 10,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Spring",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0053,
        "post_count_3mo": 10,
        "salary_p50_3mo": 75600,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "TensorFlow",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0053,
        "post_count_3mo": 8,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Assembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0026,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "ECS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0026,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "F#",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0026,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "OCR",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0026,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "OCaml",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0026,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "OpenCV",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0026,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "PaaS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0026,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0026,
        "post_count_3mo": 4,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "WebAssembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0026,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-07",
        "tech": "macOS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0026,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Artificial Intelligence",
        "role_count": 93,
        "company_count": 86,
        "salary_post_count": 22,
        "salary_transparency_rate": 0.2366,
        "salary_job_count": 9,
        "salary_p50": 125000,
        "salary_p75": 150000,
        "salary_p90": 165000,
        "remote_count": 42,
        "ai_post_count": 93,
        "demand_share": 0.2735,
        "post_count_3mo": 265,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.3099,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Full Stack",
        "role_count": 83,
        "company_count": 80,
        "salary_post_count": 28,
        "salary_transparency_rate": 0.3373,
        "salary_job_count": 9,
        "salary_p50": 100000,
        "salary_p75": 175260,
        "salary_p90": 180000,
        "remote_count": 45,
        "ai_post_count": 29,
        "demand_share": 0.2441,
        "post_count_3mo": 273,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.0235,
        "salary_delta_3mo": 1,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Backend",
        "role_count": 75,
        "company_count": 71,
        "salary_post_count": 25,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 10,
        "salary_p50": 86400,
        "salary_p75": 120000,
        "salary_p90": 140900,
        "remote_count": 41,
        "ai_post_count": 25,
        "demand_share": 0.2206,
        "post_count_3mo": 226,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0.1719,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Machine Learning",
        "role_count": 63,
        "company_count": 58,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.1746,
        "salary_job_count": 5,
        "salary_p50": 130000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 25,
        "ai_post_count": 63,
        "demand_share": 0.1853,
        "post_count_3mo": 155,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.4318,
        "salary_delta_3mo": -0.2353,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "React",
        "role_count": 62,
        "company_count": 62,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.3226,
        "salary_job_count": 11,
        "salary_p50": 110000,
        "salary_p75": 130000,
        "salary_p90": 180000,
        "remote_count": 39,
        "ai_post_count": 21,
        "demand_share": 0.1824,
        "post_count_3mo": 199,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.1143,
        "salary_delta_3mo": -0.2143,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "TypeScript",
        "role_count": 60,
        "company_count": 60,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.2667,
        "salary_job_count": 8,
        "salary_p50": 76200,
        "salary_p75": 86400,
        "salary_p90": 180000,
        "remote_count": 33,
        "ai_post_count": 21,
        "demand_share": 0.1765,
        "post_count_3mo": 181,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.0714,
        "salary_delta_3mo": -0.4557,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Python",
        "role_count": 58,
        "company_count": 56,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.1379,
        "salary_job_count": 5,
        "salary_p50": 165000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 30,
        "ai_post_count": 25,
        "demand_share": 0.1706,
        "post_count_3mo": 196,
        "salary_p50_3mo": 145300,
        "demand_delta_3mo": -0.0645,
        "salary_delta_3mo": 0.1,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Frontend",
        "role_count": 54,
        "company_count": 52,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.3519,
        "salary_job_count": 9,
        "salary_p50": 100000,
        "salary_p75": 130000,
        "salary_p90": 180000,
        "remote_count": 30,
        "ai_post_count": 16,
        "demand_share": 0.1588,
        "post_count_3mo": 167,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.0526,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Golang",
        "role_count": 46,
        "company_count": 44,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.1957,
        "salary_job_count": 3,
        "salary_p50": 170000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 27,
        "ai_post_count": 13,
        "demand_share": 0.1353,
        "post_count_3mo": 136,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.15,
        "salary_delta_3mo": 0.0692,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "PostgreSQL",
        "role_count": 33,
        "company_count": 32,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2424,
        "salary_job_count": 7,
        "salary_p50": 76200,
        "salary_p75": 86400,
        "salary_p90": 160000,
        "remote_count": 17,
        "ai_post_count": 8,
        "demand_share": 0.0971,
        "post_count_3mo": 95,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.175,
        "salary_delta_3mo": -0.3932,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "AWS",
        "role_count": 32,
        "company_count": 30,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.4375,
        "salary_job_count": 7,
        "salary_p50": 120000,
        "salary_p75": 165000,
        "salary_p90": 180000,
        "remote_count": 19,
        "ai_post_count": 8,
        "demand_share": 0.0941,
        "post_count_3mo": 106,
        "salary_p50_3mo": 136000,
        "demand_delta_3mo": -0.1111,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Kubernetes",
        "role_count": 30,
        "company_count": 29,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.2333,
        "salary_job_count": 3,
        "salary_p50": 134400,
        "salary_p75": 134400,
        "salary_p90": 134400,
        "remote_count": 17,
        "ai_post_count": 6,
        "demand_share": 0.0882,
        "post_count_3mo": 74,
        "salary_p50_3mo": 134400,
        "demand_delta_3mo": 0.0714,
        "salary_delta_3mo": 0.12,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Node.js",
        "role_count": 29,
        "company_count": 28,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.3448,
        "salary_job_count": 6,
        "salary_p50": 100000,
        "salary_p75": 120000,
        "salary_p90": 130000,
        "remote_count": 16,
        "ai_post_count": 7,
        "demand_share": 0.0853,
        "post_count_3mo": 73,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.0645,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "JavaScript",
        "role_count": 28,
        "company_count": 27,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 3,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 16,
        "ai_post_count": 5,
        "demand_share": 0.0824,
        "post_count_3mo": 70,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.0769,
        "salary_delta_3mo": -0.4231,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "DevOps",
        "role_count": 23,
        "company_count": 23,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.2609,
        "salary_job_count": 2,
        "salary_p50": 134400,
        "salary_p75": 134400,
        "salary_p90": 134400,
        "remote_count": 14,
        "ai_post_count": 4,
        "demand_share": 0.0676,
        "post_count_3mo": 67,
        "salary_p50_3mo": 136000,
        "demand_delta_3mo": -0.08,
        "salary_delta_3mo": 0.4933,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Rust",
        "role_count": 20,
        "company_count": 20,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 3,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 8,
        "ai_post_count": 6,
        "demand_share": 0.0588,
        "post_count_3mo": 63,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.1156,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "SaaS",
        "role_count": 17,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3529,
        "salary_job_count": 1,
        "salary_p50": 86140,
        "salary_p75": 86140,
        "salary_p90": 86140,
        "remote_count": 10,
        "ai_post_count": 5,
        "demand_share": 0.05,
        "post_count_3mo": 60,
        "salary_p50_3mo": 109500,
        "demand_delta_3mo": -0.0556,
        "salary_delta_3mo": -0.2822,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "API",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4375,
        "salary_job_count": 4,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 11,
        "ai_post_count": 7,
        "demand_share": 0.0471,
        "post_count_3mo": 47,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.2727,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "GitHub",
        "role_count": 16,
        "company_count": 14,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.625,
        "salary_job_count": 2,
        "salary_p50": 48000,
        "salary_p75": 48000,
        "salary_p90": 48000,
        "remote_count": 10,
        "ai_post_count": 10,
        "demand_share": 0.0471,
        "post_count_3mo": 42,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0.7778,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Next.js",
        "role_count": 16,
        "company_count": 14,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 4,
        "salary_p50": 100000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 7,
        "ai_post_count": 8,
        "demand_share": 0.0471,
        "post_count_3mo": 43,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Ruby on Rails",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3125,
        "salary_job_count": 2,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 8,
        "ai_post_count": 4,
        "demand_share": 0.0471,
        "post_count_3mo": 41,
        "salary_p50_3mo": 101600,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": -0.5455,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Terraform",
        "role_count": 16,
        "company_count": 16,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 2,
        "salary_p50": 165000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 11,
        "ai_post_count": 1,
        "demand_share": 0.0471,
        "post_count_3mo": 51,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.6,
        "salary_delta_3mo": 0.1786,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Android",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 2,
        "salary_p50": 75600,
        "salary_p75": 75600,
        "salary_p90": 75600,
        "remote_count": 9,
        "ai_post_count": 6,
        "demand_share": 0.0441,
        "post_count_3mo": 43,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.0714,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "C++",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.0412,
        "post_count_3mo": 43,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.3636,
        "salary_delta_3mo": 0.7778,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Java",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0714,
        "salary_job_count": 1,
        "salary_p50": 140900,
        "salary_p75": 140900,
        "salary_p90": 140900,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0412,
        "post_count_3mo": 38,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.2222,
        "salary_delta_3mo": 0.122,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Docker",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 3,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 11,
        "ai_post_count": 2,
        "demand_share": 0.0382,
        "post_count_3mo": 34,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.0833,
        "salary_delta_3mo": 0.3333,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "LLM",
        "role_count": 13,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 2,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 8,
        "ai_post_count": 13,
        "demand_share": 0.0382,
        "post_count_3mo": 35,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.4444,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "SQL",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 1,
        "salary_p50": 70000,
        "salary_p75": 70000,
        "salary_p90": 70000,
        "remote_count": 8,
        "ai_post_count": 4,
        "demand_share": 0.0382,
        "post_count_3mo": 29,
        "salary_p50_3mo": 76200,
        "demand_delta_3mo": 0.625,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Django",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0324,
        "post_count_3mo": 38,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": -0.0833,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "iOS",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4545,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 5,
        "ai_post_count": 6,
        "demand_share": 0.0324,
        "post_count_3mo": 40,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.2667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "GCP",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 2,
        "salary_p50": 70000,
        "salary_p75": 70000,
        "salary_p90": 70000,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.0294,
        "post_count_3mo": 27,
        "salary_p50_3mo": 70000,
        "demand_delta_3mo": 0.4286,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "UI",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 3,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0294,
        "post_count_3mo": 34,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.2308,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "UX",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 3,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0294,
        "post_count_3mo": 28,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.0909,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Web3",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 9,
        "ai_post_count": 2,
        "demand_share": 0.0294,
        "post_count_3mo": 40,
        "salary_p50_3mo": 180000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": 0.2,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "React Native",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 7,
        "ai_post_count": 2,
        "demand_share": 0.0265,
        "post_count_3mo": 26,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.1,
        "salary_delta_3mo": -0.2143,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "CSS",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 2,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.0235,
        "post_count_3mo": 13,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "GraphQL",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0235,
        "post_count_3mo": 25,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3846,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "B2B",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0206,
        "post_count_3mo": 21,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.4167,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "C#",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 1,
        "demand_share": 0.0206,
        "post_count_3mo": 24,
        "salary_p50_3mo": 114000,
        "demand_delta_3mo": 0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Vue.js",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.4286,
        "salary_job_count": 3,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0206,
        "post_count_3mo": 25,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": -0.4615,
        "salary_delta_3mo": 0.0352,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "CI/CD",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 86140,
        "salary_p75": 86140,
        "salary_p90": 86140,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0176,
        "post_count_3mo": 9,
        "salary_p50_3mo": 86140,
        "demand_delta_3mo": -0.1429,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "HTML",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0176,
        "post_count_3mo": 11,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Redis",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0176,
        "post_count_3mo": 17,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Spring",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 75600,
        "salary_p75": 75600,
        "salary_p90": 75600,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0176,
        "post_count_3mo": 9,
        "salary_p50_3mo": 75600,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Elixir",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0147,
        "post_count_3mo": 14,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Kafka",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0147,
        "post_count_3mo": 10,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Linux",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0147,
        "post_count_3mo": 28,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "MLOps",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 5,
        "demand_share": 0.0147,
        "post_count_3mo": 12,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "MongoDB",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0147,
        "post_count_3mo": 10,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "MySQL",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0147,
        "post_count_3mo": 12,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.1667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Scala",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 4,
        "demand_share": 0.0147,
        "post_count_3mo": 10,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Svelte",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 3,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0147,
        "post_count_3mo": 9,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 1.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": ".NET",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0118,
        "post_count_3mo": 15,
        "salary_p50_3mo": 114000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Angular",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 165000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0118,
        "post_count_3mo": 10,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Azure",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0118,
        "post_count_3mo": 14,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Elasticsearch",
        "role_count": 4,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0118,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "FastAPI",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 4,
        "demand_share": 0.0118,
        "post_count_3mo": 8,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "GitLab",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0118,
        "post_count_3mo": 9,
        "salary_p50_3mo": 114000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "PHP",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 10,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "SDK",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 1,
        "salary_p50": 190000,
        "salary_p75": 190000,
        "salary_p90": 190000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0118,
        "post_count_3mo": 14,
        "salary_p50_3mo": 190000,
        "demand_delta_3mo": -0.5556,
        "salary_delta_3mo": 0.2667,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "CLI",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0088,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "NLP",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0088,
        "post_count_3mo": 9,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "PyTorch",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0088,
        "post_count_3mo": 8,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "RabbitMQ",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 86400,
        "salary_p75": 86400,
        "salary_p90": 86400,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0088,
        "post_count_3mo": 5,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Tailwind CSS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0088,
        "post_count_3mo": 13,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": -0.375,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "WebAssembly",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0088,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Windows",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0088,
        "post_count_3mo": 12,
        "salary_p50_3mo": 144000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Clojure",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0059,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Flutter",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0059,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Haskell",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0059,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "TensorFlow",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0059,
        "post_count_3mo": 7,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Wasm",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 2,
        "salary_p50": 125000,
        "salary_p75": 125000,
        "salary_p90": 125000,
        "remote_count": 0,
        "ai_post_count": 2,
        "demand_share": 0.0059,
        "post_count_3mo": 4,
        "salary_p50_3mo": 125000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "jQuery",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0059,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Assembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "Dart",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "FFmpeg",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0029,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "JSON",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "PaaS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-06",
        "tech": "XML",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Full Stack",
        "role_count": 110,
        "company_count": 104,
        "salary_post_count": 23,
        "salary_transparency_rate": 0.2091,
        "salary_job_count": 11,
        "salary_p50": 110000,
        "salary_p75": 120000,
        "salary_p90": 175000,
        "remote_count": 53,
        "ai_post_count": 47,
        "demand_share": 0.2764,
        "post_count_3mo": 275,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.236,
        "salary_delta_3mo": -0.3714,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Artificial Intelligence",
        "role_count": 104,
        "company_count": 98,
        "salary_post_count": 26,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 11,
        "salary_p50": 120000,
        "salary_p75": 140000,
        "salary_p90": 175000,
        "remote_count": 50,
        "ai_post_count": 104,
        "demand_share": 0.2613,
        "post_count_3mo": 243,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.5072,
        "salary_delta_3mo": -0.3143,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Backend",
        "role_count": 86,
        "company_count": 79,
        "salary_post_count": 25,
        "salary_transparency_rate": 0.2907,
        "salary_job_count": 10,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 180000,
        "remote_count": 48,
        "ai_post_count": 40,
        "demand_share": 0.2161,
        "post_count_3mo": 215,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.2647,
        "salary_delta_3mo": -0.2571,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "React",
        "role_count": 79,
        "company_count": 71,
        "salary_post_count": 22,
        "salary_transparency_rate": 0.2785,
        "salary_job_count": 11,
        "salary_p50": 150000,
        "salary_p75": 175000,
        "salary_p90": 190000,
        "remote_count": 52,
        "ai_post_count": 31,
        "demand_share": 0.1985,
        "post_count_3mo": 207,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.1449,
        "salary_delta_3mo": 0.0345,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Python",
        "role_count": 77,
        "company_count": 72,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.1948,
        "salary_job_count": 6,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 175000,
        "remote_count": 44,
        "ai_post_count": 34,
        "demand_share": 0.1935,
        "post_count_3mo": 200,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 0.2031,
        "salary_delta_3mo": -0.0625,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "TypeScript",
        "role_count": 73,
        "company_count": 67,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.2329,
        "salary_job_count": 10,
        "salary_p50": 136000,
        "salary_p75": 150000,
        "salary_p90": 190000,
        "remote_count": 45,
        "ai_post_count": 24,
        "demand_share": 0.1834,
        "post_count_3mo": 177,
        "salary_p50_3mo": 136000,
        "demand_delta_3mo": 0.5208,
        "salary_delta_3mo": 0.1333,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Frontend",
        "role_count": 58,
        "company_count": 55,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.2586,
        "salary_job_count": 6,
        "salary_p50": 120000,
        "salary_p75": 130000,
        "salary_p90": 140000,
        "remote_count": 28,
        "ai_post_count": 28,
        "demand_share": 0.1457,
        "post_count_3mo": 170,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": 0.1373,
        "salary_delta_3mo": -0.3296,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Machine Learning",
        "role_count": 49,
        "company_count": 46,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.2245,
        "salary_job_count": 5,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 24,
        "ai_post_count": 49,
        "demand_share": 0.1231,
        "post_count_3mo": 136,
        "salary_p50_3mo": 98000,
        "demand_delta_3mo": -0.02,
        "salary_delta_3mo": -0.0667,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Golang",
        "role_count": 47,
        "company_count": 44,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.234,
        "salary_job_count": 6,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 190000,
        "remote_count": 35,
        "ai_post_count": 14,
        "demand_share": 0.1181,
        "post_count_3mo": 130,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.6786,
        "salary_delta_3mo": 0.25,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "AWS",
        "role_count": 39,
        "company_count": 36,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.4359,
        "salary_job_count": 6,
        "salary_p50": 136000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 21,
        "ai_post_count": 12,
        "demand_share": 0.098,
        "post_count_3mo": 110,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.025,
        "salary_delta_3mo": 0.0829,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "PostgreSQL",
        "role_count": 37,
        "company_count": 33,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2162,
        "salary_job_count": 6,
        "salary_p50": 100000,
        "salary_p75": 110000,
        "salary_p90": 140000,
        "remote_count": 23,
        "ai_post_count": 13,
        "demand_share": 0.093,
        "post_count_3mo": 102,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.0882,
        "salary_delta_3mo": -0.2037,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "DevOps",
        "role_count": 31,
        "company_count": 31,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2581,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 20,
        "ai_post_count": 6,
        "demand_share": 0.0779,
        "post_count_3mo": 69,
        "salary_p50_3mo": 136000,
        "demand_delta_3mo": 0.1923,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Kubernetes",
        "role_count": 27,
        "company_count": 23,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 136000,
        "salary_p75": 136000,
        "salary_p90": 136000,
        "remote_count": 16,
        "ai_post_count": 7,
        "demand_share": 0.0678,
        "post_count_3mo": 72,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.8,
        "salary_delta_3mo": 0.1333,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Rust",
        "role_count": 25,
        "company_count": 24,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.28,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 13,
        "ai_post_count": 7,
        "demand_share": 0.0628,
        "post_count_3mo": 63,
        "salary_p50_3mo": 147000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": -0.2,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "JavaScript",
        "role_count": 24,
        "company_count": 23,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 12,
        "ai_post_count": 8,
        "demand_share": 0.0603,
        "post_count_3mo": 68,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.2,
        "salary_delta_3mo": -0.2,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Node.js",
        "role_count": 24,
        "company_count": 21,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2083,
        "salary_job_count": 1,
        "salary_p50": 76200,
        "salary_p75": 76200,
        "salary_p90": 76200,
        "remote_count": 13,
        "ai_post_count": 5,
        "demand_share": 0.0603,
        "post_count_3mo": 75,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.0475,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "SaaS",
        "role_count": 24,
        "company_count": 22,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.2917,
        "salary_job_count": 2,
        "salary_p50": 98000,
        "salary_p75": 98000,
        "salary_p90": 98000,
        "remote_count": 15,
        "ai_post_count": 7,
        "demand_share": 0.0603,
        "post_count_3mo": 61,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": 0.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "API",
        "role_count": 20,
        "company_count": 17,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 3,
        "salary_p50": 136000,
        "salary_p75": 136000,
        "salary_p90": 136000,
        "remote_count": 9,
        "ai_post_count": 9,
        "demand_share": 0.0503,
        "post_count_3mo": 53,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Terraform",
        "role_count": 20,
        "company_count": 18,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.45,
        "salary_job_count": 2,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 13,
        "ai_post_count": 2,
        "demand_share": 0.0503,
        "post_count_3mo": 45,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.8182,
        "salary_delta_3mo": -0.0833,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Django",
        "role_count": 18,
        "company_count": 17,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2778,
        "salary_job_count": 3,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 10,
        "ai_post_count": 7,
        "demand_share": 0.0452,
        "post_count_3mo": 39,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": 1.6,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Web3",
        "role_count": 16,
        "company_count": 14,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 2,
        "salary_p50": 44000,
        "salary_p75": 44000,
        "salary_p90": 44000,
        "remote_count": 12,
        "ai_post_count": 5,
        "demand_share": 0.0402,
        "post_count_3mo": 40,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.6,
        "salary_delta_3mo": -0.78,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Android",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 12,
        "ai_post_count": 8,
        "demand_share": 0.0377,
        "post_count_3mo": 42,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": -0.2941,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Ruby on Rails",
        "role_count": 15,
        "company_count": 13,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 101600,
        "salary_p75": 101600,
        "salary_p90": 101600,
        "remote_count": 9,
        "ai_post_count": 2,
        "demand_share": 0.0377,
        "post_count_3mo": 33,
        "salary_p50_3mo": 101600,
        "demand_delta_3mo": -0.1176,
        "salary_delta_3mo": -0.3842,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "iOS",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 11,
        "ai_post_count": 9,
        "demand_share": 0.0377,
        "post_count_3mo": 44,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Next.js",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3571,
        "salary_job_count": 2,
        "salary_p50": 114300,
        "salary_p75": 114300,
        "salary_p90": 114300,
        "remote_count": 8,
        "ai_post_count": 9,
        "demand_share": 0.0352,
        "post_count_3mo": 43,
        "salary_p50_3mo": 114300,
        "demand_delta_3mo": 0.0769,
        "salary_delta_3mo": 0.4288,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "C++",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0327,
        "post_count_3mo": 51,
        "salary_p50_3mo": 114000,
        "demand_delta_3mo": -0.4091,
        "salary_delta_3mo": 0.6667,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Java",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1538,
        "salary_job_count": 1,
        "salary_p50": 180000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 8,
        "ai_post_count": 6,
        "demand_share": 0.0327,
        "post_count_3mo": 42,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": -0.3158,
        "salary_delta_3mo": 0.4333,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Linux",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.0327,
        "post_count_3mo": 33,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "GitHub",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.5833,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0302,
        "post_count_3mo": 35,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": 0.3043,
        "quadrant": "Premium niche",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "GCP",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 9,
        "ai_post_count": 4,
        "demand_share": 0.0276,
        "post_count_3mo": 24,
        "salary_p50_3mo": 48000,
        "demand_delta_3mo": 0.1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "GraphQL",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 8,
        "ai_post_count": 8,
        "demand_share": 0.0276,
        "post_count_3mo": 30,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "LLM",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4545,
        "salary_job_count": 2,
        "salary_p50": 76200,
        "salary_p75": 76200,
        "salary_p90": 76200,
        "remote_count": 7,
        "ai_post_count": 11,
        "demand_share": 0.0276,
        "post_count_3mo": 31,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 0.2222,
        "salary_delta_3mo": -0.4138,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "React Native",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 8,
        "ai_post_count": 3,
        "demand_share": 0.0276,
        "post_count_3mo": 27,
        "salary_p50_3mo": 88900,
        "demand_delta_3mo": 1.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "UI",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0276,
        "post_count_3mo": 37,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.3125,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Docker",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 1,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 8,
        "ai_post_count": 1,
        "demand_share": 0.0251,
        "post_count_3mo": 33,
        "salary_p50_3mo": 110000,
        "demand_delta_3mo": -0.2308,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "UX",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 6,
        "demand_share": 0.0226,
        "post_count_3mo": 29,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": -0.1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Vue.js",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 2,
        "salary_p50": 48260,
        "salary_p75": 48260,
        "salary_p90": 48260,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0226,
        "post_count_3mo": 31,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": -0.4,
        "salary_delta_3mo": -0.3968,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "C#",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0176,
        "post_count_3mo": 21,
        "salary_p50_3mo": 114000,
        "demand_delta_3mo": -0.125,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Elixir",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0176,
        "post_count_3mo": 13,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "SQL",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 1,
        "salary_p50": 76200,
        "salary_p75": 76200,
        "salary_p90": 76200,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0176,
        "post_count_3mo": 24,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.4615,
        "salary_delta_3mo": -0.365,
        "quadrant": "Cooling or stable",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Azure",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0151,
        "post_count_3mo": 13,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "MySQL",
        "role_count": 6,
        "company_count": 3,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0151,
        "post_count_3mo": 13,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Redis",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0151,
        "post_count_3mo": 20,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": 0.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "SDK",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 190000,
        "salary_p75": 190000,
        "salary_p90": 190000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0151,
        "post_count_3mo": 19,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Tailwind CSS",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 110000,
        "salary_p75": 110000,
        "salary_p90": 110000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0151,
        "post_count_3mo": 12,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": -0.3125,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "B2B",
        "role_count": 5,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0126,
        "post_count_3mo": 26,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Windows",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0126,
        "post_count_3mo": 13,
        "salary_p50_3mo": 144000,
        "demand_delta_3mo": 0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": ".NET",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0101,
        "post_count_3mo": 14,
        "salary_p50_3mo": 114000,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "NLP",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 4,
        "demand_share": 0.0101,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "PHP",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0101,
        "post_count_3mo": 10,
        "salary_p50_3mo": 63500,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "PyTorch",
        "role_count": 4,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 4,
        "demand_share": 0.0101,
        "post_count_3mo": 9,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": -0.7,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "TensorFlow",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 4,
        "demand_share": 0.0101,
        "post_count_3mo": 7,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0.3333,
        "salary_delta_3mo": -0.7,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "CLI",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0075,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "ECS",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0075,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "FastAPI",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0075,
        "post_count_3mo": 5,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Kafka",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0075,
        "post_count_3mo": 11,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "MLOps",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 3,
        "demand_share": 0.0075,
        "post_count_3mo": 8,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Scala",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0075,
        "post_count_3mo": 9,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": -0.25,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Angular",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.005,
        "post_count_3mo": 10,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "GitLab",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.005,
        "post_count_3mo": 7,
        "salary_p50_3mo": 114000,
        "demand_delta_3mo": -0.6667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "HTML",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.005,
        "post_count_3mo": 11,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "MongoDB",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.005,
        "post_count_3mo": 11,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "RabbitMQ",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.005,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "SecOps",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.005,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Spring",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.005,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Svelte",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.005,
        "post_count_3mo": 6,
        "salary_p50_3mo": 300000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Assembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "CI/CD",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 10,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": -0.8571,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "CSS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 9,
        "salary_p50_3mo": 275000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Elasticsearch",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "F#",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Flask",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 5,
        "salary_p50_3mo": 109500,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Flutter",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 9,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Haskell",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "JSON",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "OCR",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0025,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "WebAssembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-05",
        "tech": "macOS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0025,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": -0.75,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Full Stack",
        "role_count": 80,
        "company_count": 76,
        "salary_post_count": 24,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 12,
        "salary_p50": 127000,
        "salary_p75": 145000,
        "salary_p90": 150000,
        "remote_count": 43,
        "ai_post_count": 28,
        "demand_share": 0.2749,
        "post_count_3mo": 254,
        "salary_p50_3mo": 127000,
        "demand_delta_3mo": 3.2105,
        "salary_delta_3mo": -0.1533,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Artificial Intelligence",
        "role_count": 68,
        "company_count": 63,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.2206,
        "salary_job_count": 9,
        "salary_p50": 127000,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 39,
        "ai_post_count": 68,
        "demand_share": 0.2337,
        "post_count_3mo": 208,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 1.9565,
        "salary_delta_3mo": -0.2944,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Backend",
        "role_count": 65,
        "company_count": 61,
        "salary_post_count": 20,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 10,
        "salary_p50": 130000,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 41,
        "ai_post_count": 20,
        "demand_share": 0.2234,
        "post_count_3mo": 197,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 2.6111,
        "salary_delta_3mo": -0.1333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Python",
        "role_count": 61,
        "company_count": 56,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.2295,
        "salary_job_count": 8,
        "salary_p50": 114000,
        "salary_p75": 127000,
        "salary_p90": 150000,
        "remote_count": 34,
        "ai_post_count": 32,
        "demand_share": 0.2096,
        "post_count_3mo": 187,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 1.7727,
        "salary_delta_3mo": 0.14,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "React",
        "role_count": 58,
        "company_count": 54,
        "salary_post_count": 21,
        "salary_transparency_rate": 0.3621,
        "salary_job_count": 8,
        "salary_p50": 109500,
        "salary_p75": 140000,
        "salary_p90": 150000,
        "remote_count": 39,
        "ai_post_count": 24,
        "demand_share": 0.1993,
        "post_count_3mo": 197,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 2.0526,
        "salary_delta_3mo": -0.0875,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Frontend",
        "role_count": 55,
        "company_count": 50,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.3091,
        "salary_job_count": 8,
        "salary_p50": 140000,
        "salary_p75": 145000,
        "salary_p90": 185000,
        "remote_count": 32,
        "ai_post_count": 18,
        "demand_share": 0.189,
        "post_count_3mo": 163,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 2.4375,
        "salary_delta_3mo": 0.75,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "TypeScript",
        "role_count": 48,
        "company_count": 44,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.2083,
        "salary_job_count": 2,
        "salary_p50": 109500,
        "salary_p75": 109500,
        "salary_p90": 109500,
        "remote_count": 31,
        "ai_post_count": 14,
        "demand_share": 0.1649,
        "post_count_3mo": 152,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 3.3636,
        "salary_delta_3mo": -0.0875,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Golang",
        "role_count": 43,
        "company_count": 40,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.2093,
        "salary_job_count": 3,
        "salary_p50": 117000,
        "salary_p75": 117000,
        "salary_p90": 117000,
        "remote_count": 27,
        "ai_post_count": 14,
        "demand_share": 0.1478,
        "post_count_3mo": 111,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 4.375,
        "salary_delta_3mo": -0.22,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Machine Learning",
        "role_count": 43,
        "company_count": 41,
        "salary_post_count": 12,
        "salary_transparency_rate": 0.2791,
        "salary_job_count": 6,
        "salary_p50": 80000,
        "salary_p75": 130000,
        "salary_p90": 140000,
        "remote_count": 23,
        "ai_post_count": 43,
        "demand_share": 0.1478,
        "post_count_3mo": 137,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 2.5833,
        "salary_delta_3mo": -0.3333,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "AWS",
        "role_count": 35,
        "company_count": 31,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.2286,
        "salary_job_count": 2,
        "salary_p50": 109500,
        "salary_p75": 109500,
        "salary_p90": 109500,
        "remote_count": 17,
        "ai_post_count": 12,
        "demand_share": 0.1203,
        "post_count_3mo": 111,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 2.8889,
        "salary_delta_3mo": 0.095,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "PostgreSQL",
        "role_count": 25,
        "company_count": 23,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.16,
        "salary_job_count": 2,
        "salary_p50": 109500,
        "salary_p75": 109500,
        "salary_p90": 109500,
        "remote_count": 16,
        "ai_post_count": 9,
        "demand_share": 0.0859,
        "post_count_3mo": 99,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": 3.1667,
        "salary_delta_3mo": 0.095,
        "quadrant": "Hot and expensive",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Node.js",
        "role_count": 20,
        "company_count": 17,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.35,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 13,
        "ai_post_count": 4,
        "demand_share": 0.0687,
        "post_count_3mo": 75,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 2.3333,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "SaaS",
        "role_count": 19,
        "company_count": 18,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.3684,
        "salary_job_count": 2,
        "salary_p50": 109500,
        "salary_p75": 109500,
        "salary_p90": 109500,
        "remote_count": 13,
        "ai_post_count": 6,
        "demand_share": 0.0653,
        "post_count_3mo": 52,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 2.1667,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "JavaScript",
        "role_count": 18,
        "company_count": 16,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 2,
        "salary_p50": 54000,
        "salary_p75": 54000,
        "salary_p90": 54000,
        "remote_count": 8,
        "ai_post_count": 3,
        "demand_share": 0.0619,
        "post_count_3mo": 74,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": -0.46,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Rust",
        "role_count": 18,
        "company_count": 16,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 12,
        "ai_post_count": 4,
        "demand_share": 0.0619,
        "post_count_3mo": 53,
        "salary_p50_3mo": 147000,
        "demand_delta_3mo": 3.5,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Kubernetes",
        "role_count": 17,
        "company_count": 15,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2941,
        "salary_job_count": 1,
        "salary_p50": 109500,
        "salary_p75": 109500,
        "salary_p90": 109500,
        "remote_count": 11,
        "ai_post_count": 5,
        "demand_share": 0.0584,
        "post_count_3mo": 60,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 4.6667,
        "salary_delta_3mo": -0.0875,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "C++",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 4,
        "salary_p50": 114000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 7,
        "ai_post_count": 3,
        "demand_share": 0.055,
        "post_count_3mo": 60,
        "salary_p50_3mo": 114000,
        "demand_delta_3mo": 4.3333,
        "salary_delta_3mo": 2.8,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Terraform",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 11,
        "ai_post_count": 3,
        "demand_share": 0.0515,
        "post_count_3mo": 36,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 2.75,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "GitHub",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.6429,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 11,
        "ai_post_count": 4,
        "demand_share": 0.0481,
        "post_count_3mo": 39,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 2.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Web3",
        "role_count": 14,
        "company_count": 11,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 185000,
        "salary_p75": 185000,
        "salary_p90": 185000,
        "remote_count": 10,
        "ai_post_count": 2,
        "demand_share": 0.0481,
        "post_count_3mo": 34,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "iOS",
        "role_count": 14,
        "company_count": 13,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 2,
        "salary_p50": 51840,
        "salary_p75": 51840,
        "salary_p90": 51840,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0481,
        "post_count_3mo": 38,
        "salary_p50_3mo": 75000,
        "demand_delta_3mo": 1.3333,
        "salary_delta_3mo": -0.6655,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Android",
        "role_count": 13,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 1,
        "salary_p50": 144000,
        "salary_p75": 144000,
        "salary_p90": 144000,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.0447,
        "post_count_3mo": 37,
        "salary_p50_3mo": 144000,
        "demand_delta_3mo": 3.3333,
        "salary_delta_3mo": -0.04,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "DevOps",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 8,
        "ai_post_count": 3,
        "demand_share": 0.0447,
        "post_count_3mo": 64,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": 1.6,
        "salary_delta_3mo": 0,
        "quadrant": "Demand up, pay flat",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Next.js",
        "role_count": 13,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0447,
        "post_count_3mo": 42,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 2.25,
        "salary_delta_3mo": -0.3333,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "UI",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3077,
        "salary_job_count": 4,
        "salary_p50": 100000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 5,
        "ai_post_count": 6,
        "demand_share": 0.0447,
        "post_count_3mo": 42,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 1.6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "API",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 1,
        "salary_p50": 109500,
        "salary_p75": 109500,
        "salary_p90": 109500,
        "remote_count": 8,
        "ai_post_count": 6,
        "demand_share": 0.0378,
        "post_count_3mo": 48,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": 1.2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Docker",
        "role_count": 11,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 3,
        "demand_share": 0.0378,
        "post_count_3mo": 36,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 1.75,
        "salary_delta_3mo": 0.25,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Java",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 4,
        "ai_post_count": 5,
        "demand_share": 0.0378,
        "post_count_3mo": 48,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": 2.6667,
        "salary_delta_3mo": 0.2295,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "LLM",
        "role_count": 11,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3636,
        "salary_job_count": 3,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 7,
        "ai_post_count": 11,
        "demand_share": 0.0378,
        "post_count_3mo": 29,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": 2.6667,
        "salary_delta_3mo": -0.2778,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "C#",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 2,
        "salary_p50": 114000,
        "salary_p75": 114000,
        "salary_p90": 114000,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0344,
        "post_count_3mo": 22,
        "salary_p50_3mo": 114000,
        "demand_delta_3mo": 9,
        "salary_delta_3mo": 2.8,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Linux",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0344,
        "post_count_3mo": 33,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": 2.3333,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Ruby on Rails",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 2,
        "salary_p50": 88900,
        "salary_p75": 88900,
        "salary_p90": 88900,
        "remote_count": 8,
        "ai_post_count": 1,
        "demand_share": 0.0344,
        "post_count_3mo": 35,
        "salary_p50_3mo": 165000,
        "demand_delta_3mo": 2.3333,
        "salary_delta_3mo": -0.365,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "B2B",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0309,
        "post_count_3mo": 31,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": 3.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Django",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1111,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0309,
        "post_count_3mo": 33,
        "salary_p50_3mo": 54000,
        "demand_delta_3mo": 3.5,
        "salary_delta_3mo": 0.5,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "SQL",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0309,
        "post_count_3mo": 30,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 3.5,
        "salary_delta_3mo": 0.25,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "UX",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 4,
        "ai_post_count": 6,
        "demand_share": 0.0309,
        "post_count_3mo": 30,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 3.5,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Vue.js",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 4,
        "salary_p50": 145000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 8,
        "ai_post_count": 2,
        "demand_share": 0.0309,
        "post_count_3mo": 37,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": 1.25,
        "salary_delta_3mo": 0.45,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": ".NET",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 1,
        "salary_p50": 114000,
        "salary_p75": 114000,
        "salary_p90": 114000,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0241,
        "post_count_3mo": 16,
        "salary_p50_3mo": 114000,
        "demand_delta_3mo": 6,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "GCP",
        "role_count": 6,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 48000,
        "salary_p75": 48000,
        "salary_p90": 48000,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.0206,
        "post_count_3mo": 23,
        "salary_p50_3mo": 48000,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": -0.6,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "GraphQL",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 4,
        "demand_share": 0.0206,
        "post_count_3mo": 30,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "React Native",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 88900,
        "salary_p75": 88900,
        "salary_p90": 88900,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0206,
        "post_count_3mo": 20,
        "salary_p50_3mo": 88900,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Redis",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0172,
        "post_count_3mo": 19,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": 4,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Angular",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 145000,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0137,
        "post_count_3mo": 12,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Azure",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0137,
        "post_count_3mo": 13,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "CSS",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 275000,
        "salary_p75": 275000,
        "salary_p90": 275000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0137,
        "post_count_3mo": 9,
        "salary_p50_3mo": 275000,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": 0.7188,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Flutter",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0137,
        "post_count_3mo": 10,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "MLOps",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 4,
        "demand_share": 0.0137,
        "post_count_3mo": 8,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "SDK",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0137,
        "post_count_3mo": 19,
        "salary_p50_3mo": 147000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Tailwind CSS",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 165000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0137,
        "post_count_3mo": 10,
        "salary_p50_3mo": 165000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.1,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Windows",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 144000,
        "salary_p75": 144000,
        "salary_p90": 144000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0137,
        "post_count_3mo": 11,
        "salary_p50_3mo": 144000,
        "demand_delta_3mo": 3,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Flask",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 3,
        "salary_transparency_rate": 1,
        "salary_job_count": 3,
        "salary_p50": 109500,
        "salary_p75": 109500,
        "salary_p90": 109500,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0103,
        "post_count_3mo": 6,
        "salary_p50_3mo": 109500,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "GitLab",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 114000,
        "salary_p75": 114000,
        "salary_p90": 114000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0103,
        "post_count_3mo": 11,
        "salary_p50_3mo": 114000,
        "demand_delta_3mo": 2,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "HTML",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0103,
        "post_count_3mo": 12,
        "salary_p50_3mo": 38100,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "MongoDB",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0103,
        "post_count_3mo": 12,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "CI/CD",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0069,
        "post_count_3mo": 16,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Elixir",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0069,
        "post_count_3mo": 13,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Kafka",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0069,
        "post_count_3mo": 10,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "NLP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0069,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "PHP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0069,
        "post_count_3mo": 12,
        "salary_p50_3mo": 63500,
        "demand_delta_3mo": 1,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Scala",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0069,
        "post_count_3mo": 10,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Svelte",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 300000,
        "salary_p75": 300000,
        "salary_p90": 300000,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0069,
        "post_count_3mo": 4,
        "salary_p50_3mo": 300000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Assembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0034,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0034,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "ECS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0034,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Elasticsearch",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0034,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Ember.js",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0034,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "FFmpeg",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0034,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "FastAPI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0034,
        "post_count_3mo": 5,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "IaaS",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0034,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "MySQL",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0034,
        "post_count_3mo": 12,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "NoSQL",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0034,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "PaaS",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0034,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "PyTorch",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0034,
        "post_count_3mo": 9,
        "salary_p50_3mo": 500000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "SecOps",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0034,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0034,
        "post_count_3mo": 3,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": 0,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Spring",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0034,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "TensorFlow",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0034,
        "post_count_3mo": 6,
        "salary_p50_3mo": 500000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0034,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-04",
        "tech": "WebAssembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0034,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Full Stack",
        "role_count": 85,
        "company_count": 81,
        "salary_post_count": 23,
        "salary_transparency_rate": 0.2706,
        "salary_job_count": 9,
        "salary_p50": 130000,
        "salary_p75": 140000,
        "salary_p90": 159000,
        "remote_count": 52,
        "ai_post_count": 26,
        "demand_share": 0.2833,
        "post_count_3mo": 193,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Artificial Intelligence",
        "role_count": 71,
        "company_count": 66,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.1408,
        "salary_job_count": 4,
        "salary_p50": 150000,
        "salary_p75": 159000,
        "salary_p90": 159000,
        "remote_count": 41,
        "ai_post_count": 71,
        "demand_share": 0.2367,
        "post_count_3mo": 163,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.3562,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "React",
        "role_count": 70,
        "company_count": 68,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.2571,
        "salary_job_count": 8,
        "salary_p50": 130000,
        "salary_p75": 140000,
        "salary_p90": 159000,
        "remote_count": 45,
        "ai_post_count": 19,
        "demand_share": 0.2333,
        "post_count_3mo": 158,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.0714,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Backend",
        "role_count": 64,
        "company_count": 60,
        "salary_post_count": 17,
        "salary_transparency_rate": 0.2656,
        "salary_job_count": 3,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 36,
        "ai_post_count": 24,
        "demand_share": 0.2133,
        "post_count_3mo": 150,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.375,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Python",
        "role_count": 62,
        "company_count": 59,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.1452,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 36,
        "ai_post_count": 28,
        "demand_share": 0.2067,
        "post_count_3mo": 148,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.1538,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Frontend",
        "role_count": 57,
        "company_count": 54,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.2632,
        "salary_job_count": 6,
        "salary_p50": 100000,
        "salary_p75": 120000,
        "salary_p90": 125583,
        "remote_count": 31,
        "ai_post_count": 19,
        "demand_share": 0.19,
        "post_count_3mo": 124,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "TypeScript",
        "role_count": 56,
        "company_count": 55,
        "salary_post_count": 19,
        "salary_transparency_rate": 0.3393,
        "salary_job_count": 12,
        "salary_p50": 125583,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 36,
        "ai_post_count": 11,
        "demand_share": 0.1867,
        "post_count_3mo": 115,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.034,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Machine Learning",
        "role_count": 44,
        "company_count": 41,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.2045,
        "salary_job_count": 6,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 159000,
        "remote_count": 20,
        "ai_post_count": 44,
        "demand_share": 0.1467,
        "post_count_3mo": 106,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.5,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Golang",
        "role_count": 40,
        "company_count": 40,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.225,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 159000,
        "salary_p90": 159000,
        "remote_count": 24,
        "ai_post_count": 11,
        "demand_share": 0.1333,
        "post_count_3mo": 76,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "PostgreSQL",
        "role_count": 40,
        "company_count": 36,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.225,
        "salary_job_count": 5,
        "salary_p50": 125583,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 26,
        "ai_post_count": 10,
        "demand_share": 0.1333,
        "post_count_3mo": 80,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.034,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "AWS",
        "role_count": 36,
        "company_count": 32,
        "salary_post_count": 10,
        "salary_transparency_rate": 0.2778,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 18,
        "ai_post_count": 11,
        "demand_share": 0.12,
        "post_count_3mo": 85,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Node.js",
        "role_count": 31,
        "company_count": 28,
        "salary_post_count": 9,
        "salary_transparency_rate": 0.2903,
        "salary_job_count": 4,
        "salary_p50": 100000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 21,
        "ai_post_count": 5,
        "demand_share": 0.1033,
        "post_count_3mo": 61,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.1667,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Kubernetes",
        "role_count": 28,
        "company_count": 28,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.2143,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 16,
        "ai_post_count": 7,
        "demand_share": 0.0933,
        "post_count_3mo": 46,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.3333,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "JavaScript",
        "role_count": 26,
        "company_count": 24,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.0769,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 20,
        "ai_post_count": 4,
        "demand_share": 0.0867,
        "post_count_3mo": 62,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "DevOps",
        "role_count": 25,
        "company_count": 22,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 16,
        "ai_post_count": 10,
        "demand_share": 0.0833,
        "post_count_3mo": 56,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.2,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "API",
        "role_count": 22,
        "company_count": 19,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.2273,
        "salary_job_count": 2,
        "salary_p50": 64800,
        "salary_p75": 64800,
        "salary_p90": 64800,
        "remote_count": 14,
        "ai_post_count": 5,
        "demand_share": 0.0733,
        "post_count_3mo": 42,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "C++",
        "role_count": 22,
        "company_count": 20,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 1,
        "salary_p50": 90000,
        "salary_p75": 90000,
        "salary_p90": 90000,
        "remote_count": 10,
        "ai_post_count": 7,
        "demand_share": 0.0733,
        "post_count_3mo": 47,
        "salary_p50_3mo": 90000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 1,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Rust",
        "role_count": 20,
        "company_count": 19,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 3,
        "salary_p50": 147000,
        "salary_p75": 147000,
        "salary_p90": 147000,
        "remote_count": 9,
        "ai_post_count": 7,
        "demand_share": 0.0667,
        "post_count_3mo": 39,
        "salary_p50_3mo": 147000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.2447,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Java",
        "role_count": 18,
        "company_count": 15,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 125583,
        "salary_p90": 125583,
        "remote_count": 7,
        "ai_post_count": 6,
        "demand_share": 0.06,
        "post_count_3mo": 40,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 3,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "SaaS",
        "role_count": 18,
        "company_count": 18,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 12,
        "ai_post_count": 5,
        "demand_share": 0.06,
        "post_count_3mo": 39,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Next.js",
        "role_count": 16,
        "company_count": 14,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 3,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 11,
        "ai_post_count": 7,
        "demand_share": 0.0533,
        "post_count_3mo": 33,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.375,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "iOS",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 10,
        "ai_post_count": 3,
        "demand_share": 0.05,
        "post_count_3mo": 30,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Android",
        "role_count": 14,
        "company_count": 14,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 9,
        "ai_post_count": 3,
        "demand_share": 0.0467,
        "post_count_3mo": 27,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "GraphQL",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 9,
        "ai_post_count": 5,
        "demand_share": 0.0433,
        "post_count_3mo": 26,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "UI",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 8,
        "ai_post_count": 5,
        "demand_share": 0.0433,
        "post_count_3mo": 34,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Vue.js",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 10,
        "ai_post_count": 1,
        "demand_share": 0.0433,
        "post_count_3mo": 32,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "B2B",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 8,
        "ai_post_count": 3,
        "demand_share": 0.04,
        "post_count_3mo": 24,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Django",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 11,
        "ai_post_count": 2,
        "demand_share": 0.04,
        "post_count_3mo": 26,
        "salary_p50_3mo": 54000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Docker",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.4167,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 7,
        "ai_post_count": 2,
        "demand_share": 0.04,
        "post_count_3mo": 29,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.25,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "UX",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0909,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 6,
        "ai_post_count": 6,
        "demand_share": 0.0367,
        "post_count_3mo": 23,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Linux",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 5,
        "ai_post_count": 5,
        "demand_share": 0.0333,
        "post_count_3mo": 26,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "React Native",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.3,
        "salary_job_count": 2,
        "salary_p50": 64800,
        "salary_p75": 64800,
        "salary_p90": 64800,
        "remote_count": 7,
        "ai_post_count": 1,
        "demand_share": 0.0333,
        "post_count_3mo": 16,
        "salary_p50_3mo": 64800,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.6355,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Terraform",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 8,
        "ai_post_count": 0,
        "demand_share": 0.0333,
        "post_count_3mo": 25,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Web3",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 8,
        "ai_post_count": 2,
        "demand_share": 0.0333,
        "post_count_3mo": 22,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "GitHub",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 2,
        "salary_p50": 125583,
        "salary_p75": 125583,
        "salary_p90": 125583,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.03,
        "post_count_3mo": 29,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.092,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "LLM",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 1,
        "salary_p50": 170000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 7,
        "ai_post_count": 9,
        "demand_share": 0.03,
        "post_count_3mo": 21,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.0556,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Redis",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1111,
        "salary_job_count": 1,
        "salary_p50": 125583,
        "salary_p75": 125583,
        "salary_p90": 125583,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.03,
        "post_count_3mo": 15,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "SDK",
        "role_count": 9,
        "company_count": 8,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.5556,
        "salary_job_count": 2,
        "salary_p50": 147000,
        "salary_p75": 147000,
        "salary_p90": 147000,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.03,
        "post_count_3mo": 15,
        "salary_p50_3mo": 147000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Ruby on Rails",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 165000,
        "salary_p75": 165000,
        "salary_p90": 165000,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0267,
        "post_count_3mo": 28,
        "salary_p50_3mo": 165000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.375,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "SQL",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.125,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 7,
        "ai_post_count": 1,
        "demand_share": 0.0267,
        "post_count_3mo": 23,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 1.6667,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "CI/CD",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 1,
        "salary_p50": 125583,
        "salary_p75": 125583,
        "salary_p90": 125583,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0233,
        "post_count_3mo": 15,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "GCP",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0233,
        "post_count_3mo": 20,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "HTML",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 0,
        "demand_share": 0.02,
        "post_count_3mo": 9,
        "salary_p50_3mo": 38100,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Kafka",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.02,
        "post_count_3mo": 9,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "MongoDB",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 4,
        "demand_share": 0.02,
        "post_count_3mo": 9,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "MySQL",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.02,
        "post_count_3mo": 12,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Angular",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0133,
        "post_count_3mo": 9,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "C#",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0133,
        "post_count_3mo": 13,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "CSS",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0133,
        "post_count_3mo": 6,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Elixir",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0133,
        "post_count_3mo": 12,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Flutter",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0133,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "PHP",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 63500,
        "salary_p75": 63500,
        "salary_p90": 63500,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0133,
        "post_count_3mo": 11,
        "salary_p50_3mo": 63500,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "PyTorch",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 4,
        "demand_share": 0.0133,
        "post_count_3mo": 8,
        "salary_p50_3mo": 500000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Scala",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0133,
        "post_count_3mo": 8,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Windows",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0133,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": ".NET",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.01,
        "post_count_3mo": 10,
        "salary_p50_3mo": 170000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Azure",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.01,
        "post_count_3mo": 9,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "macOS",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.01,
        "post_count_3mo": 7,
        "salary_p50_3mo": 75000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Assembly",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0067,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "ECS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0067,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "GitLab",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0067,
        "post_count_3mo": 9,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "NLP",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0067,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Spring",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0067,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Svelte",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0067,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Tailwind CSS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0067,
        "post_count_3mo": 6,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "TensorFlow",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0067,
        "post_count_3mo": 5,
        "salary_p50_3mo": 500000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Wasm",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0067,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "jQuery",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0067,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Clojure",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Elasticsearch",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "FastAPI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 4,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Flask",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "MLOps",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "OpenCV",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "PaaS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0033,
        "post_count_3mo": 3,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-03",
        "tech": "WebAssembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0033,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Full Stack",
        "role_count": 89,
        "company_count": 86,
        "salary_post_count": 21,
        "salary_transparency_rate": 0.236,
        "salary_job_count": 9,
        "salary_p50": 120000,
        "salary_p75": 160000,
        "salary_p90": 170000,
        "remote_count": 48,
        "ai_post_count": 27,
        "demand_share": 0.2602,
        "post_count_3mo": 108,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Artificial Intelligence",
        "role_count": 69,
        "company_count": 67,
        "salary_post_count": 15,
        "salary_transparency_rate": 0.2174,
        "salary_job_count": 9,
        "salary_p50": 130000,
        "salary_p75": 175000,
        "salary_p90": 180000,
        "remote_count": 36,
        "ai_post_count": 69,
        "demand_share": 0.2018,
        "post_count_3mo": 92,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "React",
        "role_count": 69,
        "company_count": 64,
        "salary_post_count": 23,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 9,
        "salary_p50": 120000,
        "salary_p75": 160000,
        "salary_p90": 170000,
        "remote_count": 45,
        "ai_post_count": 16,
        "demand_share": 0.2018,
        "post_count_3mo": 88,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Backend",
        "role_count": 68,
        "company_count": 65,
        "salary_post_count": 16,
        "salary_transparency_rate": 0.2353,
        "salary_job_count": 8,
        "salary_p50": 130000,
        "salary_p75": 150000,
        "salary_p90": 175000,
        "remote_count": 39,
        "ai_post_count": 16,
        "demand_share": 0.1988,
        "post_count_3mo": 86,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Python",
        "role_count": 64,
        "company_count": 58,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.1719,
        "salary_job_count": 4,
        "salary_p50": 120000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 32,
        "ai_post_count": 20,
        "demand_share": 0.1871,
        "post_count_3mo": 86,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.0769,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Frontend",
        "role_count": 51,
        "company_count": 48,
        "salary_post_count": 14,
        "salary_transparency_rate": 0.2745,
        "salary_job_count": 8,
        "salary_p50": 150000,
        "salary_p75": 175000,
        "salary_p90": 179000,
        "remote_count": 34,
        "ai_post_count": 15,
        "demand_share": 0.1491,
        "post_count_3mo": 67,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.7857,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Machine Learning",
        "role_count": 50,
        "company_count": 48,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.22,
        "salary_job_count": 5,
        "salary_p50": 150000,
        "salary_p75": 180000,
        "salary_p90": 180000,
        "remote_count": 28,
        "ai_post_count": 50,
        "demand_share": 0.1462,
        "post_count_3mo": 62,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "TypeScript",
        "role_count": 48,
        "company_count": 47,
        "salary_post_count": 18,
        "salary_transparency_rate": 0.375,
        "salary_job_count": 8,
        "salary_p50": 86400,
        "salary_p75": 120000,
        "salary_p90": 125583,
        "remote_count": 32,
        "ai_post_count": 11,
        "demand_share": 0.1404,
        "post_count_3mo": 59,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.3824,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "AWS",
        "role_count": 40,
        "company_count": 38,
        "salary_post_count": 11,
        "salary_transparency_rate": 0.275,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 16,
        "ai_post_count": 6,
        "demand_share": 0.117,
        "post_count_3mo": 49,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "PostgreSQL",
        "role_count": 34,
        "company_count": 31,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.2059,
        "salary_job_count": 2,
        "salary_p50": 125583,
        "salary_p75": 125583,
        "salary_p90": 125583,
        "remote_count": 22,
        "ai_post_count": 4,
        "demand_share": 0.0994,
        "post_count_3mo": 40,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.0486,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "JavaScript",
        "role_count": 30,
        "company_count": 25,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.2333,
        "salary_job_count": 4,
        "salary_p50": 86400,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 15,
        "ai_post_count": 5,
        "demand_share": 0.0877,
        "post_count_3mo": 36,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.136,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Golang",
        "role_count": 28,
        "company_count": 28,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 2,
        "salary_p50": 50800,
        "salary_p75": 50800,
        "salary_p90": 50800,
        "remote_count": 19,
        "ai_post_count": 4,
        "demand_share": 0.0819,
        "post_count_3mo": 36,
        "salary_p50_3mo": 50800,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "DevOps",
        "role_count": 26,
        "company_count": 24,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.2308,
        "salary_job_count": 2,
        "salary_p50": 38100,
        "salary_p75": 38100,
        "salary_p90": 38100,
        "remote_count": 18,
        "ai_post_count": 7,
        "demand_share": 0.076,
        "post_count_3mo": 31,
        "salary_p50_3mo": 38100,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Node.js",
        "role_count": 24,
        "company_count": 23,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.2917,
        "salary_job_count": 3,
        "salary_p50": 80000,
        "salary_p75": 80000,
        "salary_p90": 80000,
        "remote_count": 19,
        "ai_post_count": 3,
        "demand_share": 0.0702,
        "post_count_3mo": 30,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.3846,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "C++",
        "role_count": 22,
        "company_count": 20,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.1364,
        "salary_job_count": 1,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 10,
        "ai_post_count": 6,
        "demand_share": 0.0643,
        "post_count_3mo": 25,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Java",
        "role_count": 19,
        "company_count": 18,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2105,
        "salary_job_count": 3,
        "salary_p50": 125583,
        "salary_p75": 125583,
        "salary_p90": 125583,
        "remote_count": 10,
        "ai_post_count": 2,
        "demand_share": 0.0556,
        "post_count_3mo": 22,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 1.2833,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Ruby on Rails",
        "role_count": 17,
        "company_count": 14,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4118,
        "salary_job_count": 5,
        "salary_p50": 165000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 12,
        "ai_post_count": 2,
        "demand_share": 0.0497,
        "post_count_3mo": 20,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.0313,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "GitHub",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 8,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 4,
        "salary_p50": 115000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 10,
        "ai_post_count": 3,
        "demand_share": 0.0468,
        "post_count_3mo": 20,
        "salary_p50_3mo": 115000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "UI",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0625,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 1,
        "demand_share": 0.0468,
        "post_count_3mo": 21,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "API",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 125583,
        "salary_p75": 125583,
        "salary_p90": 125583,
        "remote_count": 8,
        "ai_post_count": 3,
        "demand_share": 0.0439,
        "post_count_3mo": 20,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Kubernetes",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.2667,
        "salary_job_count": 1,
        "salary_p50": 38100,
        "salary_p75": 38100,
        "salary_p90": 38100,
        "remote_count": 9,
        "ai_post_count": 4,
        "demand_share": 0.0439,
        "post_count_3mo": 18,
        "salary_p50_3mo": 38100,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.8268,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Rust",
        "role_count": 15,
        "company_count": 15,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 8,
        "ai_post_count": 2,
        "demand_share": 0.0439,
        "post_count_3mo": 19,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "SaaS",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 9,
        "ai_post_count": 4,
        "demand_share": 0.0439,
        "post_count_3mo": 21,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Vue.js",
        "role_count": 15,
        "company_count": 14,
        "salary_post_count": 7,
        "salary_transparency_rate": 0.4667,
        "salary_job_count": 5,
        "salary_p50": 86400,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 9,
        "ai_post_count": 3,
        "demand_share": 0.0439,
        "post_count_3mo": 19,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.3455,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Docker",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1538,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 0,
        "demand_share": 0.038,
        "post_count_3mo": 17,
        "salary_p50_3mo": 122000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Linux",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.0769,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.038,
        "post_count_3mo": 16,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Next.js",
        "role_count": 13,
        "company_count": 13,
        "salary_post_count": 5,
        "salary_transparency_rate": 0.3846,
        "salary_job_count": 4,
        "salary_p50": 80000,
        "salary_p75": 86400,
        "salary_p90": 86400,
        "remote_count": 8,
        "ai_post_count": 6,
        "demand_share": 0.038,
        "post_count_3mo": 17,
        "salary_p50_3mo": 80000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.3846,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "SQL",
        "role_count": 13,
        "company_count": 12,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1538,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 7,
        "ai_post_count": 4,
        "demand_share": 0.038,
        "post_count_3mo": 15,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Django",
        "role_count": 12,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 54000,
        "salary_p75": 54000,
        "salary_p90": 54000,
        "remote_count": 8,
        "ai_post_count": 1,
        "demand_share": 0.0351,
        "post_count_3mo": 14,
        "salary_p50_3mo": 54000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.5909,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "GraphQL",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.5455,
        "salary_job_count": 3,
        "salary_p50": 145000,
        "salary_p75": 145000,
        "salary_p90": 145000,
        "remote_count": 8,
        "ai_post_count": 5,
        "demand_share": 0.0322,
        "post_count_3mo": 13,
        "salary_p50_3mo": 145000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.0938,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Terraform",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1818,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 7,
        "ai_post_count": 0,
        "demand_share": 0.0322,
        "post_count_3mo": 15,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Android",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 170000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 6,
        "ai_post_count": 2,
        "demand_share": 0.0292,
        "post_count_3mo": 13,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "B2B",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 2,
        "salary_p50": 135000,
        "salary_p75": 135000,
        "salary_p90": 135000,
        "remote_count": 6,
        "ai_post_count": 4,
        "demand_share": 0.0292,
        "post_count_3mo": 12,
        "salary_p50_3mo": 135000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "GCP",
        "role_count": 10,
        "company_count": 9,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 3,
        "demand_share": 0.0292,
        "post_count_3mo": 13,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "UX",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1,
        "salary_job_count": 1,
        "salary_p50": 130000,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 4,
        "ai_post_count": 2,
        "demand_share": 0.0292,
        "post_count_3mo": 12,
        "salary_p50_3mo": 130000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Web3",
        "role_count": 10,
        "company_count": 10,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4,
        "salary_job_count": 3,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 7,
        "ai_post_count": 3,
        "demand_share": 0.0292,
        "post_count_3mo": 12,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "LLM",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.4444,
        "salary_job_count": 4,
        "salary_p50": 86400,
        "salary_p75": 130000,
        "salary_p90": 130000,
        "remote_count": 4,
        "ai_post_count": 9,
        "demand_share": 0.0263,
        "post_count_3mo": 12,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "iOS",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 2,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 6,
        "ai_post_count": 5,
        "demand_share": 0.0263,
        "post_count_3mo": 15,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "C#",
        "role_count": 8,
        "company_count": 8,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 2,
        "demand_share": 0.0234,
        "post_count_3mo": 9,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "CI/CD",
        "role_count": 7,
        "company_count": 6,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2857,
        "salary_job_count": 2,
        "salary_p50": 109500,
        "salary_p75": 109500,
        "salary_p90": 109500,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0205,
        "post_count_3mo": 8,
        "salary_p50_3mo": 109500,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.1705,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Elixir",
        "role_count": 7,
        "company_count": 7,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1429,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0205,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": ".NET",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 170000,
        "salary_p75": 170000,
        "salary_p90": 170000,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0175,
        "post_count_3mo": 7,
        "salary_p50_3mo": 170000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Azure",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0175,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "GitLab",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.0175,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "PHP",
        "role_count": 6,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0175,
        "post_count_3mo": 7,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "SDK",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 4,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 38100,
        "salary_p75": 38100,
        "salary_p90": 38100,
        "remote_count": 4,
        "ai_post_count": 1,
        "demand_share": 0.0175,
        "post_count_3mo": 6,
        "salary_p50_3mo": 38100,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "MySQL",
        "role_count": 5,
        "company_count": 3,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.6,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0146,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Redis",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 125583,
        "salary_p75": 125583,
        "salary_p90": 125583,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0146,
        "post_count_3mo": 6,
        "salary_p50_3mo": 125583,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.4292,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Angular",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 86400,
        "salary_p75": 86400,
        "salary_p90": 86400,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0117,
        "post_count_3mo": 5,
        "salary_p50_3mo": 86400,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.3354,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "PyTorch",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 500000,
        "salary_p75": 500000,
        "salary_p90": 500000,
        "remote_count": 2,
        "ai_post_count": 4,
        "demand_share": 0.0117,
        "post_count_3mo": 4,
        "salary_p50_3mo": 500000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 10.1111,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "React Native",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0117,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Scala",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.75,
        "salary_job_count": 2,
        "salary_p50": 120000,
        "salary_p75": 120000,
        "salary_p90": 120000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0117,
        "post_count_3mo": 4,
        "salary_p50_3mo": 120000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Tailwind CSS",
        "role_count": 4,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0117,
        "post_count_3mo": 4,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.6,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "macOS",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 75000,
        "salary_p75": 75000,
        "salary_p90": 75000,
        "remote_count": 3,
        "ai_post_count": 3,
        "demand_share": 0.0117,
        "post_count_3mo": 4,
        "salary_p50_3mo": 75000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "FastAPI",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0088,
        "post_count_3mo": 3,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.2308,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "HTML",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 38100,
        "salary_p75": 38100,
        "salary_p90": 38100,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0088,
        "post_count_3mo": 3,
        "salary_p50_3mo": 38100,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.7069,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "MLOps",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0088,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "MongoDB",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0088,
        "post_count_3mo": 3,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "NLP",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 3,
        "demand_share": 0.0088,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "TensorFlow",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 500000,
        "salary_p75": 500000,
        "salary_p90": 500000,
        "remote_count": 1,
        "ai_post_count": 3,
        "demand_share": 0.0088,
        "post_count_3mo": 3,
        "salary_p50_3mo": 500000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Windows",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0088,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "ECS",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0058,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Elasticsearch",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0058,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Flask",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0058,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Flutter",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0058,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Kafka",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0058,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Spring",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0058,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Assembly",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "CSS",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 2,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Clojure",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Ember.js",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Haskell",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "PaaS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 200000,
        "salary_p75": 200000,
        "salary_p90": 200000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 2,
        "salary_p50_3mo": 200000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "Wasm",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-02",
        "tech": "jQuery",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0029,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Artificial Intelligence",
        "role_count": 23,
        "company_count": 22,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.087,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 10,
        "ai_post_count": 23,
        "demand_share": 0.2706,
        "post_count_3mo": 23,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Python",
        "role_count": 22,
        "company_count": 19,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.1364,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 13,
        "ai_post_count": 4,
        "demand_share": 0.2588,
        "post_count_3mo": 22,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Full Stack",
        "role_count": 19,
        "company_count": 18,
        "salary_post_count": 6,
        "salary_transparency_rate": 0.3158,
        "salary_job_count": 4,
        "salary_p50": 140000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 13,
        "ai_post_count": 9,
        "demand_share": 0.2235,
        "post_count_3mo": 19,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "React",
        "role_count": 19,
        "company_count": 16,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.1579,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 12,
        "ai_post_count": 4,
        "demand_share": 0.2235,
        "post_count_3mo": 19,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Backend",
        "role_count": 18,
        "company_count": 16,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1111,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 11,
        "ai_post_count": 8,
        "demand_share": 0.2118,
        "post_count_3mo": 18,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Frontend",
        "role_count": 16,
        "company_count": 15,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.1875,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 12,
        "ai_post_count": 7,
        "demand_share": 0.1882,
        "post_count_3mo": 16,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.0588,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Machine Learning",
        "role_count": 12,
        "company_count": 12,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 2,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 7,
        "ai_post_count": 12,
        "demand_share": 0.1412,
        "post_count_3mo": 12,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.0278,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "TypeScript",
        "role_count": 11,
        "company_count": 11,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.2727,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 8,
        "ai_post_count": 1,
        "demand_share": 0.1294,
        "post_count_3mo": 11,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.0182,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "AWS",
        "role_count": 9,
        "company_count": 9,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.2222,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 1,
        "demand_share": 0.1059,
        "post_count_3mo": 9,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.2857,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Golang",
        "role_count": 8,
        "company_count": 6,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 6,
        "ai_post_count": 1,
        "demand_share": 0.0941,
        "post_count_3mo": 8,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "JavaScript",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 4,
        "ai_post_count": 3,
        "demand_share": 0.0706,
        "post_count_3mo": 6,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.6667,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Node.js",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 3,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 5,
        "ai_post_count": 2,
        "demand_share": 0.0706,
        "post_count_3mo": 6,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 0.0526,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "PostgreSQL",
        "role_count": 6,
        "company_count": 6,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0706,
        "post_count_3mo": 6,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "SaaS",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.1667,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 5,
        "ai_post_count": 4,
        "demand_share": 0.0706,
        "post_count_3mo": 6,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.0968,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "iOS",
        "role_count": 6,
        "company_count": 5,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0706,
        "post_count_3mo": 6,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.1429,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "API",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0588,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "DevOps",
        "role_count": 5,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0588,
        "post_count_3mo": 5,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "UI",
        "role_count": 5,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.2,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0588,
        "post_count_3mo": 5,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Docker",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 1,
        "salary_p50": 122000,
        "salary_p75": 122000,
        "salary_p90": 122000,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0471,
        "post_count_3mo": 4,
        "salary_p50_3mo": 122000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.1286,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "GitHub",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0471,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Next.js",
        "role_count": 4,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.25,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0471,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Rust",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0471,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Terraform",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0471,
        "post_count_3mo": 4,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Vue.js",
        "role_count": 4,
        "company_count": 4,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 2,
        "salary_p50": 100000,
        "salary_p75": 100000,
        "salary_p90": 100000,
        "remote_count": 4,
        "ai_post_count": 0,
        "demand_share": 0.0471,
        "post_count_3mo": 4,
        "salary_p50_3mo": 100000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Android",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 3,
        "ai_post_count": 2,
        "demand_share": 0.0353,
        "post_count_3mo": 3,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.1176,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "C++",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0353,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "GCP",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 2,
        "ai_post_count": 0,
        "demand_share": 0.0353,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Java",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 2,
        "salary_p50": 122000,
        "salary_p75": 122000,
        "salary_p90": 122000,
        "remote_count": 1,
        "ai_post_count": 2,
        "demand_share": 0.0353,
        "post_count_3mo": 3,
        "salary_p50_3mo": 122000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Kubernetes",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 2,
        "salary_transparency_rate": 0.6667,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 3,
        "ai_post_count": 0,
        "demand_share": 0.0353,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "LLM",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 3,
        "demand_share": 0.0353,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Linux",
        "role_count": 3,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0353,
        "post_count_3mo": 3,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Ruby on Rails",
        "role_count": 3,
        "company_count": 3,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.3333,
        "salary_job_count": 1,
        "salary_p50": 140000,
        "salary_p75": 140000,
        "salary_p90": 140000,
        "remote_count": 3,
        "ai_post_count": 1,
        "demand_share": 0.0353,
        "post_count_3mo": 3,
        "salary_p50_3mo": 140000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": -0.125,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "B2B",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0235,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Django",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0235,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "GraphQL",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0235,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "React Native",
        "role_count": 2,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0235,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "SQL",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 1,
        "demand_share": 0.0235,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "UX",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 1,
        "salary_transparency_rate": 0.5,
        "salary_job_count": 1,
        "salary_p50": 150000,
        "salary_p75": 150000,
        "salary_p90": 150000,
        "remote_count": 2,
        "ai_post_count": 1,
        "demand_share": 0.0235,
        "post_count_3mo": 2,
        "salary_p50_3mo": 150000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Web3",
        "role_count": 2,
        "company_count": 2,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0235,
        "post_count_3mo": 2,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": ".NET",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Angular",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "C#",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "CI/CD",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "CLI",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "CSS",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 1,
        "salary_p50": 160000,
        "salary_p75": 160000,
        "salary_p90": 160000,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": 160000,
        "demand_delta_3mo": null,
        "salary_delta_3mo": 5.4,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Elixir",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "GitLab",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Kafka",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "MySQL",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "NLP",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "NoSQL",
        "role_count": 1,
        "company_count": 0,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "OCaml",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 1,
        "salary_transparency_rate": 1,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "PHP",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 0,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Redis",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Solidity",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 1,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    },
    {
        "month": "2024-01",
        "tech": "Windows",
        "role_count": 1,
        "company_count": 1,
        "salary_post_count": 0,
        "salary_transparency_rate": 0,
        "salary_job_count": 0,
        "salary_p50": null,
        "salary_p75": null,
        "salary_p90": null,
        "remote_count": 1,
        "ai_post_count": 0,
        "demand_share": 0.0118,
        "post_count_3mo": 1,
        "salary_p50_3mo": null,
        "demand_delta_3mo": null,
        "salary_delta_3mo": null,
        "quadrant": "Insufficient sample",
        "parser_version": "2026-08-15.1",
        "taxonomy_version": "2026-08-15.1"
    }
]