Battery decisions for light-EV fleets

Keep, repair, or retire? Your charge logs already know.

One lifecycle decision per pack — from the charging data your fleet already produces. No new hardware. No ride data. No migration.

Works on packs with no history Reads partial charge sessions Free fit-check on your own logs

Runs on your own fleet numbers, in your browser — no form, no sign-up. Prefer to talk? roman@chargewisp.com

V I T ChargeWisp decision model + confidence flag keep monitor reassign repair second-life recycle failing or degraded cell? flagged — pull from service one decision per pack, at fleet scale
Schematic — what the model does, not a product screenshot.
Validated the honest way — scored only on cells the model had never seen
793public aging cells across 9 datasets — LFP, NMC, NCA, LCO
2–3 ptstypical health error on the modern cylindrical cells light EVs run on
89%of certified readings within 5 capacity points of the truth
0new hardware — reads the charge logs your chargers already produce

Held-out-cell testing throughout. Readings the reliability gate can't stand behind are reported as "not enough signal" — never silently scored.

What it's worth

Every “retire” call is a €100–400 decision.

Most light-EV fleets make it on a rule of thumb — pack age, one voltage reading, a technician's gut. Put your own numbers in and see what those calls are worth over a year.

Your fleet

%

Drag anything — the numbers update as you go. The defaults are placeholders, not claims about your fleet. Nothing is sent anywhere; the arithmetic runs in your browser.

Riding on those calls, per year

€10,500 – 36,000

across 300 keep-or-retire decisions. For scale, replacing those packs costs you about €135,000 a year.

Value scrapped early Triage labour
€6,000 – 24,000 of usable pack value binned with packs pulled too early 60 packs a year × €100–400 left in each
€4,500 – 12,000 of technician time spent judging packs one by one 20–45 min per pack, €15–40 loaded

Not counted here: wrong “keep” calls — roadside failures, dead packs at swap stations, the warranty argument afterwards. Those cost real money too; we won't invent a number for them.

How these numbers are calculated

Plain arithmetic on your three inputs and published industry figures. None of it is a ChargeWisp result — there are no customer case studies yet. It sizes the problem; it doesn't promise a fix.

20%
  • Packs retired per year = fleet size × your retirement rate. Both are your inputs; the 15% default is a placeholder, not an industry average — we don't have one worth quoting.
  • Pulled too early = the share above, applied to retired packs. Adjust it: if your triage is already tight, drop it to 5–10%.
  • €100–400 per pack pulled early — the life left in a light-EV pack that gets binned early, derived from fleet pack costs: swap packs run ≈ €250–900, e-bike packs ≈ €300–800 retail.
  • €15–40 per decision — 20–45 minutes of loaded technician time to pull, bench and judge a single pack.
  • Deliberately left out: field-failure and downtime costs, and the repair-versus-replace upside — one published repair-network case reported ≈ €160 saved per repaired pack across 2,800 packs in a year. Both would push the number up.

Ranges, not point estimates, because real figures vary by chemistry, format and market. Public pricing and case data collected 2026-07-20. The only way to get your actual number is to run the model against your own packs — that's what the free fit-check is.

Book a 15-minute call

Market-discovery conversation — no pitch, no data asked for on the call.

Where do you sit?

The same decision, three different headaches.

Pick your operation — the pitch adapts:

In a pooled network the packs get cycled hard and their individual histories blur together — so knowing when to pull, repair or retire one is genuinely tricky.

  • Cold-start by design: health from a pack's current signals, no logbook.
  • Reads the charge logs your stations already write.
  • Per-pack verdicts instead of a blanket age or cycle-count rule.
See what that's worth on a swap fleet

Works on packs with no history.

Swap networks and pooled fleets can't tell you a pack's life story — and most analytics tools give up right there. ChargeWisp is cold-start capable: it reads health from the signals a pack produces today. That's the case it was designed around, not an afterthought.

See how the fit-check works
? ? ? history unknown today's signals 87% health estimate keep + routing decision, per pack
Cold-start: read today, decided today — no logbook needed.

Built for real charge sessions, not lab cycles.

Real fleets don't produce neat 0-to-100% reference cycles — they produce interrupted, partial charging. ChargeWisp is trained on exactly those windows: even a short slice near the end of a charge carries most of the usable signal.

Check whether your data qualifies
state of charge time → observed window this much is enough rest of the session — not needed
A short end-of-charge window is enough to read.

