Skip to content

Repository files navigation

CrowdStrike Billing Audit

A browser-based audit utility for reviewing endpoint inventory and billing data from CSV reports. The project turns a flat export into a sortable, filterable table with cost totals, CSV export, and print support for faster reconciliation work.

Portfolio project: the included dataset is synthetic. This project is not affiliated with, endorsed by, or sponsored by CrowdStrike.

Demo

CrowdStrike Billing Audit demo

What it demonstrates

  • Client-side CSV parsing and normalization with Papa Parse
  • Dynamic table generation from incoming CSV headers
  • Sorting, filtering, column controls, and pagination with Material React Table
  • Currency normalization and cost reconciliation
  • Page, filtered, and grand totals for billing review
  • CSV re-export and print support
  • Browser-only processing with no application backend

Workflow

flowchart LR
    A[CSV endpoint / billing report] --> B[Papa Parse in browser]
    B --> C[Normalize headers, dates, and cost values]
    C --> D[Material React Table]
    D --> E[Sort and filter]
    D --> F[Page / filtered / grand totals]
    D --> G[CSV export or print]
Loading

Privacy-oriented design

The application does not send imported CSV rows to a server. Data is processed in the browser and kept in memory for the current session only. Refreshing the page or selecting Clear removes the imported dataset from the application.

Real endpoint inventory can contain sensitive hostnames, usernames, policies, sites, and timestamps. Use an environment appropriate for the data you are reviewing, and never commit production exports to a public repository.

Tech stack

  • React 19
  • TypeScript
  • Material UI
  • Material React Table / TanStack Table
  • Papa Parse
  • date-fns
  • Vite

Quick start

git clone git@github.com:j86schroeder/crowdstrike-billing-audit.git
cd crowdstrike-billing-audit
npm install
npm run dev

Open the local Vite URL, select Import CSV, and choose a report file. A synthetic example is included at:

sample-data/sample-crowdstrike-billing.csv

CSV behavior

The table is built dynamically from the headers in the imported file, so the project is not limited to a single fixed column layout. A few fields receive additional handling when present:

  • Cost is normalized as a numeric value for sorting and totals and displayed as USD currency.
  • Headers containing terms such as date, time, seen, created, updated, or last are formatted as timestamps when they contain parseable dates.
  • Common endpoint fields such as hostname, sensor version, user, policy, site, event count, and cost are prioritized in the table layout.

The included synthetic sample uses:

Hostname, Sensor Version, Policy, Site, User, Event Count, Last Seen, Cost

Project structure

crowdstrike-billing-audit/
├── docs/
│   ├── demo.gif
│   └── screenshot.png
├── public/
│   └── favicon.svg
├── sample-data/
│   └── sample-crowdstrike-billing.csv
├── src/
│   ├── components/
│   │   └── CSBillingTable.tsx
│   ├── App.tsx
│   └── main.tsx
├── LICENSE
├── SECURITY.md
├── package.json
└── README.md

Scope and limitations

This is a front-end audit utility, not a CrowdStrike API integration. It does not authenticate to CrowdStrike, modify endpoint records, change licensing, or submit billing data. The accuracy of the audit depends on the contents and quality of the CSV supplied to the application.

License

MIT — see LICENSE.

About

Browser-based CrowdStrike endpoint billing audit utility for CSV inventory, filtering, and cost reconciliation.

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages