The public site and the internal platform share a deployment and a data layer. That is unusual for an agency site — the normal arrangement is a marketing site somewhere and a CRM somewhere else, joined by copy-paste — and it is the single decision that removes the most manual work, because the enquiry form writes directly to the record that the rest of the process reads.
Proposals are assembled from a block library rather than written from a previous file. Scope sections, exclusion clauses, payment terms and timelines are stored once and composed per proposal, with the composed output frozen when it is sent. Editing a block afterwards updates the library for future proposals and leaves every sent document exactly as the client received it.
Project tracking is deliberately shallow. There are phases with dates, deliverables with states, and a note thread. There is no burndown, no time tracking, no resource allocation. A business of this size does not have a capacity planning problem; it has a "what did we tell the client, and is it still true" problem, and those are solved by different software.
Language handling is the part visitors notice least and I spent the most time on. The public site had to serve content that changes without a redeploy, which meant treating page content as data and building the editing path for it, rather than shipping a site that requires an engineer for a price change.
On AI: there is one place in this platform where a model is involved, and it is narrow — turning a long unstructured enquiry into a short structured summary so the first responder can see what is being asked before reading three paragraphs. It runs after the record is already saved, its output is stored as a suggestion beside the original text rather than replacing it, and if it fails the record is unaffected. Nothing else here is model-backed, and describing the platform as AI-powered would be inaccurate.