A routing decision with a confidence flag — not another dashboard.

A wrong "recycle" throws away €100–400 of remaining value; a wrong "keep" risks a failure in the field. So you get the decision — keep, monitor, reassign, repair, second-life, recycle — with a confidence flag, and an honest "not enough signal" when the data can't support one.

What a wrong call costs
pack repair keep · high confidence not enough signal honesty beats a confident wrong answer
Decision + confidence — or an honest "not enough signal".

Anonymized logs are enough.

Charger-side signals only — voltage, current, temperature, timestamps. No rider data, no locations, no customer records; hash the pack IDs if you like. Whatever you send is used only to evaluate the model for you, never shared, and deleted on request.

Read the data questions
all the model needs ✓ voltage · current · temp ✓ timestamps ✓ hashed pack IDs ✓ known outcomes (if any) never needed, never sent ✕ rider data ✕ locations / GPS ✕ customer records ✕ anything identifying evaluate-only · never shared · deleted on request
Anonymized charger-side exports are all it takes.
How it works

The free fit-check, in three steps.

1

A 15-minute call

How does your team decide today when a pack gets pulled, repaired or retired? That's the whole first step — a conversation, not a pitch.

2

If it's useful — export your logs

1–3 months of charge logs for 20–50 packs (anonymized is fine), plus whatever you know about their real condition: packs you later opened, repaired or scrapped.

3

Get the report

A per-pack routing report with confidence flags, checked against your own ground truth. Free — because your verdict on it is the market research.

Book the call

Step 1 costs you 15 minutes and no data.

How the accuracy numbers were made

Held-out-cell testing means the model is trained on some cells and scored only on cells it has never seen — the honest version of accuracy, and the standard behind every number on this page.

Validation currently spans nine public aging datasets — 793 cells across the chemistries and formats light EVs actually use — with a reliability gate that quarantines the readings it can't stand behind rather than scoring them silently.

Developed independently by Roman Shaposhnikov — battery state-of-health modeling work spanning physics-based and gradient-boosted approaches. Currently in market-discovery: the point of this page is a conversation, not a sale.

60-second check

Does your fleet fit?

1 · What are your packs, roughly?

2 · Do you log voltage / current / temperature per charge session?

3 · Do you know the real condition of some retired packs (opened, repaired, capacity-tested, scrapped)?

FAQ

The questions worth asking.

What exactly do I get from the free fit-check?

A per-pack routing report — keep / monitor / reassign / repair / second-life / recycle — with a confidence flag per pack, checked against whatever real outcomes you can share. Yours to keep either way.

What data does it need?

Standard charger-side logs: voltage, current, temperature, time, at a usable cadence. 1–3 months across 20–50 packs is enough for a fit-check, and anonymized exports (hashed pack IDs, no rider or customer data) work fine. Partial sessions are fine too — that's what it's built for.

Do we need to install anything or touch our BMS?

No. It runs on exported logs. No hardware, no firmware changes, no platform migration.

What happens to our data?

Used only to evaluate the model for you, never shared, deleted whenever you ask — and anonymized exports are actively preferred: the model doesn't need to know who rode what, only how packs charge. If your process requires an NDA, send yours — we'll sign it.

What does it cost?

The fit-check is free. Paid pilots are scoped per fleet — the design target is a fixed price an ops manager can approve without a procurement round. Pricing is deliberately being validated in these conversations, which is exactly why the first step is a call, not a quote.

Who is this not for?

Fleets that don't log charging data at all — the model needs something to read. And anyone who wants a full fleet-management dashboard today — this is a decision layer, not a platform. Passenger-car packs aren't the first target (the model is trained on light-EV cell families first), but the approach adapts — if that's you, it's still worth the call.

Does this help with the EU battery passport?

From 18 February 2027, e-bike and e-scooter batteries placed on the EU market need a digital passport carrying state-of-health data. ChargeWisp's outputs are designed to feed those fields — if that deadline is on your roadmap, it's worth 15 minutes now.

Find out what your charge logs already know.

15 minutes, no pitch, no commitment — and if it's useful, a free read on a sample of your own packs afterward.

Selling into the EU? From 18 February 2027, e-bike and e-scooter batteries need a digital passport carrying state-of-health data — ChargeWisp's outputs are built to feed those fields.

Book a 15-minute call

Or just write: roman@chargewisp.com

Not ready for a call? Leave an email and I'll send the one-page credibility sheet — nothing else, no list, deleted on request.