Emma Peterson

Emma PetersonEmma PetersonEmma Peterson
Home
Portfolio
Passions
LinkedIn
Contact

Emma Peterson

Emma PetersonEmma PetersonEmma Peterson
Home
Portfolio
Passions
LinkedIn
Contact
More
  • Home
  • Portfolio
  • Passions
  • LinkedIn
  • Contact
  • Home
  • Portfolio
  • Passions
  • LinkedIn
  • Contact

Portfolio

Data work — from raw, scattered sources to decisions

This is where my data work lives. I'm drawn to the messy problems — the ones where the answer exists but it's buried across a dozen sources, in inconsistent formats, going stale by the day. I pull that data together, make it trustworthy, and turn it into something a business can act on.

What I do

Data analysis · Web scraping & data pipelines · Data cleaning & normalization · Change tracking over time · Dashboards & visualization · Turning findings into recommendations

FLAGSHIP CASE STUDY - Mapping a Consolidating Market in Real

A competitive-intelligence platform for the collision-repair industry

I built a Python platform that tracks 5,300+ collision-repair shops across 17 national operators and cross-references which insurance Direct Repair Programs (DRPs) accept each location — turning a fast-moving market that analysts used to map by hand into a live, queryable dataset that flags acquisitions, rebrands, and closures as they happen.

The business problem

The U.S. collision-repair industry is consolidating quickly. Private-equity-backed operators are rolling up independent shops, large networks acquire and rebrand each other, underperforming locations quietly close, and insurers increasingly steer work toward shops inside their Direct Repair Programs. For anyone trying to understand this market — an investor weighing an acquisition, a supplier deciding where to expand, an analyst tracking market share — the core questions are simple: who owns what, where, and which insurer networks accept it?

The answers are scattered across 17+ corporate store-locators that each update on their own schedule and in their own format, and they go stale the moment a shop changes hands. There was no single, current source of truth — just a pile of websites and a lot of manual copying.

Who this is for

The decision-makers who live or die by this picture: corporate-development and M&A teams at operators and PE firms choosing where to acquire next, insurance network managers hunting for DRP coverage gaps, and suppliers and analysts sizing up competitors. The decisions riding on it — where to buy, build, or compete — are worth millions, and they were being made on lists that were out of date before the spreadsheet was even finished.

My approach

I reverse-engineered each operator's authoritative data source — XML sitemaps, embedded page JSON, AJAX endpoints, and per-state listings — and built 17 scrapers that run in parallel and write to a single historical database. Because every site is structured differently and several deploy anti-bot defenses, the platform does three things most one-off scrapers don't:

  • It normalizes messy real-world data. Wildly inconsistent address formats — US and Canadian, line-break and route-numbered streets, zip codes with stripped leading zeros — get standardized so the same shop is never counted twice.
  • It tracks change over time. Every shop carries a first-seen and last-seen date, and a fuzzy-matching diff engine catches renames, relocations, and network-tier changes between runs, then infers why a shop disappeared: genuine closure, rebrand, relocation, or migration to a sister brand.
  • It protects data integrity. Built-in health checks refuse to record a wave of "closures" when a scrape looks broken — so a website redesign never gets mistaken for shops going out of business.

Where a site reliably blocks automation, I built a clean manual-refresh fallback instead of fighting it — a deliberate choice to keep the data honest rather than brittle.

Tools: Python, Playwright, requests / curl_cffi, rapidfuzz, SQLite, openpyxl.

What it surfaces

  • A live count of 5,300+ active locations and 690+ tracked closures, with full history on every shop.
  • A cross-network DRP matrix showing which insurer programs accept each location — making coverage overlaps and gaps visible at a glance.
  • Closure-reason analysis that separates real closures from rebrands and intra-network migrations, so a shrinking shop count gets read correctly as consolidation, not decline.
  • Geographic overlap and state-coverage views showing where operators compete head-to-head.

What it lets them do

  • An acquirer can spot states where a rival is thin but demand is strong, and time an entry before competitors converge on the market.
  • An insurer can find metros where its DRP network has gaps relative to rivals and recruit shops to close them.
  • A supplier or analyst can prioritize the operators adding the most net-new locations and get early warning on M&A activity from tier and ownership changes.

Projected impact

  • Replaces what would otherwise be days of manual, locator-by-locator data gathering per refresh with an unattended run of about five to ten minutes.
  • Surfaces acquisitions, rebrands, and closures within a single refresh cycle instead of months later in a trade publication.
  • Lets one analyst monitor the entire national landscape — 17 operators, thousands of shops — that previously would have required ongoing manual tracking shop by shop.

Operational figures come from the platform's own run data; the business-impact framing is illustrative.

Limitations & what's next

Counts reflect public store-locators, which can lag real-world openings and closings by a refresh cycle; one operator's anti-bot protection blocks automation reliably, so its data refreshes on a weekly manual cadence.


The next layer I'm adding is certification data. The platform already maps who owns each shop and which insurer repair networks steer claims its way; next, I'm building in which shops are certified by the automakers themselves to repair their vehicles. That distinction is becoming a real competitive moat — as cars grow more complex, with aluminum bodies, driver-assist sensors, and electric drivetrains, manufacturers certify only a limited set of shops to work on their newer models, so a certification signals which operators can win the most complex, highest-value repairs. I'm also widening insurer coverage so the view of who gets steered claims work is complete across every major carrier rather than just a subset.

Interactive Local Dashboard

    Data exploration

    "My whole life I have been a book worm. My childhood was filled with flashlights under the covers, desperate for one last chapter. As I aged I realized that love would never fade, just evolve. So I began keeping track of each book I read on assorted apps. One day I discovered Google Sheets and my obsession grew from there. Every book I've read since 2017 has been meticulously logged and tracked. 


    I learned how to code and scrape websites so that my list could automatically update. For years I would sit down for hours a week to update my to read list and assorted important data, such as amazon rating, price, amount of reviews, etc. That monotonous task drove me to innovate and change. I learned how to use Tableau (a data visualization tool) to track the patterns in my reading habits. Many things can foster my passion but no matter how many times the seasons change, I will always return to my love of reading."

    The Raw Spreadsheet

    Investor Story & Growth Experiments

    Original

    Ziva's investor presentation buried a strong pitch under cluttered, text-heavy slides that were hard to follow — the kind of deck that loses a room before the idea lands.

    Edited

    Drawing on formal training in presentation design, I rebuilt the deck around a clear narrative — cutting clutter, tightening the messaging, and giving each slide one job. The reworked version holds attention long enough for the strength of the pitch to come through.

    Social Media Impact

    Beyond the deck, I designed and ran a test-and-learn social strategy to see what resonated with Ziva's audience. Engagement-focused campaigns drove a 131% increase in TikTok views and a 100% jump in profile visits — turning a quiet presence into measurable reach ahead of launch.

    Explore more of Emma's Data visualization

    Every Business Task is a Puzzle Worth Solving

    Find out more

    Copyright © 2026 Emma Peterson Portfolio - All Rights Reserved.

    Powered by

    This website uses cookies.

    We use cookies to analyze website traffic and optimize your website experience. By accepting our use of cookies, your data will be aggregated with all other user data.

    DeclineAccept