PULSCAR ANALYSIS OF NHTSA PUBLIC DATA — "BURNING SMELL FROM A CAR" PulsCar analysis of NHTSA public data, September 2026. License: CC BY 4.0. Files in this folder may be reused with attribution to PulsCar (pulscar.io). -------------------------------------------------------------------------- 1. SOURCE FILES -------------------------------------------------------------------------- All inputs are NHTSA public flat files, downloaded from static.nhtsa.gov and loaded into a local SQLite database: Complaints FLAT_CMPL.txt 777,040 unique owner complaints (ODINO), received 1 January 2015 - 8 September 2026. Field definitions: https://static.nhtsa.gov/odi/ffdd/cmpl/CMPL.txt Recalls FLAT_RCL.txt one row per make/model/model year per campaign, report dates 1 January 2010 - 9 September 2026; campaigns counted DISTINCT on the campaign number. Communications FLAT_TSBS.txt manufacturer communications (service bulletins, dealer messages, customer-satisfaction programs), communication dates 6 January 2015 - 12 September 2026; 187,827 distinct NHTSA document ids. Counted DISTINCT on the NHTSA document id. Investigations FLAT_INV.txt ODI investigation records. WHAT COMPLAINTS ARE NOT. They are owner reports, not verified repairs and not failure rates. This data has no denominator of vehicles on the road, so a make with more complaints may simply have sold more cars, older cars, or have more owners who file. Nothing in these files ranks reliability, and nothing here should be read as a failure rate. -------------------------------------------------------------------------- 2. COMPLAINT QUERY (the 5,897) -------------------------------------------------------------------------- Step 1 - full-text search (SQLite FTS5) over the complaint narrative: (burning OR burnt) AND (smell OR smells OR smelled OR odor OR smelling) -> 6,317 complaints. (For comparison: the exact phrase "burning smell" alone returns 1,531, which under-counts every owner who wrote "smelled something burning" or "burnt odor".) Step 2 - proximity confirmation on the narrative. A burning word and a smell word must appear in the same sentence within 60 characters of each other: (burn(ing|t|ed)?)[^.]{0,60}(smell(s|ed|ing)?|odor|odour|fume(s)?) or the same pair in the opposite order. Step 3 - negation filter. The 70 characters before and 30 after each match are checked for a negation construction (no / not / never / without / didn't followed by the burning word, and "smell ... but no ..."). A complaint is kept only if at least one match in it survives the filter. This removes reports such as "there was no burning odor inside the vehicle". -> 5,897 complaints. 420 of the 6,317 were dropped by steps 2-3. Step 4 - SAMPLE READING. 30 random matches from the surviving 5,897 were read in full (random.seed(99)). 29 of 30 were genuine reports of a burning or burnt smell. 1 of 30 was a false positive: an owner listing what he had checked for and NOT found ("checked for obvious clues such as leaking oil, loose belts and burning smells, nothing to be found"). Observed false-positive rate: about 3% (1/30). An earlier, looser version of the query (step 1 only) was sampled the same way and showed roughly twice that rate, driven by negations, which is why step 3 exists. -------------------------------------------------------------------------- 3. SMELL-TYPE CLASSIFICATION (burning-smell-by-smell-type.csv) -------------------------------------------------------------------------- Each complaint is tested for material words within 80 characters of a burning or smell word, in the same sentence: electrical or plastic plastic|wire|wiring|electrical|insulation|fuse| short circuit oil \boil\b brakes brake|caliper|rotor coolant (sweet) coolant|antifreeze|sweet|syrup rubber or belt rubber|serpentine|drive belt|\bbelt\b clutch (manual) clutch, excluding A/C-compressor and fan clutches unless the text also says the clutch slipped, burned or was worn transmission fluid transmission fluid|\batf\b|burnt transmission A complaint can match more than one category (208 of 5,897 do), so the category counts sum to more than 5,897 and the percentages are shares of 5,897, not parts of a whole. A complaint matching none of them is counted in "material not named" (3,202 = 54.3%) - the owner reported a burning smell without saying what it smelled like. Mileage columns drop values <= 0 and >= 400,000 and are computed only over the complaints that carry a usable mileage (3,801 of 5,897 overall). Quartiles are Q1 and Q3 of that subset. Baselines used for comparison, computed over all 777,040 complaints in the file: fire flag 14,121 (1.8%), towed 39,739 (5.1%), crash 33,940 (4.4%). The fire / towed / crash columns are NHTSA's own flags on the complaint record. -------------------------------------------------------------------------- 4. WHAT THE EVENTUAL FIX WAS (sample of 100, reported in the article) -------------------------------------------------------------------------- 2,595 of the 5,897 contain a diagnosis or repair verb (diagnosed, determined, found that, replaced, repaired, turned out to be, caused by, due to a, the cause was). 100 of those 2,595 were sampled at random (random.seed(2026)) and read; each was assigned to exactly one bucket by the cause the owner said was named: no cause named / not diagnosed / not repaired 37 electrical component (alternator, fuse, wiring, blower resistor, seat heater, headlight socket, battery cable, HVAC unit) 16 oil leak or oil consumption (valve cover, oil cooler, timing cover, cracked head, oil pan) 13 fuel system (fuel pump, fuel line, HPFP) 6 engine internal (seizure, lifters, blown engine) 6 other (suspension, sensors, PTU seal, throttle body, hood bearings) 6 cooling system (water pump, thermostat, coolant intrusion, cracked block) 4 clutch 4 transmission 3 steering (rack, steering gear) 2 exhaust (catalytic converter, muffler) 2 brakes (caliper) 1 This is a small hand-read sample of one subset of the complaints, not a population estimate. It is reported in the article as what 100 read complaints said, with the sample size attached. -------------------------------------------------------------------------- 5. DOCUMENTS (burning-smell-documents.csv) -------------------------------------------------------------------------- Recall campaigns: campaigns whose defect or consequence text names smoke or an odor AND whose consequence names fire. (defect LIKE '%odor%' OR consequence LIKE '%odor%' OR defect LIKE '%smoke%' OR consequence LIKE '%smoke%') AND consequence LIKE '%fire%' -> 73 distinct campaigns, 3,792,504 vehicles potentially affected (sum of the per-campaign figures; a vehicle in two campaigns is counted twice). Only 2 campaigns in the whole file use the words "burning smell" or "burning odor" literally. Manufacturer communications: FTS5 query (odor OR smell) AND (burn OR burning OR burnt) over the bulletin summary -> 33 distinct NHTSA document ids out of 187,827 (0.02%). The stricter phrase query ("burning smell" OR "burning odor" OR "odor of burning" OR "smell of burning" OR "burnt odor") returns 15. Investigations: ODI records whose subject or summary names an odor or smoke. The one used in the article is EA17-002 (Exhaust Odor in Passenger Cab, 2011-2017 Ford Explorer), opened 27 July 2017, closed 17 January 2023, upgraded from PE16-008. -------------------------------------------------------------------------- 6. LIMITATIONS -------------------------------------------------------------------------- - Self-selected reports. People who file with NHTSA are not a random sample of drivers, and a smell that scared someone is more likely to be filed than one that faded. - No denominator. Counts by make and model track fleet size and age as much as anything else. - Make spellings are not normalized in the source file: "MERCEDES-BENZ" and "MERCEDES BENZ" appear as separate makes and are left separate here. - The smell-type classifier reads words, not meaning. "Burning oil smell" and "the oil was checked" both contain "oil"; the 80-character proximity rule reduces but does not eliminate that. - Mileage is present on 64% of the matching complaints and is owner-entered. - Recall and bulletin text searches find documents that USE these words. A campaign about the same failure that describes it only as "smoke" or "thermal event" is not in the 73. - 2025 and 2026 model years are under-represented simply because those cars have been on the road for less time. Files: burning-smell-by-smell-type.csv, burning-smell-by-make.csv, burning-smell-top-models.csv, burning-smell-by-model-year.csv, burning-smell-documents.csv. ------------------------------------------------------------------------------ CASE SENSITIVITY — SECTION ADDED 19 SEPTEMBER 2026 ------------------------------------------------------------------------------ NHTSA stores complaint narratives in ALL CAPS for records filed through roughly 2020 and in mixed case for records filed from 2021 on. A case-SENSITIVE search of the narrative field loses about 92% of the complaints filed after 2020, so this is the single largest way an analysis of this database can go wrong while still looking finished. Every query behind this file is case-insensitive. SQLite's LIKE and its FTS5 full-text index both ignore case by default, and no query in this work uses GLOB or any case-sensitive comparison. This was not taken on trust. On 19 September 2026 every published folder was re-checked against the same database, comparing the figures here with what a case-sensitive query would have returned. The result: the complaint set published here (6,317) is LARGER than the absolute ceiling a case-sensitive search of the same terms could have returned (846 narratives). A case-sensitive query cannot produce a bigger set than itself, so the bug is ruled out for this folder by arithmetic, not by assurance.