Estimia for Window Companies: One Engine, Every Company Its Own Price List
Every window company sells the same kinds of products at its own prices, from its own suppliers, with its own margins. Estimia gives each of them a calculator priced from its own catalogue and a CRM that runs the job from the first request to installation - on one shared engine.
The Challenge
A window’s price is the sum of dozens of choices - profile, glass, hardware, colour, sill, shutter, labour - and every company buys these from its own suppliers and adds its own margin. So many still price jobs in a spreadsheet only one person understands, and track the job in a notebook and a WhatsApp chat.
Estimia had to give each of these companies a real calculator and a CRM without building a separate version of the software for each one: a platform where a company signs up and gets its own catalogue, prices and job tracking straight away.
One Catalogue, Three Layers
The product catalogue is split into three layers, so the technical facts are maintained once and the prices belong to each company.
- The schema describes the structure of a catalogue and the rules it must follow. Every company’s configuration is checked against it.
- Technical presets hold what is true of a product no matter who sells it: the depth and number of chambers of a profile, the thermal values of a glass unit, names in English, Spanish and Russian. The presets contain no prices at all.
- The company’s configuration picks the presets it sells and adds its own prices, margins, labour rates and branding. It can also drop what it doesn’t offer - a colour, a hardware set - or add items of its own.
When the calculator opens, the platform merges the presets with the company’s prices into one catalogue. A correction to a profile’s technical data reaches every company that sells it, while nobody’s prices are touched.
The catalogue has around twenty sections, from profiles, glass units and hardware to sills, trickle vents, glazing bars, mosquito nets, shutters and pergolas. The main sections have their own editors, built for that kind of product rather than a generic table.
Prices can follow the way suppliers actually charge. A glass unit can cost more per square metre as it gets larger, hardware sets come in size tiers by sash area with security upgrades on top, and profiles can carry discounts by the number of metres ordered. A company can also attach the catalogues of the factories it buys from and keep them alongside its own.
A CRM Built Around the Job
Every order is a card on a sales board. A new company starts with a ready pipeline that follows a window job - new request, measurement requested, scheduled, measured, awaiting estimate, proposal sent, approved, in production, installation, completed or lost. Two stages are reserved for the marketplace: requests the company has accepted arrive in one, and a job lands in the other when the client hires the company.
An order can carry several quote options - the same windows with different profiles or glass - each priced separately. Each quote has a status that follows it through draft, sent, viewed, approved, rejected or expired, so a manager can see which offers the client has opened and which are waiting.
The dashboard shows sales against the previous period, the value and conversion of each pipeline, revenue over time, and what needs attention: platform requests stuck in the first stage and quotes with no reply, both for more than three days. A separate analytics page is in the interface but not yet filled with reports.
Installations, Subcontractors and Factories
Measurements and installations are tasks with an address, time, duration, labour cost and notes, assigned to the company’s own fitters or to subcontractors, who are invited by a link and see their own queue. The fitter accepts or declines a task, uploads photos of the finished work and marks it complete.
When the windows are made elsewhere, the order goes to a factory as a factory order and moves through pending payment, paid, in production, shipped and delivered.
Before ordering, a company can ask factories for a price. The platform writes the request for quotation from the order: a greeting, the items with their specifications and sizes, identical items grouped together, the company’s notes and signature, in English or Spanish. The manager previews the email and sends it, with a technical specification PDF attached.
The Same Glass Unit, Every Price List
Every factory names the same glass unit differently. Inside the calculator a manager can open a comparison of the selected glass unit across the price lists of the factories the company works with. The platform matches the unit in each catalogue by its code or by its physical specification - thickness, thermal value, gas fill, coating, safety - and shows what it would cost for this particular window, cheapest first. Price lists that don’t carry it are listed too.
Support with Deadlines
Companies and their clients open support tickets inside the platform. A client’s ticket records the page they were on and the quote they last viewed, so support doesn’t have to ask.
Every ticket has a response deadline by priority: two hours for high, twelve for medium, forty-eight for low. Overdue tickets are flagged every fifteen minutes and the support team is notified. Notification emails can be answered directly: the reply lands in the ticket’s thread; quoted history, signatures and out-of-office replies are stripped, attachments are kept. Resolved tickets close themselves after a week, and the client is asked whether the problem was solved - a “no” reopens the ticket.
A Call After the Deal
When a job that came through the platform is closed as won or lost, a quality-control call is queued automatically. A member of the care team calls the client to ask how it went and confirms the details of the deal. Calls are taken from a shared queue so two people never phone the same client, unreachable clients are retried before the call is closed, and an oversight screen shows how many clients were reached and what the calls found.
Google Ads Learns from Real Sales
Optimising ads for form submissions says nothing about which clicks turned into paid jobs. Estimia stores the Google Ads click ID and campaign tags of the visit with the request. When the order is moved to a won stage, the platform sends Google Ads an offline conversion with the actual order value. Each order is sent only once, and failed uploads are retried only when the error is temporary. This lets the ad account bid for revenue rather than leads.
Three Plans
Subscriptions are billed through Stripe, with Spanish and EU VAT handled by Stripe Tax and plan changes made in Stripe’s customer portal.
- BASIC is free and meant for team members who receive work: their own tasks, calendar and availability, labour costs, notes and job photos.
- PRO is the full CRM for dealers and installers: requests from Estimia, the sales board, the calculator on site, branded quote PDFs with discounts, the marketplace, subcontractors and factory orders, analytics and team management. It comes with a 14-day trial.
- MAX adds a custom pricing engine, multi-option comparison, a lead-capture widget for the company’s own website, AI agents, document templates and priority support.
If a subscription ends, the company drops back to BASIC.
The Ambassador Programme
Estimia grows partly through ambassadors who bring window companies onto the platform. Each ambassador has a personal link to share. A company that signs up through it is linked to the ambassador, who then earns a share of the platform’s commission on that company’s work, credited only once the commission has actually been paid. Ambassadors get a full workspace for demos and a ledger of their earnings.
Tech Stack
- Business app: Laravel 12 + Inertia + React 19 + TypeScript
- Catalogue: JSON Schema + price-free technical presets + per-company priced configuration
- Geometry engine: Paper.js (window drawings in the calculator)
- Real-time: Laravel Reverb WebSockets (boards, tickets, notifications)
- Database and queues: MySQL + Redis
- PDF: Gotenberg (headless Chromium)
- Email: Postmark (outgoing mail and inbound replies to support tickets)
- Payments: Stripe + Laravel Cashier, Stripe Tax
- Advertising: Google Ads API (offline click conversions)
- Storage: Cloudflare R2
- Delivery: Docker, GitLab CI, Kubernetes (k3s) with ArgoCDResult
A window company joins Estimia and gets a calculator priced from its own catalogue, on technical data maintained once for everyone. The same platform runs the job - sales board, multi-option quotes, fitters, subcontractors, factory orders and price requests - with support on deadlines and a call to the client at the end. Won deals feed Google Ads with their real value, and the plans let a single fitter start for free and a manufacturer grow into the full toolset.



