A build-to-order ERPNext application that turns recurring cleaning contracts into scheduled jobs, mobile site checklists, consumable usage and automatic contract invoices. ECOSIRE scopes, builds, installs and supports it on your bench. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $499.00 USD; request a quote for a scoped proposal.
Illustrative previewA build-to-order ERPNext application that turns recurring cleaning contracts into scheduled jobs,
mobile site checklists, consumable usage and automatic contract invoices.
ECOSIRE scopes, builds, installs and supports it on your bench.
No DIY setup — a working app, built, installed and supported by ECOSIRE.
Start with a one-time build price. We scope it with you at kickoff.
ECOSIRE builds, configures and installs it on your ERPNext.
You go live in about 2–4 weeks, with a post-launch support window.
Commercial cleaning is a recurring-service business running on a stack that was never designed for it. A contract says "Site A, three nights a week, 22:00, two operatives, plus a monthly deep clean" — and in stock ERPNext there is no DocType that holds that sentence. Firms end up with the roster in a spreadsheet, checklists on paper or in WhatsApp photos, consumable usage guessed at month-end, and invoices typed by hand from a supervisor's notebook. ERPNext core gives you Customer, Item, Sales Invoice, Stock Entry, Employee, Timesheet and Project — good primitives, but nothing that generates next month's jobs from a contract, proves a job was completed to a standard, or reconciles the mop heads and chemicals actually consumed at a site against what you billed. Maintenance Schedule comes closest, and it is built for equipment servicing visits, not multi-operative shift work with per-site task lists and QA scoring.
We build a proper Frappe app — its own repository, its own module, installed on your bench with bench get-app and bench --site install-app — rather than a pile of Custom Fields bolted onto ERPNext core. The spine is a Cleaning Contract DocType holding the customer, the sites, the billing cadence and a child table of service schedules (weekday pattern, start time, duration, crew size, checklist template, rate). A scheduler event registered in hooks.py under scheduler_events runs a daily materialisation job that reads active contracts and creates Cleaning Job records across a rolling horizon, honouring the Holiday List and per-site blackout dates. It is idempotent: a re-run, a restart mid-job, or a manual trigger never double-books a shift. Each Cleaning Job carries a Job Checklist child table stamped from a versioned Checklist Template, so a site's task list can change next quarter without rewriting what was signed off last quarter. Supervisors close jobs from the mobile-friendly Frappe UI or through whitelisted methods (@frappe.whitelist()) that a lightweight field form posts to over the REST API, attaching before/after photos to the File doctype and computing a weighted QA score.
Downstream, the app posts real transactions instead of shadow records. Confirming a job's consumables writes a Stock Entry (Material Issue) from the van or site warehouse, so chemicals and supplies actually deplete and site-level cost becomes visible against contract revenue. Staff assignment writes Timesheet detail rows against the operative's Employee record and the correct Activity Type, giving you paid hours per site that flow into ERPNext job costing and payroll without re-keying. Billing runs off a second scheduler event that groups the period's submitted jobs per contract and drafts a Sales Invoice — flat contract value, per-visit, or contract plus billable extras such as deep cleans, callouts and over-hours, controlled by a field on the contract. Doc events in hooks.py (validate, on_submit, on_cancel) keep the chain consistent: cancelling a job reverses its stock movement and unlinks it from an unsubmitted invoice, and submitting an invoice locks the jobs it covered. Client scripts drive the supervisor form; server scripts hold tenant-specific pricing rules so they survive app upgrades. Everything respects Frappe permissions, with role profiles for Operative, Supervisor, Contract Manager and Accounts, and User Permissions restricting an area manager to their own customers and sites.
Reporting is built on Query Reports and dashboard charts that a manager can act on the same morning: jobs missed or late by site, checklist completion and QA score trend, consumable cost per visit, contract margin after real labour, and completed-but-unbilled work at period end. Every DocType is exposed through the standard Frappe REST API (/api/resource/Cleaning Job) alongside a small set of whitelisted endpoints for a field app or an access-control system, so your operational data is never trapped behind our UI. We build and test against Frappe/ERPNext v15 and v16 and pin the delivered app to the exact version and branch your bench runs.
This is a build-to-order product, not a marketplace download — there is nothing to install today. We start with a scoping call to map your contracts, sites, checklists, shift patterns and billing rules, then produce a written scope you sign off before development begins. Typical delivery is 2–4 weeks from confirmed scope. The app is deployed to a staging site first for UAT against your real contracts, then goes live on a scheduled window with a documented rollback plan, followed by a support window for defects and configuration questions. The source lives in a git repository handed over to you with full commit history — no licence key, no runtime check, and no dependency on us to keep it running.
Runs 20–200 recurring site contracts and cannot see which of them actually make money. Needs contract margin after real labour hours and consumable cost, and wants scheduling, QA evidence and invoicing to stop living in three unconnected spreadsheets.
Owns the roster and the client relationship. Needs next month's jobs generated automatically from the contract, immediate visibility of missed or late attendances, and a defensible QA record with photo evidence when a client disputes a site's standard.
Works from a phone across several sites through the night. Needs a fast mobile checklist with photo capture, a quick way to log consumables used and hours worked at the site, and to see only the sites they are responsible for.
Bills recurring contracts plus ad-hoc deep cleans and callouts. Needs Sales Invoices drafted from completed jobs with extras already itemised at the right rate, and a clean list of completed-but-unbilled work at period close.
| Criterion | ECOSIRE | Custom Build | Competitor | ERPNext Native |
|---|---|---|---|---|
| Fit to cleaning operations | Modelled on your actual contracts, shift patterns and site checklists from the scoping call | Fits exactly — provided your team specifies it correctly the first time | Generic field-service shape; recurring night-shift cleaning specifics usually absent | No cleaning contract, job or checklist concept exists in ERPNext core |
| Recurring job generation | Scheduler event materialises jobs from contracts, holiday-aware and idempotent on re-run | Achievable, but idempotency and holiday edge cases are where DIY builds usually break | Often a fixed weekly pattern with manual duplication and no blackout handling | Maintenance Schedule only, built for equipment visits rather than shift work |
| Time to a working system | 2–4 weeks from confirmed scope, with staging UAT included | Typically 2–4 months once you hire or reallocate a Frappe developer | Installs in a day, then weeks of workarounds for what it does not cover | Available immediately, with the gap filled by spreadsheets indefinitely |
| Accounting and stock integration | Posts real Stock Entries, Timesheets and Sales Invoices — no parallel ledgers | Depends entirely on the developer's ERPNext depth; shadow tables are common | Frequently keeps its own records and syncs loosely to invoices | Native by definition, but nothing feeds it automatically from job completion |
| Upgrade safety | Separate app and module using hooks and server scripts — no core file edits | Varies; core patches and ad-hoc custom fields are the usual upgrade landmine | Depends on the publisher continuing to track new Frappe releases | Safest possible, since there is nothing extra to break |
| Ownership and lock-in | Git repository handed over with full history; no licence key or runtime check | Entirely yours, and entirely your maintenance burden | Usually subscription-based; source access and forking rights are limited | Entirely yours, within the limits of what core actually does |
| Cost profile | One fixed build price quoted against a signed scope, then optional support | Open-ended developer time plus the cost of the specification being wrong | Low entry price, recurring per-user fees, plus consulting to close the gaps | Free, offset by supervisor and admin hours spent on manual workarounds |
| Support model | Named post-go-live support window against a documented scope, then quoted work | Whoever built it — if they are still available when it breaks | Publisher ticket queue; priority varies with the size of your plan | Frappe community forums or your own ERPNext implementation partner |
This is a build-to-order application, not an instant download. Typical delivery is 2–4 weeks from confirmed scope — that is, from the point you sign off the written scope we produce after the scoping call. Complex requirements such as multi-company, integrating an existing field app, unusual billing rules, or migrating years of historical contract data can extend that, and we tell you before you commit rather than after.
Delivery includes a post-go-live support window for defects and configuration questions against the agreed scope. Because you receive the git repository, your own team can maintain and extend the app independently. Version upgrades — for example moving from ERPNext v15 to v16 — and new feature work are quoted separately as a change of scope; we never silently push changes into a production site.
Frappe and ERPNext v15 and v16. We pin the delivered app to the exact version and branch your bench runs and test against it before handover. If you are on an older release we say so at scoping and either quote the upgrade path or scope explicitly to your current version.
Maintenance Schedule is designed for equipment servicing visits and does not model crew size, shift patterns, per-site checklists, QA scoring or contract billing cadence. Project and Task can hold work but will not generate recurring jobs from a contract, and neither posts consumable usage and operative hours back in a way that gives you site-level contract margin. This app adds the missing DocTypes and the scheduler that ties them to ERPNext's native Stock Entry, Timesheet and Sales Invoice.
Yes. The Frappe desk UI is usable on mobile for checklist completion and job submission, and the app exposes whitelisted methods for check-in, check-out and checklist submission so a lightweight PWA or your existing field app can post to it over the Frappe REST API. If you want a purpose-built field interface rather than the desk UI, that is scoped and quoted as an addition.
It ships as its own Frappe app and module with its own DocTypes, so it does not overwrite ERPNext core files. Where it must touch native documents it does so through `hooks.py` doc events and documented server scripts. At scoping we review your installed apps and custom fields and flag any collision before development starts.
Yes. The git repository is handed over to you with full commit history at delivery. There is no licence server, no runtime key check and no dependency on ECOSIRE remaining involved for the app to keep running.

A finite-capacity, constraint-aware production scheduler for ERPNext that turns Work Orders and Job Cards into a live, drag-and-drop Gantt plan respecting machine, labor, and material availability. Built to order, installed, and supported by ECOSIRE.

A build-to-order ERPNext app for commercial farms and agribusiness that turns crop cycles, land plots, input usage, and harvest yields into structured DocTypes and traceable records. ECOSIRE scopes, builds, installs, and supports it — it is not an instant download.

A build-to-order Frappe app that captures supplier invoices, receipts, and POs via AI/OCR and turns them into draft ERPNext Purchase Invoices and Expense Claims — with line-item, tax, supplier, and item auto-matching. ECOSIRE scopes, builds, installs, and supports it for you.

A build-to-order AI layer for ERPNext manufacturing that predicts asset failures, recommends optimal production schedules, and surfaces quality anomalies from your Work Order, Job Card, and machine sensor data. ECOSIRE builds, installs, and supports it on your v15/v16 bench.
A build-to-order ERPNext application that turns recurring cleaning contracts into scheduled jobs, mobile site checklists, consumable usage and automatic contract invoices. ECOSIRE scopes, builds, installs and supports it on your bench.