Multi-company business platform
A single piece of software with more than 35 modules that runs four different companies every day, from CRM to invoicing.
- Stack
- React, Node.js, PostgreSQL, nginx
- Area
- Software



Where we started
The platform started life at a financial advisory firm that relied on Google Sheets and external subscription services: MailerLite for the newsletter and Zapier to connect one service to another (138 workflows, 109 of them active). Any question that crossed two tools, such as “did this client open our last email?”, meant an export and a manual cross-check.
Over time other businesses came on board: a creator agency, a party venue and a furniture shop. They all needed clients, a calendar, contacts and accounts, but each with its own rules.
What we did
We wrote a single piece of software instead of a separate program for each company. Each company signs in from its own address and sees only the modules it needs. The server decides what each person can do based on their role, not the page: hiding a button isn’t enough to protect data.
Piece by piece, we brought in what used to live outside. The newsletter sends on its own through Amazon SES, with contacts, lists and automations imported from MailerLite. The Zapier workflows became internal automations, with a log that shows what ran and what didn’t. Italian e-invoicing is built in: invoices go out as XML, ready for the SdI.
The same software also serves the public pages: client area, billing details collection, call booking and party requests. Client websites send it forms, comments and sign-ups, and get back the contact box, visitor statistics and the privacy notice.
The database grows through hand-written, commented migrations: there are now more than 340, and each one explains why a table is built the way it is.
How it’s built
- React front end with Vite, Node.js back end with Express, PostgreSQL database
- nginx web server in front of everything, on our European servers
- Sign-in with password and two-factor authentication
- Permissions per company, role and user, checked by the server
- External portals for clients, creators and the sales network within the same application
The modules
Sales and clients
- Sales & Leads: list, pipeline, to-dos, check-ups
- CRM: companies you’re in talks with
- Renewals: clients to get back in touch with, month by month
- Contacts hub: a network of TV channels, investors, events and brands
- Advisory: clients, portfolios, anti-money laundering, contracts and recommendations
- Fees: calculating what each adviser is owed
Administration
- Invoicing: billing details collected from clients and Italian e-invoicing in XML
- Income and expenses: per company, with self-billing invoices
- Accounting: double-entry bookkeeping, VAT, fixed assets, balance sheet
- Contracts: automatic PDF generation
- Storage: rented spaces and fees
- GDPR and privacy: site scanning, policies, cookie banner, consent log
Communication and marketing
- Newsletter: sending through Amazon SES, in place of MailerLite
- Podcast: publishing to Spotify and the other apps
- Video and editing: video library, cutting and subtitles
- Creator calendar: releases and sponsor slots
- Visits: cookie-free website statistics
- Site widgets: contact box and chat
- Website: contacts, comments and shop for connected sites
Operations
- Calendar: call booking with reminders, video call and Google Calendar
- Automations: connections between Stripe, WooCommerce, LearnDash and Google Sheets
- Boards and whiteboards: kanban and infinite canvas
- Notebook: notes and deadlines
- Documents: file archive with single sign-on
- PDF utilities: merge, split and convert PDFs
- Dashboard: status of servers, email and websites
- Partyland: venue calendar, families and loans
Industry tools
- Markets: candlestick charts, indicators, alerts, backtesting and screener
- Simulators: severance pay (TFR) versus pension fund, mortgage, annuity, regular investment plan (PAC)
- Register enrolment: a guided path for financial advisers
- Crypto anti-scam: tracing funds on the blockchain
- Deals: bargains from Subito, Vinted and eBay
Outcome
Four companies in different sectors work on the same platform every day. Newsletter, automations, invoicing, bookings and documents no longer go through external subscriptions, and client, order and communication data sit in the same database, where you can cross-reference them without exporting anything.