{
  "title": "SoundThinking CVR Math: Valuing the $3 Earnout From the Bottom Up",
  "path": "/research/soundthinking-cvr-math",
  "publishedAt": "2026-09-30",
  "updatedAt": null,
  "dataAsOf": "2026-09-30",
  "version": "1.0",
  "marketSnapshot": {
    "sstiCloseUsd": 8.44,
    "preAnnouncementCloseUsd": 5.47,
    "upfrontCashPerShareUsd": 8,
    "maxCvrPerShareUsd": 3
  },
  "marketHurdleAssumptions": {
    "annualRequiredReturn": 0.12,
    "illustrativeCloseProbability": 0.95,
    "brokenDealSensitivityUsd": 5.47,
    "cvrPaymentDate": "2028-06-29",
    "note": "Close probability and broken-deal value are scenario inputs, not forecasts."
  },
  "marketHurdles": [
    {
      "illustrativeCashClose": "2026-11-20",
      "requiredNominalExpectedCvrUsd": 0.886,
      "nextCvrStepUsd": 0.9,
      "eligibleRevenueForStepM": 76.5
    },
    {
      "illustrativeCashClose": "2026-12-01",
      "requiredNominalExpectedCvrUsd": 0.92,
      "nextCvrStepUsd": 0.95,
      "eligibleRevenueForStepM": 76.75
    },
    {
      "illustrativeCashClose": "2026-12-15",
      "requiredNominalExpectedCvrUsd": 0.963,
      "nextCvrStepUsd": 1,
      "eligibleRevenueForStepM": 77
    },
    {
      "illustrativeCashClose": "2026-12-31",
      "requiredNominalExpectedCvrUsd": 1.011,
      "nextCvrStepUsd": 1.05,
      "eligibleRevenueForStepM": 77.25
    }
  ],
  "cvrWaterfall": {
    "firstThresholdM": 73.5,
    "firstPayoutUsd": 0.5,
    "throughRevenueM": 75.5,
    "firstIncrementRevenueM": 0.5,
    "firstIncrementPayoutUsd": 0.05,
    "secondIncrementRevenueM": 0.25,
    "secondIncrementPayoutUsd": 0.05,
    "capRevenueM": 87,
    "capPayoutUsd": 3
  },
  "safePointeNormalization": {
    "revenuePerLaneYearUsd": 20000,
    "basis": "Two large Q1 2026 healthcare bookings represented about 70 lanes and about $1.4M of ARR; management later described more than 100 booked lanes in flight as representing more than $2M of ARR.",
    "boundary": "The $20K figure is a normalization proxy. Actual contract economics and GAAP revenue timing can differ."
  },
  "publicContractReconstruction": {
    "methodology": "Allocate disclosed ShotSpotter contract consideration across calendar 2027 using disclosed annual values or simple straight-line time allocation. No renewal after an existing term is assumed.",
    "boundary": "This is a service-value visibility proxy, not a guaranteed GAAP revenue floor.",
    "rows": [
      {
        "market": "New York City, NY",
        "stream": "NYPD gunshot detection renewal #2",
        "contractValueUsd": 21853900,
        "annualValueUsd": 7284633.33,
        "serviceStart": "2024-12-13",
        "serviceEnd": "2027-12-12",
        "estimated2027ServiceValueUsd": 6905433,
        "sourceType": "government procurement record",
        "sourceUrl": "https://databook.nyc/procurement/vendor/1654198",
        "calculation": "Contract value / 3 years, then 346/365 of annual value for Jan. 1-Dec. 12, 2027."
      },
      {
        "market": "Fresno, CA",
        "stream": "ShotSpotter renewal",
        "contractValueUsd": 3140025,
        "annualValueUsd": 1046675,
        "serviceStart": "2024-07-01",
        "serviceEnd": "2027-06-30",
        "estimated2027ServiceValueUsd": 519036,
        "sourceType": "city legislation",
        "sourceUrl": "https://fresno.legistar.com/LegislationDetail.aspx?FullText=1&GUID=E86385D6-7212-4B6C-A147-F8C270915F0C&ID=6823284&Options=&Search=",
        "calculation": "181/365 of the disclosed annual value for Jan. 1-June 30, 2027."
      },
      {
        "market": "Oakland, CA",
        "stream": "ShotSpotter renewal",
        "contractValueUsd": 2525010,
        "annualValueUsd": 841670,
        "serviceStart": "2024-07-01",
        "serviceEnd": "2027-06-30",
        "estimated2027ServiceValueUsd": 417376,
        "sourceType": "city legislation",
        "sourceUrl": "https://oakland.legistar.com/LegislationDetail.aspx?G=undefined&GUID=0F9D6BAE-7353-40A7-925B-CF44F5BD74B6&ID=6771102&Options=&Search=",
        "calculation": "181/365 of the disclosed annual value for Jan. 1-June 30, 2027."
      },
      {
        "market": "Columbus, OH",
        "stream": "Main gunfire detection contract",
        "contractValueUsd": 1323000,
        "annualValueUsd": 661500,
        "serviceStart": "2026-02-07",
        "serviceEnd": "2028-02-06",
        "estimated2027ServiceValueUsd": 661500,
        "sourceType": "city legislation",
        "sourceUrl": "https://columbus.legistar.com/LegislationDetail.aspx?G=4F637594-17B0-4E92-8196-37F14328D337&GUID=2435EDF7-5B10-41E7-966C-8224EF7BFDFD&ID=8010925&Options=&Search=",
        "calculation": "Full disclosed annual value because the contract spans all of calendar 2027."
      },
      {
        "market": "Columbus, OH",
        "stream": "Phase II coverage",
        "contractValueUsd": 630000,
        "annualValueUsd": 210000,
        "serviceStart": "2024-06-30",
        "serviceEnd": "2027-06-29",
        "estimated2027ServiceValueUsd": 103562,
        "sourceType": "city legislation",
        "sourceUrl": "https://columbus.legistar.com/LegislationDetail.aspx?FullText=1&GUID=C335FF3A-688B-4224-AC07-AF901FDBFD9B&ID=6851805&Options=&Search=",
        "calculation": "180/365 of the disclosed annual value for Jan. 1-June 29, 2027."
      },
      {
        "market": "Lauderhill, FL",
        "stream": "ShotSpotter annual renewal",
        "contractValueUsd": 323450,
        "annualValueUsd": 323450,
        "serviceStart": "2026-04-20",
        "serviceEnd": "2027-04-19",
        "estimated2027ServiceValueUsd": 96592,
        "sourceType": "city legislation",
        "sourceUrl": "https://lauderhill-fl.legistar.com/LegislationDetail.aspx?GUID=99C29926-E76F-4F79-B397-726A64F6B3B5&ID=8193997&Options=&Search=",
        "calculation": "109/365 of the disclosed annual value for Jan. 1-April 19, 2027."
      },
      {
        "market": "Newark, NJ",
        "stream": "ShotSpotter subscription",
        "contractValueUsd": null,
        "annualValueUsd": 1868893,
        "serviceStart": "2026-06-30",
        "serviceEnd": "2029-07-17",
        "estimated2027ServiceValueUsd": 1868893,
        "sourceType": "public-record republication linked to Newark source",
        "sourceUrl": "https://www.docketcity.com/nj/newark/legislation/26-0779",
        "calculation": "Full disclosed annual not-to-exceed amount because the authorized term spans all of calendar 2027."
      },
      {
        "market": "New Haven, CT",
        "stream": "ShotSpotter five-year agreement",
        "contractValueUsd": 2084431,
        "annualValueUsd": 416886.2,
        "serviceStart": null,
        "serviceEnd": null,
        "estimated2027ServiceValueUsd": 416886,
        "sourceType": "city legislation",
        "sourceUrl": "https://newhaven-ct.legistar.com/MeetingDetail.aspx?GUID=FF99D4FE-8110-4012-B93B-2B1276337B65&ID=1427517&Options=info%7C&Search=",
        "calculation": "Five-year disclosed contract value / 5. Used as an annualized service-value estimate because the public record describes an annual ShotSpotter subscription."
      },
      {
        "market": "Detroit, MI",
        "stream": "ShotSpotter extension",
        "contractValueUsd": 2058778,
        "annualValueUsd": null,
        "serviceStart": "2026-07-01",
        "serviceEnd": "2027-03-31",
        "estimated2027ServiceValueUsd": 686259,
        "sourceType": "public-record republication of city council minutes",
        "sourceUrl": "https://civiciq.com/public-contract/city-of-detroit-mi-soundthinking-inc-technology-2026-06-30",
        "calculation": "One third of the nine-month extension value for Jan.-Mar. 2027."
      }
    ],
    "subtotalEstimated2027ServiceValueUsd": 11675537
  },
  "scenarioGrid": [
    {
      "shotSpotterRevenueM": 62.5,
      "safePointeLaneYears": 200,
      "safePointeRevenueM": 4,
      "eligibleRevenueM": 66.5,
      "cvrPayoutUsd": 0
    },
    {
      "shotSpotterRevenueM": 62.5,
      "safePointeLaneYears": 300,
      "safePointeRevenueM": 6,
      "eligibleRevenueM": 68.5,
      "cvrPayoutUsd": 0
    },
    {
      "shotSpotterRevenueM": 62.5,
      "safePointeLaneYears": 400,
      "safePointeRevenueM": 8,
      "eligibleRevenueM": 70.5,
      "cvrPayoutUsd": 0
    },
    {
      "shotSpotterRevenueM": 62.5,
      "safePointeLaneYears": 500,
      "safePointeRevenueM": 10,
      "eligibleRevenueM": 72.5,
      "cvrPayoutUsd": 0
    },
    {
      "shotSpotterRevenueM": 62.5,
      "safePointeLaneYears": 600,
      "safePointeRevenueM": 12,
      "eligibleRevenueM": 74.5,
      "cvrPayoutUsd": 0.6
    },
    {
      "shotSpotterRevenueM": 62.5,
      "safePointeLaneYears": 700,
      "safePointeRevenueM": 14,
      "eligibleRevenueM": 76.5,
      "cvrPayoutUsd": 0.9
    },
    {
      "shotSpotterRevenueM": 62.5,
      "safePointeLaneYears": 800,
      "safePointeRevenueM": 16,
      "eligibleRevenueM": 78.5,
      "cvrPayoutUsd": 1.3
    },
    {
      "shotSpotterRevenueM": 62.5,
      "safePointeLaneYears": 1000,
      "safePointeRevenueM": 20,
      "eligibleRevenueM": 82.5,
      "cvrPayoutUsd": 2.1
    },
    {
      "shotSpotterRevenueM": 64,
      "safePointeLaneYears": 200,
      "safePointeRevenueM": 4,
      "eligibleRevenueM": 68,
      "cvrPayoutUsd": 0
    },
    {
      "shotSpotterRevenueM": 64,
      "safePointeLaneYears": 300,
      "safePointeRevenueM": 6,
      "eligibleRevenueM": 70,
      "cvrPayoutUsd": 0
    },
    {
      "shotSpotterRevenueM": 64,
      "safePointeLaneYears": 400,
      "safePointeRevenueM": 8,
      "eligibleRevenueM": 72,
      "cvrPayoutUsd": 0
    },
    {
      "shotSpotterRevenueM": 64,
      "safePointeLaneYears": 500,
      "safePointeRevenueM": 10,
      "eligibleRevenueM": 74,
      "cvrPayoutUsd": 0.55
    },
    {
      "shotSpotterRevenueM": 64,
      "safePointeLaneYears": 600,
      "safePointeRevenueM": 12,
      "eligibleRevenueM": 76,
      "cvrPayoutUsd": 0.8
    },
    {
      "shotSpotterRevenueM": 64,
      "safePointeLaneYears": 700,
      "safePointeRevenueM": 14,
      "eligibleRevenueM": 78,
      "cvrPayoutUsd": 1.2
    },
    {
      "shotSpotterRevenueM": 64,
      "safePointeLaneYears": 800,
      "safePointeRevenueM": 16,
      "eligibleRevenueM": 80,
      "cvrPayoutUsd": 1.6
    },
    {
      "shotSpotterRevenueM": 64,
      "safePointeLaneYears": 1000,
      "safePointeRevenueM": 20,
      "eligibleRevenueM": 84,
      "cvrPayoutUsd": 2.4
    },
    {
      "shotSpotterRevenueM": 65.5,
      "safePointeLaneYears": 200,
      "safePointeRevenueM": 4,
      "eligibleRevenueM": 69.5,
      "cvrPayoutUsd": 0
    },
    {
      "shotSpotterRevenueM": 65.5,
      "safePointeLaneYears": 300,
      "safePointeRevenueM": 6,
      "eligibleRevenueM": 71.5,
      "cvrPayoutUsd": 0
    },
    {
      "shotSpotterRevenueM": 65.5,
      "safePointeLaneYears": 400,
      "safePointeRevenueM": 8,
      "eligibleRevenueM": 73.5,
      "cvrPayoutUsd": 0.5
    },
    {
      "shotSpotterRevenueM": 65.5,
      "safePointeLaneYears": 500,
      "safePointeRevenueM": 10,
      "eligibleRevenueM": 75.5,
      "cvrPayoutUsd": 0.7
    },
    {
      "shotSpotterRevenueM": 65.5,
      "safePointeLaneYears": 600,
      "safePointeRevenueM": 12,
      "eligibleRevenueM": 77.5,
      "cvrPayoutUsd": 1.1
    },
    {
      "shotSpotterRevenueM": 65.5,
      "safePointeLaneYears": 700,
      "safePointeRevenueM": 14,
      "eligibleRevenueM": 79.5,
      "cvrPayoutUsd": 1.5
    },
    {
      "shotSpotterRevenueM": 65.5,
      "safePointeLaneYears": 800,
      "safePointeRevenueM": 16,
      "eligibleRevenueM": 81.5,
      "cvrPayoutUsd": 1.9
    },
    {
      "shotSpotterRevenueM": 65.5,
      "safePointeLaneYears": 1000,
      "safePointeRevenueM": 20,
      "eligibleRevenueM": 85.5,
      "cvrPayoutUsd": 2.7
    },
    {
      "shotSpotterRevenueM": 67,
      "safePointeLaneYears": 200,
      "safePointeRevenueM": 4,
      "eligibleRevenueM": 71,
      "cvrPayoutUsd": 0
    },
    {
      "shotSpotterRevenueM": 67,
      "safePointeLaneYears": 300,
      "safePointeRevenueM": 6,
      "eligibleRevenueM": 73,
      "cvrPayoutUsd": 0
    },
    {
      "shotSpotterRevenueM": 67,
      "safePointeLaneYears": 400,
      "safePointeRevenueM": 8,
      "eligibleRevenueM": 75,
      "cvrPayoutUsd": 0.65
    },
    {
      "shotSpotterRevenueM": 67,
      "safePointeLaneYears": 500,
      "safePointeRevenueM": 10,
      "eligibleRevenueM": 77,
      "cvrPayoutUsd": 1
    },
    {
      "shotSpotterRevenueM": 67,
      "safePointeLaneYears": 600,
      "safePointeRevenueM": 12,
      "eligibleRevenueM": 79,
      "cvrPayoutUsd": 1.4
    },
    {
      "shotSpotterRevenueM": 67,
      "safePointeLaneYears": 700,
      "safePointeRevenueM": 14,
      "eligibleRevenueM": 81,
      "cvrPayoutUsd": 1.8
    },
    {
      "shotSpotterRevenueM": 67,
      "safePointeLaneYears": 800,
      "safePointeRevenueM": 16,
      "eligibleRevenueM": 83,
      "cvrPayoutUsd": 2.2
    },
    {
      "shotSpotterRevenueM": 67,
      "safePointeLaneYears": 1000,
      "safePointeRevenueM": 20,
      "eligibleRevenueM": 87,
      "cvrPayoutUsd": 3
    },
    {
      "shotSpotterRevenueM": 67.6,
      "safePointeLaneYears": 200,
      "safePointeRevenueM": 4,
      "eligibleRevenueM": 71.6,
      "cvrPayoutUsd": 0
    },
    {
      "shotSpotterRevenueM": 67.6,
      "safePointeLaneYears": 300,
      "safePointeRevenueM": 6,
      "eligibleRevenueM": 73.6,
      "cvrPayoutUsd": 0.5
    },
    {
      "shotSpotterRevenueM": 67.6,
      "safePointeLaneYears": 400,
      "safePointeRevenueM": 8,
      "eligibleRevenueM": 75.6,
      "cvrPayoutUsd": 0.7
    },
    {
      "shotSpotterRevenueM": 67.6,
      "safePointeLaneYears": 500,
      "safePointeRevenueM": 10,
      "eligibleRevenueM": 77.6,
      "cvrPayoutUsd": 1.1
    },
    {
      "shotSpotterRevenueM": 67.6,
      "safePointeLaneYears": 600,
      "safePointeRevenueM": 12,
      "eligibleRevenueM": 79.6,
      "cvrPayoutUsd": 1.5
    },
    {
      "shotSpotterRevenueM": 67.6,
      "safePointeLaneYears": 700,
      "safePointeRevenueM": 14,
      "eligibleRevenueM": 81.6,
      "cvrPayoutUsd": 1.9
    },
    {
      "shotSpotterRevenueM": 67.6,
      "safePointeLaneYears": 800,
      "safePointeRevenueM": 16,
      "eligibleRevenueM": 83.6,
      "cvrPayoutUsd": 2.3
    },
    {
      "shotSpotterRevenueM": 67.6,
      "safePointeLaneYears": 1000,
      "safePointeRevenueM": 20,
      "eligibleRevenueM": 87.6,
      "cvrPayoutUsd": 3
    },
    {
      "shotSpotterRevenueM": 70,
      "safePointeLaneYears": 200,
      "safePointeRevenueM": 4,
      "eligibleRevenueM": 74,
      "cvrPayoutUsd": 0.55
    },
    {
      "shotSpotterRevenueM": 70,
      "safePointeLaneYears": 300,
      "safePointeRevenueM": 6,
      "eligibleRevenueM": 76,
      "cvrPayoutUsd": 0.8
    },
    {
      "shotSpotterRevenueM": 70,
      "safePointeLaneYears": 400,
      "safePointeRevenueM": 8,
      "eligibleRevenueM": 78,
      "cvrPayoutUsd": 1.2
    },
    {
      "shotSpotterRevenueM": 70,
      "safePointeLaneYears": 500,
      "safePointeRevenueM": 10,
      "eligibleRevenueM": 80,
      "cvrPayoutUsd": 1.6
    },
    {
      "shotSpotterRevenueM": 70,
      "safePointeLaneYears": 600,
      "safePointeRevenueM": 12,
      "eligibleRevenueM": 82,
      "cvrPayoutUsd": 2
    },
    {
      "shotSpotterRevenueM": 70,
      "safePointeLaneYears": 700,
      "safePointeRevenueM": 14,
      "eligibleRevenueM": 84,
      "cvrPayoutUsd": 2.4
    },
    {
      "shotSpotterRevenueM": 70,
      "safePointeLaneYears": 800,
      "safePointeRevenueM": 16,
      "eligibleRevenueM": 86,
      "cvrPayoutUsd": 2.8
    },
    {
      "shotSpotterRevenueM": 70,
      "safePointeLaneYears": 1000,
      "safePointeRevenueM": 20,
      "eligibleRevenueM": 90,
      "cvrPayoutUsd": 3
    }
  ],
  "exclusionsAndSeparateLayers": [
    "Fayetteville: public material supports a $225K annual renewal option and SoundThinking says the city extended coverage through 2029, but the hard subtotal omits it because the exact executed agreement was not independently pinned in this review.",
    "Santa Fe: the city lists a $354K gunshot-detection agreement starting Aug. 25, 2026, but the hard subtotal omits it because the source page does not expose the service end date.",
    "Hallandale Beach: public records show Phase I and Phase II pricing, but activation/timing across phases is awkward enough that it is excluded from the hard subtotal.",
    "Wilmington: public records show a renewal, but the visible agreement also involves other SoundThinking products, so no entire contract amount is assigned to eligible ShotSpotter revenue here.",
    "Denver: the reviewed current agreement ends Dec. 31, 2026, so this model assigns zero 2027 value absent a renewal.",
    "Harris County: the approximately $4.96M award is CrimeTracer and is excluded by the CVR definition.",
    "Albuquerque, Worcester, Richland County, Macon-Bibb and Peoria: fresh multi-year ShotSpotter renewals are modeled separately from the hard-dollar contract layer because one company announcement aggregates their value with a CrimeTracer renewal."
  ],
  "selectedFindings": {
    "publicContractSubtotalUsd": 11675537,
    "midMarketHurdleRevenueM": 76.75,
    "midMarketHurdleCvrUsd": 0.95,
    "midShotSpotterRevenueM": 65.5,
    "midSafePointeRevenueNeededM": 11.25,
    "midSafePointeLaneYearsNeeded": 562.5,
    "generousStartingLiveLanes": 365,
    "midYearEndLiveLanesNeeded": 760,
    "fullPayoutRevenueM": 87,
    "fullPayoutCvrUsd": 3
  },
  "methodology": {
    "marketHurdle": "The market-hurdle sensitivity discounts the $8 cash consideration to illustrative tender-close dates and discounts the CVR to a June 29, 2028 payment date. It uses a 12% annual required return, 95% illustrative close probability, and $5.47 broken-deal sensitivity. Those are scenario inputs, not forecasts.",
    "shotSpotter": "ShotSpotter scenarios separate reported revenue, ARR, and public-contract service-value allocations. The public-contract subtotal allocates disclosed consideration across the portion of calendar 2027 covered by existing terms and assumes no renewal after an existing term expires.",
    "safePointe": "SafePointe is normalized at $20,000 per productive lane-year based on disclosed booked-lane ARR observations. Contracted lanes, live lanes, and productive lane-years are distinct quantities.",
    "cvr": "The payout function follows the disclosed CVR waterfall: $0 below $73.5M; $0.50 at $73.5M; $0.05 for each completed $0.5M increment through $75.5M; then $0.05 for each completed $0.25M increment through the $3 cap at $87M.",
    "boundary": "The study is a valuation and operating-hurdle reconstruction, not management guidance, a probability forecast, or a claim that public-contract service value equals GAAP revenue."
  },
  "sources": [
    {
      "id": "ssti-merger-8k",
      "title": "SoundThinking merger announcement Form 8-K",
      "publisher": "SoundThinking, Inc. / U.S. Securities and Exchange Commission",
      "url": "https://www.sec.gov/Archives/edgar/data/1351636/000119312526406024/d107296d8k.htm",
      "asOfDate": "2026-09-29"
    },
    {
      "id": "ssti-merger-agreement",
      "title": "SoundThinking Agreement and Plan of Merger and CVR terms",
      "publisher": "SoundThinking, Inc. / U.S. Securities and Exchange Commission",
      "url": "https://www.sec.gov/Archives/edgar/data/1351636/000119312526406024/d107296dex21.htm",
      "asOfDate": "2026-09-29"
    },
    {
      "id": "ssti-2025-10k",
      "title": "SoundThinking 2025 Form 10-K",
      "publisher": "SoundThinking, Inc. / U.S. Securities and Exchange Commission",
      "url": "https://www.sec.gov/Archives/edgar/data/1351636/000119312526132104/ssti-20251231.htm",
      "asOfDate": "2025-12-31"
    },
    {
      "id": "ssti-q1-2026-results",
      "title": "SoundThinking Q1 2026 financial results",
      "publisher": "SoundThinking, Inc.",
      "url": "https://ir.soundthinking.com/news-events/press-releases/detail/334/soundthinking-inc-reports-first-quarter-2026-financial",
      "asOfDate": "2026-05-14"
    },
    {
      "id": "ssti-q2-2026-10q",
      "title": "SoundThinking Q2 2026 Form 10-Q",
      "publisher": "SoundThinking, Inc. / U.S. Securities and Exchange Commission",
      "url": "https://www.sec.gov/Archives/edgar/data/1351636/000119312526352203/ssti-20260630.htm",
      "asOfDate": "2026-06-30"
    },
    {
      "id": "ssti-q2-2026-results",
      "title": "SoundThinking Q2 2026 financial results",
      "publisher": "SoundThinking, Inc.",
      "url": "https://ir.soundthinking.com/news-events/press-releases/detail/340/soundthinking-inc-reports-second-quarter-2026-financial",
      "asOfDate": "2026-08-13"
    },
    {
      "id": "ssti-q2-2026-renewals",
      "title": "SoundThinking Q2 2026 multi-year customer renewals",
      "publisher": "SoundThinking, Inc.",
      "url": "https://www.soundthinking.com/press-releases/soundthinking-highlights-major-multi-year-customer-renewals-in-q2-2026/",
      "asOfDate": "2026-07-23"
    },
    {
      "id": "ssti-q2-2026-transcript",
      "title": "SoundThinking Q2 2026 earnings-call transcript",
      "publisher": "Stock Analysis",
      "url": "https://stockanalysis.com/stocks/ssti/transcripts/669387-q2-2026/",
      "asOfDate": "2026-08-13"
    },
    {
      "id": "nyc-shotspotter-contract",
      "title": "New York City SoundThinking procurement record",
      "publisher": "City of New York",
      "url": "https://databook.nyc/procurement/vendor/1654198",
      "asOfDate": "2026-09-30"
    },
    {
      "id": "fresno-shotspotter-contract",
      "title": "Fresno ShotSpotter renewal",
      "publisher": "City of Fresno",
      "url": "https://fresno.legistar.com/LegislationDetail.aspx?FullText=1&GUID=E86385D6-7212-4B6C-A147-F8C270915F0C&ID=6823284&Options=&Search=",
      "asOfDate": "2024-08-15"
    },
    {
      "id": "oakland-shotspotter-contract",
      "title": "Oakland ShotSpotter renewal",
      "publisher": "City of Oakland",
      "url": "https://oakland.legistar.com/LegislationDetail.aspx?G=undefined&GUID=0F9D6BAE-7353-40A7-925B-CF44F5BD74B6&ID=6771102&Options=&Search=",
      "asOfDate": "2024-07-16"
    },
    {
      "id": "columbus-shotspotter-main",
      "title": "Columbus main gunfire-detection contract",
      "publisher": "City of Columbus",
      "url": "https://columbus.legistar.com/LegislationDetail.aspx?G=4F637594-17B0-4E92-8196-37F14328D337&GUID=2435EDF7-5B10-41E7-966C-8224EF7BFDFD&ID=8010925&Options=&Search=",
      "asOfDate": "2026-01-12"
    },
    {
      "id": "columbus-shotspotter-phase2",
      "title": "Columbus Phase II ShotSpotter coverage",
      "publisher": "City of Columbus",
      "url": "https://columbus.legistar.com/LegislationDetail.aspx?FullText=1&GUID=C335FF3A-688B-4224-AC07-AF901FDBFD9B&ID=6851805&Options=&Search=",
      "asOfDate": "2024-07-29"
    },
    {
      "id": "lauderhill-shotspotter-contract",
      "title": "Lauderhill ShotSpotter annual renewal",
      "publisher": "City of Lauderhill",
      "url": "https://lauderhill-fl.legistar.com/LegislationDetail.aspx?GUID=99C29926-E76F-4F79-B397-726A64F6B3B5&ID=8193997&Options=&Search=",
      "asOfDate": "2026-04-20"
    },
    {
      "id": "newark-shotspotter-contract",
      "title": "Newark ShotSpotter subscription authorization",
      "publisher": "DocketCity, linking Newark public record",
      "url": "https://www.docketcity.com/nj/newark/legislation/26-0779",
      "asOfDate": "2026-06-30"
    },
    {
      "id": "new-haven-shotspotter-contract",
      "title": "New Haven five-year ShotSpotter agreement",
      "publisher": "City of New Haven",
      "url": "https://newhaven-ct.legistar.com/MeetingDetail.aspx?GUID=FF99D4FE-8110-4012-B93B-2B1276337B65&ID=1427517&Options=info%7C&Search=",
      "asOfDate": "2026-05-18"
    },
    {
      "id": "detroit-shotspotter-extension",
      "title": "Detroit ShotSpotter contract extension",
      "publisher": "CivicIQ, reproducing City of Detroit council record",
      "url": "https://civiciq.com/public-contract/city-of-detroit-mi-soundthinking-inc-technology-2026-06-30",
      "asOfDate": "2026-06-30"
    },
    {
      "id": "ssti-price-history",
      "title": "SoundThinking historical stock prices",
      "publisher": "Stock Analysis",
      "url": "https://stockanalysis.com/stocks/ssti/history/",
      "asOfDate": "2026-09-30"
    }
  ]
}
