
Custom CRM with a photovoltaic system configurator. Quote preparation dropped from 45 minutes to 6 minutes, zero component mismatch errors, +32% quote-to-contract conversion in the first 6 months after rollout.
faster quote preparation (45 min → 6 min)
higher quote-to-contract conversion in 6 months
component mismatch errors eliminated
lead response time (was 4h)
sales reps and PMs using CRM daily
from discovery to production
Bruk-Bet Fotowoltaika is a Polish renewable energy company: one of the larger manufacturers and distributors of photovoltaic systems in Poland. It sells PV kits to homeowners, businesses and solar farms: both directly and through a partner network. The sales team consists of more than a dozen field and office reps, with quote oversight handled by Project Managers.
The company grows at the pace set by the PV market: from a few dozen quotes per month to several hundred. Excel-based processes that worked when there were 3 sales reps stopped scaling with a team of nearly 20.
Before the new system, the Bruk-Bet team worked from shared XLSX sheets with a warehouse product list and a quote template. Every quote was essentially a manual composition of PV modules, inverters, cabling and mounting hardware. Discovery workshops uncovered 5 recurring problems:
A sales rep would open the template, copy products from the warehouse list, manually sum installation power, check that every required element was included (module, inverter, optimisers, cabling, mounting), calculate price, format PDF. Each quote took 45-60 minutes: capping each rep at 5-6 quotes a day.
In 15-20% of quotes errors appeared: not enough modules to reach target power, mismatched inverter (oversized or undersized), missing optimisers on shaded installations. Each error cost: either client complaints or the installer footing the bill.
Quotes lived in emails and local folders. Two reps could be working the same client independently, sending conflicting quotes and cannibalising margin. The Project Manager found out about conflicts only when the client flagged them.
Every quote above a certain value required PM approval. In practice: rep emails PM, PM replies by email or phone, rep comes back with corrections. Average approval time: 4-6 hours: often long enough for the client to receive a competitor's quote first.
Component prices (modules, inverters) changed monthly. Old quotes from 2-3 months prior were pulled from folders and sent to clients with stale pricing. Result: margin below cost, or price above the competition.
At the kickoff workshop with leadership, PMs and 3 sales reps we agreed on measurable goals to evaluate against 6 months post-rollout:
Interviews with 8 people: 4 sales reps across different regions, 2 PMs, sales director, administrator. Shadowing: we sat next to reps and watched how they actually work, not how they describe their work. Output: 34 user stories, AS-IS vs TO-BE process map for quoting, a catalogue of warehouse components with categories and compatibility rules.
We defined 4 personas (sales rep, PM, director, administrator) and their top tasks. Built a clickable Figma prototype for 6 key flows: quote creation, draft edit, PM approval, sending quote to client, duplicating an existing quote, rep performance report. We tested the prototype with 3 reps: surfaced 12 fixes before a single line of code was written.
Six 2-week sprints. Team: 2 developers (backend + fullstack), UX designer (part-time), tech lead. Every sprint ended with a demo for the client's team (PMs and 2 rep "ambassadors"), feedback fed back into the backlog. We did not move the deadline: we cut scope in less critical modules (detailed reports were pushed to phase 2).
No big-bang. 5 sales reps (workshop ambassadors + 2 self-declared sceptics) ran the old Excel and the new CRM in parallel. We gathered feedback daily in week 1, every 3 days after that. We surfaced 23 small issues: mostly form ergonomics and warehouse filter speed.
Two 2-hour online training sessions (morning and afternoon so every rep could attend), a 12-page user handbook with real-scenario screenshots, a dedicated Slack channel for issues. Two weeks after rollout, the Excel template was formally retired.
The heart of the system. The sales rep picks installation type (pitched roof, flat roof, ground) and target power, and optional parameters (shading, battery storage, wallbox). The system automatically selects modules, inverter, cabling and mounting hardware from the warehouse, validates compatibility and power, calculates net/gross price. All selection rules live in one place, easily editable by the client's admin: no developer involvement for a pricing or catalogue change.
All quotes in one place, filtered by rep, status, value, date. Statuses: draft, in PM approval, approved, sent, accepted, rejected, contract signed. Real-time pipeline visibility for PM and director: no more "how's it going" calls to reps.
Rep submits quote → if value > threshold or non-standard configuration, routed to PM → PM approves in panel or returns with comments. Push + email notifications. Average approval time dropped from 4-6h to under 45 minutes.
Component database (modules, inverters, cabling, mounting) with purchase price, margin, stock levels. Price in the quote always pulled from current catalogue, never from a week-old copy. Duplicating an old quote automatically refreshes prices with a message: "price updated by X zł".
One click → branded PDF with Bruk-Bet logo, kit parameters, schematic diagram, ROI calculation. Direct send from panel via client's SMTP: no copy-paste to Outlook. Send history in CRM + auto-reminders at 3 and 7 days with no response.
For PM and director: rep performance, average quote value, lead-to-quote time, win-rate by acquisition channel, component rotation in stock. Monthly reports exported to PDF/Excel for board meetings.
Once the client accepts, the quote converts into a contract draft with pre-filled customer data, kit specs, price, terms. The rep does not retype: just verifies, adds tax ID if missing, and sends for signature. Contract creation time dropped from 20 min to 3 min.
Backend: PHP 8.2 + Laravel. Database: PostgreSQL 15. Frontend: Vue 3 + Inertia.js (hybrid SSR/SPA, no SPA bundle boilerplate). Auth: Laravel Sanctum + role-based access control (5 roles, 40+ permissions). Files and PDFs: custom renderer on wkhtmltopdf + S3-compatible storage. Mail: client's SMTP + queued background workers. Monitoring: uptime + Sentry for errors.
Infrastructure: 8 vCPU / 16 GB RAM VPS in Poland, PostgreSQL on a separate server with backup-node replication, Nginx + PHP-FPM, cron for reminders. Full DB backup every 6h to an external provider's S3. Zero-downtime deploys via GitHub Actions + Deployer.
Six months after rollout we compared KPIs pre- and post-implementation:
“The reps who were sceptical at the start were coming to us after a month with ideas for more features. That was the moment I knew the rollout had worked.”
Three things we did right that we recommend to anyone rolling out a CRM in a sales org:
Want a similar CRM for your sales or manufacturing org? See our custom CRM software or nearshore software development page, or book a scoping call.