Internal tool that automatically imports customers' telephony, fibre and CCTV equipment into the Bob! Desk maintenance software.
Stack
- Languages
- Python
- Front-end
- React
- Tailwind CSS
- Vite
- pywebview
- Back-end
- Flask
- Tools & APIs
- PyInstaller
Context
At Socacom, every new customer meant typing their whole installed base (Alcatel-Lucent phones, Unyc Centrex lines, fibre links, cameras) into Bob! Desk, the company's maintenance management software, by hand. A slow, repetitive, error-prone job, working from Excel exports that differ by manufacturer and carrier.
Role
Solo design and development, from the field need to the executable handed to colleagues: reading the exports, mapping them to the Bob! Desk data model, API client, interface and packaging.
Architecture
Excel exports
Alcatel EDN · Unyc · fibre · CCTV
React interface
Vite + Tailwind, pywebview window
Local Flask API
Type detection, YAML mapping, de-duplication
Bob! Desk API
Auth, retries, pagination
Reports
CSV + JSON per customer
Challenges
Normalising very different sources (Alcatel EDN export, Unyc users, FTTH/FTTO links per carrier, NVR/DVR and cameras) into a single model; avoiding duplicates for customers already entered; making imports safe to replay with a Replace mode and a dry-run mode that writes nothing. On the distribution side, packaging a React interface and a Flask backend into a single Windows .exe that needs no installation.
Outcome
A standalone executable used in-house, with automatic file-type detection, duplicate protection, equipment photo upload and per-customer CSV/JSON reports. It led to DocsDesk, a second tool on the same foundation that converts documents to PDF and files them in the customer record.
Highlights
- 4 import types: Alcatel-Lucent, Unyc/Centrex, fibre links, CCTV
- Dry-run and Replace modes for replayable imports
- Bob! Desk HTTP client with auth, retries and pagination
- Shipped as a standalone Windows .exe (PyInstaller + pywebview)