Requirement & Feasibility
2-5 daysWe look at what you are trying to achieve rather than the feature you asked for. Often the outcome is reachable through configuration, and we say so before quoting for code.
Custom DocTypes, workflows, print formats and Frappe apps - built only where configuration genuinely runs out, never by patching core, and shipped to a repository you own outright.
Most ERP projects do not fail on technology. They fail on scope - a system customised so heavily in month two that by month nine nobody dares upgrade it, and by year two the team has drifted back to spreadsheets because the ERP no longer matches how the business runs.
So we start by trying to talk you out of it. If a requirement can be met with a setting, a custom field or a workflow rule, that is what we do, and we will tell you plainly when a request does not need code. When it genuinely does, we build it properly and tell you what it will cost to carry through every future version upgrade.
That conversation costs you an hour. Skipping it costs considerably more.
Settings, custom fields, naming series, workflow rules and permission levels. No code, no upgrade risk.
Client and server scripts for validation and calculation, where standard fields cannot express the rule.
New DocTypes with their own fields, permissions and reports, when you track something ERPNext has no concept of.
A separate installable Frappe app, versioned in your repository, when the requirement deserves its own codebase.
These are the difference between a customisation that lasts and one that becomes the reason you cannot upgrade.
Nothing is patched into ERPNext core. Custom logic lives in your own app, hooked in through the framework's supported extension points, so a version upgrade does not silently undo it.
Standard ERPNext covers far more than most teams assume. If a requirement can be met with a setting, a custom field or a workflow rule, that is what we do - and we tell you when a request does not need code.
Every line we write ships to a repository you control, with readable commits and documentation. No obfuscation, no recurring app licence, no dependency on us to keep running.
Every custom object is one more thing to test at every future upgrade. Before we build it, you hear what it will cost you to keep - which sometimes changes the decision.
All of it inside the Frappe framework's supported extension points, so none of it stands between you and a version upgrade.
New objects with their own fields, permissions, links and reports, when your business tracks something standard ERPNext has no concept of.
Multi-stage approval chains with role-based transitions, conditional routing and escalation, so a document cannot skip a step.
Invoices, challans, work orders and certificates that match what your customers and auditors expect, including GST and multilingual layouts.
Query and script reports that answer the questions your team actually asks, instead of exporting to Excel to answer them.
Field-level validation, auto-calculation and business rules enforced at the server, so they hold no matter how the record is created.
A separate installable app when the requirement is big enough to deserve its own codebase, versioned in your own repository.
Payment gateways, couriers, e-commerce, banking and BI tools connected over REST, with retries and failure logging.
Role profiles, permission levels and field-level restrictions, so people see what they need and nothing else.
Every build happens on a staging instance that mirrors production. You test on your own data before anything goes live.
We look at what you are trying to achieve rather than the feature you asked for. Often the outcome is reachable through configuration, and we say so before quoting for code.
Development happens on a staging instance that mirrors production, in a versioned repository, with the change reviewed against ERPNext framework conventions rather than bolted on.
You test on your own data, on staging, before anything reaches production. Findings go back into the same branch rather than becoming a second project.
Migrated to production during a scheduled window, with the repository handed over and the change documented so the next developer - ours or yours - can pick it up.
Quoted against a written requirement, not an hourly guess. The number you agree is the number you pay.
Small tweaks and fixes
Process change, not just cosmetics
A custom Frappe app of your own
Figures are typical starting points, not a price list. Scope, integration count and the state of your existing instance all move the number - which is why we quote after the feasibility stage rather than before it.
Sometimes the answer is a setting you already have. Sometimes it is a week of development. Either way you get a straight answer and a written estimate before anything is built.