What inspecting homes with paper forms and WhatsApp actually cost
- · Paper forms and a ballpoint pen. The technician would arrive at the customer's home with a printed form, handwrite the manometer readings, the state of the service line, observations, and sign at the end. If a field was forgotten, it was filled in from memory later — or left blank.
- · Photos over WhatsApp on personal phones. Photos of the installation, the meter reading, and the conformity certificate were taken on the technician's personal phone and arrived at the office mixed in with memes, family photos, and other chats. Traceability was impossible.
- · Certificates took 5 to 10 business days. An office admin would take the paper form, the loose photos, and assemble the certificate in Word. Print, sign, scan, email to the regional distributor. The end customer waited 5 to 10 business days. And the distributor could not act on it until the PDF arrived.
What GasCheck changed
- · Capture on the phone, offline-first. The technician opens the app, fills the digital form, takes photos from inside the app (not the system camera), and keeps working even without signal. Back at the office, everything syncs on its own.
- · Certificate generated on the backend, ready to send. When the inspection closes, the Django backend assembles the PDF with the institutional template, the data, the photos, and the technician's signature. The certificate is emailed to the regional distributor in under an hour from when the technician finished the visit.
- · End-to-end traceability. GRI can ask "how many inspections were done in southern Cali this month?" and get the answer in seconds. Every inspection has a timestamp, GPS, responsible technician, photos, and outcome. The distributor knows exactly when and by whom each certificate was issued.
The app captures, the backend certifies
The client wanted the certificate to come out instantly. The right call was to NOT generate it on the app. The phone captures; the server certifies. If the phone is lost, the certificate can be re-issued from the server. We designed the flow this way:
- 1 The app captures, the backend certifies. The technician's phone does not generate PDFs. It captures data, photos, GPS, signature. The Django backend assembles the PDF with the institutional template, hash, and metadata. If the phone is lost, the certificate can be re-issued from the server.
- 2 Offline-first because signal inside homes is not negotiable. Technicians visit homes with bad or no coverage. The app stores everything locally (SQLite / AsyncStorage) and syncs when back at the office. An inspection never stalls because of signal.
- 3 PostgreSQL as the single source of truth, on-premise. GRI runs the app and the backend on their own servers. The database stores inspections, technicians, photos, generated PDFs, and the audit trail. Nothing goes to the cloud.
- 4 PDF generation is async, not in the HTTP request. The PDF is not generated when the technician closes the inspection. A Celery task assembles it in the background, saves it to disk, and triggers the email to the distributor. The technician does not wait.
┌──────────────────┐
│ React Native │ ◄── Field technician, offline-first
│ + Expo app │ Captures: data, photos, GPS, signature
└────────┬─────────┘
│ Syncs when back at the office (WiFi)
▼
┌──────────────────┐
│ Django + DRF │ ◄── API, auth, models, validation
└────────┬─────────┘
│ Enqueues on inspection close
▼
┌──────────────────┐
│ Celery worker │ ◄── Assembles PDF with ReportLab / WeasyPrint
│ + Redis broker │
└────────┬─────────┘
│ Generates PDF + sends email
▼
📄 PDF on local disk
📧 Email to regional distributor What we took away from the project
- 01
PDF on the backend, not on the phone
The client wanted the certificate to come out instantly. The right call was to NOT generate it on the app. The phone captures; the server certifies. If the phone is lost, the certificate can be re-issued. The capture/certification split is what makes the system auditable.
- 02
AI came in as a development collaborator, not as a product feature
The MVP shipped in 2 months. AI helped with the Django backend scaffolding, the models, the serializers, and the first version of the PDF generation with template. Today it is standard practice across the team. It cuts time to market without cutting quality.
- 03
Offline-first because the field does not negotiate
The first version required connectivity to register an inspection. We switched it to local SQLite with sync when back at the office. Inspection drop-offs dropped to nearly zero. If you depend on signal inside a home, you lose the inspection.
We used to deliver the certificate five to ten days after the inspection, and the distributor had no way to know if it was real. Now the technician finishes the visit, gets back to the office with signal, and within an hour the distributor has the PDF in their inbox.
Paraphrased testimonial.
Got field technicians still working with paper and WhatsApp?
20 minutes on a call about your operation. We walk through scope, architecture, and how fast you can move off paper. No commitment.