Bolier engineers maintain diesel engines on board ships. After each job, a service report is completed on a phone in the MoreApp app, with remarks in Dutch. At the office, these raw reports were reworked by hand into client-ready documents: empty tables, rows and columns removed, photos resized and Dutch remarks translated into English. Processing took around 33 minutes per report, and during busy periods a backlog of reports built up.
The project was carried out in two phases. In the first phase, the reporting process was analysed on the basis of completed MoreApp reports and a working solution was built in Python. MoreApp generates documents with a fixed, predictable structure, so data extraction was kept fully rule-based. AI is applied at one point only: the translation of free text written by engineers. Bolier’s IT policy prescribes Microsoft Power Platform for internal applications. In the second phase, the proven logic was therefore rebuilt within Power Platform, so the solution runs and is managed inside Bolier’s own Microsoft environment.
The Python version processes every incoming report through a seven-step pipeline. Tables, text boxes, logo and photos are extracted from the Word file. The report type is identified from a fingerprint of the logo combined with fixed keywords in the document. For each engine type (MaK diesel, MaK gas and ABC), around 40 components are parsed. Dutch remarks are translated into English via Azure OpenAI, with fixed settings so identical input always produces an identical translation. Values are normalised, required fields are checked and a client-ready report is generated with Bolier’s logo, fonts and layout intact.
The Power Platform version follows the same logic. Reports arrive in a OneDrive inbox folder and are picked up by a main flow in Power Automate, which calls separate sub-flows. A single generic engine removes empty sections, rows and columns from the report, driven by configuration stored in Dataverse. Layout, fonts, headers and footers remain untouched. New component types can be added as separate flows without changes to existing logic.
Processing time per report drops from 33 to 4 minutes. At 100 reports per month, office time falls from 55 hours to under 7 hours, a saving of around 48 hours per month. The Python version works end to end for the MaK and ABC report types. The Power Platform version is being built component by component, starting with MaK.