.reveal{opacity:1!important;transform:none!important}
03Operations software

Urban rental operations management system

Rental staff run daily operations — from issuing equipment to closing a shift — in one system.

The system is built around a physical operation: inventory continuously changes state, and management needs one clear view of what is happening on site.

Context
An anonymized account of equipment rental across several service points in a city park, without naming the operator or the specific location.
Business problem
Bring rental activities into one workflow without slowing down service on site.

A focused operations interface that brings asset state, staff actions, and management context into one system.

From problem boundary to production

  1. 01 On-site process discovery
  2. 02 Roles and workflow design
  3. 03 Custom system development
  4. 04 Foundation for integrations and growth

Problem

  • A single order can include several pieces of equipment and merchandise at once.
  • Payment and fiscal receipt are separate operations that do not always complete at the same moment.
  • A remote terminal result is not always known immediately and can stay unresolved.
  • Equipment moves through issuance, replacement, repair, and battery maintenance, and that state has to be visible at the moment of serving a customer.

Users and context

  • On-site staff scan equipment by QR code, create rentals and merchandise sales, take payment, and process returns or extensions.
  • A location administrator manages staff, prices, and equipment, and closes shifts at their location.
  • A root-level administrator sees all locations, users, and the overall operational and financial picture.
  • QR verification with protection against double-issuing an already active rental.
  • Order management creation, extension, editing, cancellation, and in-order equipment replacement.
  • Payment and refunds through an external payment provider, with operation status tracked separately and an attention queue for unresolved results.
  • Maintenance tracking repair and battery-charge tracking.
  • Daily jobs closing shifts, resetting battery state, and exporting reports — protected against duplicate runs.
  1. Verification & order creation

    Staff scan the equipment QR code and create an order with one or more equipment items and optional merchandise.

  2. Payment

    A payment operation is created with an external payment provider; the result may arrive immediately or through a delayed status update.

  3. Unresolved result

    If the payment status is not confirmed right away, the operation goes into an attention queue instead of being treated as automatically successful or failed.

  4. Service

    An active order can be extended, edited, or completed, and equipment can be replaced if needed.

  5. Daily close

    Daily background jobs close shifts, update battery state, and export reports exactly once per day.

Order creation screen with synthetic data
Rental checkout: equipment selection and payment method (screen reconstruction, synthetic data)
Anonymized equipment status screen
Equipment status: availability, repair, and battery charge (screen reconstruction, synthetic data)
Anonymized payment attention queue
Attention queue for unresolved payment results (screen reconstruction, synthetic data)
Shift screen with synthetic staff names
Shift and staff view (screen reconstruction, names are synthetic)

A web application serves the rental points and connects to an external payment provider and a database; a separate scheduler process closes shifts, updates battery state, and exports reports once a day.

  • Web application for rental points
  • External payment provider
  • Daily background-job scheduler
Database for orders, equipment, and shifts

Reliability and security

  • Access roles are scoped to a specific location; the root level sees all locations.
  • Equipment maintenance and repair history is preserved as part of its lifecycle.
  • Daily jobs do not stop entirely because one of them fails.
  • A refund is full and single-use per operation: the system will not allow refunding more than was originally received.
An unresolved result moves the operation into a separate attention queue instead of being treated as an automatic success or failure.

Challenge The result of a remote payment operation is not always known immediately.

Why it matters A network error does not serve a customer without confirmed payment and does not block the location without reason.

A refund is calculated from the original operation and the amount already refunded, not as an independent action.

Challenge A refund has to account for what was already refunded earlier on the same order.

Why it matters A repeated refund cannot double the amount paid to a customer.

Each job is protected by a process-level lock and a unique record of that day's run.

Challenge Daily jobs must run exactly once per day even after a service restart.

Why it matters Shifts are not closed twice and reports are not duplicated after a restart.

A fallback issuance flow exists for situations when the main payment path is unavailable.

Challenge A payment terminal or provider can be temporarily unavailable, and a rental point should not stop serving customers because of it.

Why it matters An external service outage does not block service at the rental point.

A new sale on a device is blocked while an operation on that device is still in progress.

Challenge The same payment terminal should not start a new sale while a previous operation on it is still processing.

Why it matters Two payments on the same terminal cannot overlap or confuse the cash totals.

  • Python
  • Flask
  • PostgreSQL
  • APScheduler
  • Gunicorn

Selected work

Tell us where the operation no longer fits the tools.

Name the process owner, what is breaking, what it costs in time or money, and which systems are already in place. We will first test whether custom software is justified.

Or directly

By submitting the form, you accept the data processing terms.