PULSCAR ANALYSIS OF NHTSA PUBLIC DATA - "FLASHING CHECK ENGINE LIGHT AND SHAKING" 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 complaints (ODINO), received 1 January 2015 - 8 September 2026. Field definitions: https://static.nhtsa.gov/odi/ffdd/cmpl/CMPL.txt Communications FLAT_TSBS.txt manufacturer communications (technical service bulletins, preliminary information documents, dealer messages); counted DISTINCT on the NHTSA document id. Recalls FLAT_RCL.txt one row per make/model/model year per campaign; campaigns counted DISTINCT on the campaign number. Complaints are OWNER REPORTS. They are not verified repairs and they are not failure rates: this data has no denominator of vehicles on the road, so a make with more complaints may simply sell more cars, sell older cars, or have owners more likely to file with a federal agency. Nothing here ranks reliability. -------------------------------------------------------------------------- 2. COMPLAINT QUERY (the 2,372) -------------------------------------------------------------------------- Step 1 - full-text search (SQLite FTS5) of the complaint narrative for any of flashing / blinking / flashes / blinks -> 12,190 complaints. Most are not about the check engine light at all (airbag, TPMS, stability-control and turn-signal lamps all flash). Step 2 - proximity filter: a flash/blink word must appear within 70 characters of a warning-light phrase (check engine | engine light | service engine | malfunction indicator | engine warning | MIL | CEL) -> 2,924 complaints. Step 3 - FIRST SAMPLE READING. 30 random matches were read in full. 5 of 30 (17%) were not a flashing check engine light: a different lamp was the one flashing ("engine light on and the other light blinking", "VSC keeps blinking"), a list of dash lamps was flashing collectively, or the narrative said the opposite ("solid, not flashing, so I assumed it was OK to drive"). 17% is too high to publish, so the query was tightened. Step 4 - tightening. The flash word must be grammatically attached to the light, in one of two orders, within one clause (no sentence break): (light phrase)[^.;\n]{0,30}(flash|blink) e.g. "check engine light was flashing" (flash|blink)\s+(the\s+)?(light phrase) e.g. "flashing check engine light" and the 120 characters around the match must not contain a negation (not|never|isn't|wasn't|no)\s+(flash|blink) or solid ... (not|never) flash -> 2,372 complaints. This is the published set. Step 5 - SECOND SAMPLE READING. 30 fresh random matches from the 2,372 were read in full: 30 of 30 described a check engine light that flashed or blinked. Residual false-positive rate in the read sample: 0 of 30. Exclusions and limits: mileage statistics drop records with no mileage, zero mileage, or mileage of 400,000 or more (907 of the 2,372 carry a usable figure). The set includes motorhomes and light trucks because owners file them under the same component headings. -------------------------------------------------------------------------- 3. BASELINE COMPARISON -------------------------------------------------------------------------- Structured flags (towed / crash / fire) are compared against all 777,040 complaints. Narrative word rates are compared against a systematic 1-in-37 sample of the whole file (n = 21,001 complaints, rowid % 37 = 0) using the identical regular expressions: tow words \btow\w* 24.2% vs 10.6% power-loss words limp mode|limp home|reduced power| loss of (motive )?power|lost (all )?power|stall 34.6% vs 10.8% -------------------------------------------------------------------------- 4. OUTCOME READING (the 110) -------------------------------------------------------------------------- 1,295 of the 2,372 contain a diagnosis or repair cue (diagnos*, was told, found that, determined, replaced, repair*, fixed, the cause, turned out). 110 were drawn at random (seed fixed, sample reproducible), read in full, and each assigned ONE primary outcome - what the owner says the shop found or did. Where several findings appear, the final or most serious named finding wins. Counts are in flashing-cel-outcomes-110-read.csv. Honesty notes on that table: "no cause named" includes cars still at the shop when the complaint was filed, so it is a floor on frustration, not a repair failure rate. Nobody files a follow-up complaint saying the plugs fixed it, which is the main reason cheap ignition repairs are rare in this sample - the selection is toward events that stranded the driver. -------------------------------------------------------------------------- 5. MANUFACTURER COMMUNICATIONS -------------------------------------------------------------------------- Full-text search of bulletin summaries for misfire / misfires / misfiring returns 1,797 distinct NHTSA document ids, dated 27 March 2015 to 4 September 2026. Requiring the summary ALSO to attach a flash/blink word to the warning lamp (same two orders as Step 4) leaves 16 documents - published here as flashing-mil-manufacturer-bulletins.csv. The tightening matters: Stellantis titles routine reprogramming bulletins "Flash: ...", which a loose keyword search counts as a flashing lamp. One further count: exactly 1 of the 1,797 misfire bulletins states in its summary that continued operation could damage the catalytic converter (NHTSA document 10090461, GM service update 14481, 3 February 2017). Recalls: searching recall defect and consequence text for misfire returns 7 distinct campaigns covering 99,705 vehicles, 2012-2026, including two motorcycle campaigns where a misfire overheats the exhaust catalyst. -------------------------------------------------------------------------- 6. LIMITATIONS -------------------------------------------------------------------------- - Complaint narratives are unverified owner statements, sometimes second-hand through a call-center transcript. - Counts by make and model are not failure rates and must not be read as reliability rankings. - A bulletin count is a paperwork count: manufacturers re-issue and revise the same document, and one issue can appear as several ids. - The bulletin set only reflects what a summary says. A bulletin whose summary omits the word "flashing" is invisible to this query even if the vehicle flashes its lamp. ------------------------------------------------------------------------------ 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 (21,001) is LARGER than the absolute ceiling a case-sensitive search of the same terms could have returned (95 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.