
ReservPro: The solution for your chalets
ReservPro simplifies cottage rental management: availability, online bookings, automated billing, and guest communication—everything is centralized in an intuitive interface that' accessible from anywhere. Used by many managers in Quebec, our platform has been evolving for over 10 years to meet the specific needs of tourist accommodation.
Complete chalet management
Manage your units, availability, rates, seasonal and short-term rentals all in one tool. View your chalets on an interactive map or calendar.
Online reservations and payments
Allow your guests to book and pay online, by phone, or on-site. Easily manage deposits, lengths of stay, promotions, and additional options.
Integrated point of sale
Sell your additional services (activities, meals, equipment) via the integrated checkout with inventory tracking, receipts, taxes and Clover terminals.
Discounts & Rebates
Automatically apply discounts based on time period, guest type, length of stay, or selected options.
Activities and services
Easily create and manage your activities or services (free or paid): spa, packages, excursions, etc. with registration and place management.
Communication & customer files
Customizable email templates, comprehensive guest profiles, stay history, purchases, internal notes and more.
What ReservPro can do for you
-
Integrated AI (Aria)Your virtual assistant to simplify your daily operations.
-
Dynamic pricingAdjust your prices according to season, traffic or available units.
-
Automated invoicingGenerate invoices and taxes automatically, export for accounting.
-
Adaptable web interfaceAccess on mobile, tablet or computer — no installation required.
-
Human supportPersonalized support, training, and rapid assistance in French.
-
Detailed customer filesAccess your complete history of stays, purchases, and communications.

Assessment of your needs
'+textreturn+'
We're sorry, an error has occurred. Please try again.'+oldai); } equalizeHeight('egualheight'); $('.feature br, .response_buttons br, .getinfos br, #inscript_ai br, #btnoptions br, .getinfo br, .inscript_firststep br').remove(); $('.feature').next('br').remove(); $('.feature').next('br').remove(); $('.reply').next('br').remove(); } function execute_ai_pub(action='assistant_intro') { if($('.assist_aria').is(':visible')) action = 'assistant_aria'; grecaptcha.ready(function() { grecaptcha.execute('6Le8pCUrAAAAAN8VDkvng6dvQX3xl9HZ5lpPRLG6', {action: 'ubmit'}).then(function(token) { // You can now use this token to send it to your server if($('#question_ai').length) { // Example: Add in a hidden field then submit the form let form = document.getElementById('question_ai'); let input = document.createElement('input'); input.type = 'hidden'; input.id = 'g-recaptcha-response'; input.name = 'g-recaptcha-response'; input.value = token; form.appendChild(input); } if($('#question_ai_chat').length) { // Example: Add in a hidden field then submit the form let form = document.getElementById('question_ai_chat'); let input = document.createElement('input'); input.type = 'hidden'; input.id = 'g-recaptcha-response'; input.name = 'g-recaptcha-response'; input.value = token; form.appendChild(input); } execute_ai_final_pub(action); }); }); } function execute_ai_final_pub(action) { jQuery('.usrresponse').attr('placeholder','Your response...'); timreqfirst = new Date(); var aisess = 'evaluation'; //if(lastcode == '1' && first) { log = []; console.log('reset log'); first=false; } if(loading) { jQuery('.loader--text').html('There is already a loading in progress... Please wait'); } else { if($('#env_courriel').length > 0) { lastcode = 4; $('.assist_contact').removeClass('assist_contact'); } var name = ''; var fields = []; var haveinfo = false; if(action == 'assistant_aria') { var reqinfo = '#question_ai_chat .ariablock:last input, #question_ai_chat .ariablock:last textarea, #question_ai_chat .ariablock:last select'; aisess = 'aide'; rep = jQuery('#usrreponse_chat').val(); } else { rep = jQuery('#usrreponse').val(); jQuery('.user_response').show(); var reqinfo = '#question_ai input, #question_ai textarea, #question_ai select'; } $(reqinfo).each(function() { let id = $(this).attr("id"); let value = $(this).val(); let name = $(this).attr("name"); let type = $(this).attr("type"); // If it is an unchecked checkbox → on skip if (type === "checkbox" && !$(this).is(":checked")) { return true; // continue to the next element } if (!id) return true; if (id == 'Candidate name' && value != '') { name = value; } if(id == 'action' && value == 'evaluation') aisess = 'evaluation'; if (value != '') { fields.push({ id: id, value: value, name: name }); candidate' && id != 'g-recaptcha-response') { haveinfo = true; rep += '
' + id + ' : ' + value; } } }); if($('#employee').length > 0) var employee = $('#employee').val(); else var employee = ''; if(haveinfo && name != '') rep += '
Candidate name: '+name; console.log('aisess ' + aisess); console.log('rep ' + rep); jQuery.ajax({ url: '/en/ajax-pub?action='+action+'', type: 'post', data: { action: 'assistant', employee: employee, ai_sess: aisess, log: JSON.stringify(log), dataType: 'json', rep: rep, lastcode: lastcode, fields: JSON.stringify(fields) }, beforeSend: function() { //if(lastcode > 0) timreq = new Date(); log = log.concat({role:'user', content: rep}); loading=true; jQuery('.regen_ai').hide(); if(action == 'assistant_aria') { setTimeout(function() { jQuery('#question_ai_chat.assist_blocks').
' + rep + '
'); $('.assist_blocks').scrollTop($('.assist_blocks')[0].scrollHeight); }, 220); setTimeout(function() { jQuery('#question_ai_chat .assist_blocks').append('Please wait a few moments while I process your request...
Unable to send your message. '+html+ ' Try again?
');
}
}
}
});
}
}