The Pre-Engineering Wizard is a public-facing tool available atDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/ency07/B2B-import/llms.txt
Use this file to discover all available pages before exploring further.
/wizard that allows industrial prospects to self-qualify their ventilation needs before ever speaking to a sales engineer. Visitors input their space dimensions and environment type, the system performs deterministic aerodynamic calculations in real time, and the result is a diagnostic report — complete with required CFM, equipment category, price estimate, and a materials recommendation — that is simultaneously stored as a scored lead in the ERP.
End-to-End Flow
Service and Urgency Selection
The visitor selects the type of service required (
fabricacion, venta, mantenimiento, reparacion, or otro) and the commercial urgency level (baja, media, or alta). Urgency affects both the pricing multiplier and the lead score.Physical Dimensions and Environment
The visitor enters the space dimensions (length × width × height in meters) and selects the operational environment type. A live CFM ticker updates at 60 fps as dimensions change, powered by client-side calls to
calculateRequiredCfm().Contact Information
The visitor provides their name, company (
empresa), job title (cargo), phone, email, and city. The form validates that the phone number matches the Colombian E.164 format and that the email is syntactically valid.Calculations Review
A HUD panel displays the computed CFM, cubic-meter volume, ACH rate, environment severity, and estimated price range in COP and USD — all recalculated live before submission.
Submission and ERP Registration
On confirmation, the
submitWizardData() Server Action runs. It creates or upserts a clients record, creates or reuses a client_contacts record, creates a scored leads entry, and saves a diagnostic_reports record. The result page shows the diagnostic code and allows the visitor to download a PDF report or send a WhatsApp message to the sales team.Submission Interface
The wizard accepts the following shape fromsrc/app/actions/wizard.ts:
Result Interface
After a successful submission,submitWizardData() returns:
diagnosticCode is auto-generated by the diagnostic_reports table trigger and printed on the PDF report.
CFM Calculation Engine
CFM is computed bycalculateRequiredCfm() in src/utils/engineering.ts, which delegates to the full generateEngineeringReport() engine. The formula applies ASHRAE Air Changes per Hour (ACH) norms per environment type:
heavy_plant and mining environments due to higher airborne contamination loads.
CFM Categories
| Category | Threshold | Typical Use |
|---|---|---|
COMPACT | < 2,000 CFM | Small workshops, offices |
STANDARD | 2,000 – 7,999 CFM | Medium warehouses, food processing |
HIGH | 8,000 – 14,999 CFM | Large industrial plants |
CRITICAL | ≥ 15,000 CFM | Heavy manufacturing, mining, data centers |
ACH Reference Values (ASHRAE)
| Environment | ACH Rate |
|---|---|
heavy_plant | 45 |
data_center | 30 |
mining | uses heavy_plant factor |
warehouse | 8 |
default | 10 |
Pricing Engine
Pricing is computed byestimatePrice() in src/utils/pricing.ts. Base prices per service type in COP:
| Service | Base Price (COP) |
|---|---|
fabricacion | $1,200,000 |
venta | $800,000 |
mantenimiento | $300,000 |
reparacion | $500,000 |
alta = ×1.35, media = ×1.10, baja = ×1.00). The final range applies a ±15% deviation to produce a preliminary commercial estimate. Exchange rate is fixed at 1 USD = 4,000 COP.
Materials Recommendations
The materials recommendation is derived deterministically from theenvironment field:
heavy_plant / mining
Industrial Blower or mushroom extractor (
tipo Hongo) with epoxy anticorrosive coating and extruded aluminium blades.data_center
Air injection system with EPA/HEPA particle filters and acoustic vibration-dampening control.
warehouse / default / other
Multipurpose extractor or high-capacity axial fan with 22-gauge galvanized steel ductwork.
No AI, No Hallucinations
The wizard uses fully deterministic rule engines — no LLMs, no external AI inference calls.
calculateRequiredCfm() and estimatePrice() are pure TypeScript functions that produce the same output for the same input every time. This ensures consistent, verifiable results and eliminates hallucination risk for technical and financial estimates.Security Model
URL
?tenant=<code> loads the white-label branding (logo, primary color, company name) for the corresponding tenant. Pre-populated query parameters ?product=, ?length=, ?width=, ?height=, and ?environment= are also supported to deep-link from the marketing catalog with dimensions pre-filled.