The problem
Customers and internal teams navigated website directories, Google Sheets, and documents that each held only part of the upholstery story. Updates created a backlog and inconsistent answers.
The engagement
I traced how upholstery information moved between the website, Google Sheets, reference documents, sales conversations, and the Odoo product database. The issue was not a shortage of content. It was that no single source held the complete answer or defined who was responsible for keeping it current.
The solution
I turned the maintained Odoo product record into the publishing source for a dynamic public knowledge base. The work combined data modeling, page templates, client-side behavior, and operating rules so the same record could support internal teams, sales partners, and customers.
1. Treat the product record as the data contract
Composition, cleaning codes, origin, imagery, and related guidance were modeled as governed product fields. Defining the contract first created a clear boundary between information that belongs in the source system and presentation logic that belongs on the public page.
2. Publish dynamically instead of synchronizing documents
XML and HTML templates render current product data directly from Odoo. This removes the need to update a spreadsheet, document, and website independently whenever a material changes or a new upholstery option becomes available.

The public listing renders maintained product information directly from the authoritative Odoo record. 3. Build governance into the maintenance workflow
Internal sync rules define how records are created, reviewed, and updated. Ownership stays with the team already responsible for product accuracy, so the public experience does not depend on a separate content backlog or a technical operator translating every change.
4. Serve several audiences from one maintained source
The public interface presents technical information in a form customers can understand while preserving the specificity sales and internal teams need. One source can therefore support education, selling guidance, and consistent customer messaging without creating audience-specific copies of the data.
Why it worked
The solution addressed information ownership before page design. Once Odoo became the governed source, the interface could stay current by design. The system reduced maintenance because publishing became a consequence of maintaining the product record, not a second operation performed afterward.
Outcomes
- Manual update time fell by more than 60 percent.
- Customers and sales partners gained one dependable place to research upholstery details.
- Composition, cleaning, origin, and visual information now come from one authoritative source.
- Internal teams can update product truth without maintaining parallel website directories and reference documents.
Led discovery, solution architecture, data modeling, and implementation.