Disclosure: text and synthetic code example prepared with AI assistance. Published offers were reviewed; services and restores were not tested.
Normalizing a maintenance offer to a monthly number can silently discard its billing commitment. In MapaLocal’s study of 13 WordPress maintenance offers, we kept advertised price, tax treatment, billing cadence and support scope separate. This example focuses on that small data-model decision.
A monthly equivalent is not a monthly invoice
Use explicit input fields rather than parsing every number into a shared price column. The following records are synthetic examples, not quotations from providers.
const offers = [ { id: "a", advertisedMonthly: 60, billing: "monthly", vat: "excluded", backup: null }, { id: "b", advertisedMonthly: 50, billing: "annual_advance", vat: "excluded", backup: "daily" }, { id: "c", advertisedMonthly: 40, billing: "monthly", vat: "unknown", backup: "weekly" } ]; function monthlyNetSubset(rows) { return rows.filter(r => Number.isFinite(r.advertisedMonthly) && r.advertisedMonthly > 0 && r.billing === "monthly" && r.vat === "excluded" ); } console.log(monthlyNetSubset(offers).map(r => r.id)); // ["a"] The filter makes a chart’s eligibility rule explicit. It does not make the services equivalent. Hosting, licenses, initial repairs, cancellation terms and included work can still differ. Do not label the output “best plans” or infer a market average from a purposeful sample.
Keep unknowns as unknowns
backup: null means the frequency was not specified in the reviewed material. It is not equivalent to “no backups”. In the actual study, five of 13 pages did not give a concrete cadence for the selected plan. The others described three monthly, two weekly, two daily and one conditional frequency.
A richer schema should keep a published statement, its source location, capture timestamp, plan name and reviewer interpretation. The source page can contain daily-backup marketing text while its entry plan specifies another cadence. Plan-level evidence should not be overwritten by a broader headline.
Separate claims from operational checks
Backup frequency, retention and restore testing are different fields. The same applies to first-response targets and resolution guarantees. A content-change allowance is not automatically a development allowance. If a higher tier mentions four hours every two months, do not assign two hours per month to a lower plan.
The review captured public pages on 11 November 2026. It did not involve checkout, provider contact, restoration tests or service-quality measurements. MapaLocal offers related maintenance services and was excluded from its own sample.
The useful output is a comparison with preserved conditions and visible unknowns. Whether a particular offer meets a website’s needs requires a separate scope discussion and operational evidence.
