// Python Dev
Web system for utility meter readings
Published on 2026-03-26
Client task
The client needed to automate collection of meter readings from tenants: remove paper submissions and phone calls, give the administrator a single control point, and provide tenants with a simple personal account.
What was delivered
- • Built a web system with two roles, tenant and administrator, where each role only sees the data and actions relevant to it.
- • Tenants submit readings through a personal account, while the system validates them against business rules: the new value cannot be lower than the previous one, cannot exceed an allowed jump, can only be accepted on allowed days of the month, and only once per billing period.
- • When validation fails, the system returns a clear reason instead of a generic error.
- • The administrator manages users, contracts, meters, and settings, while validation rules are configurable per meter type without code changes.
- • Reading history is available with filters and pagination, and data can be exported to Excel in one click.
- • Address input uses live suggestions through Dadata integration, and deployment is prepared for production with Docker behind Traefik.
Result
The client received a working system that replaced manual meter collection, simplified the tenant workflow, and gave the administrator transparent control over contracts, meters, and data quality.
This project was about applied automation with strict business constraints. It was not enough to build a simple input form: the system had to reject invalid readings, explain why, and still remain convenient for tenants who only use it once a month.
A separate focus was the administrative side. Validation rules were moved into settings, so the client can change system behavior without asking a developer to edit code. That matters in real operations where regulations and meter types change over time.
The result was not just a reading form, but a controlled production tool for utility metering workflows.