Gearo

German marketplace of photographic equipment, where you can rent or lease necessary camera, lens and other devices for shooting, drone or studio.

gearo.de

Onboarding

By default, both newly registered and anonymous users can view list of equipment, however, for KYC purposes (required by the payment system), we require user to complete his/her profile and upload ID etc, which we indicated by displaying alert message when user attempts to create advertisement or rent equipment.
To make the process more convenient to the user, we implemented step by step onboarding modal, which allows to upload ID, userpic, fill in profile details, send verification SMS, address and billing details.

Maps

At the first stage, within the growing number of equipment advertisements it has raised a question how to display this amount of markers on the map. Hence, originally we implemented markers clusterization using Google Maps SDK's Marker Clusterer and Mustache.js. Also, when lessor had multiple advertisements within the same address, they overlapped each other and displayed like a same marker, so we had to solve this. Hence, we used Overlapping Marker Spiderfier which allowed to render group of clusters in a web.

At the next stage, when Google dramatically increased pricing for the Maps SDK usage, we started to looking for alternatives for the further migration and decided on the HERE Maps. Their SDK has cluster aggregation out of the box and doesn't have additional dependencies. We also reworked advertisement info modal and since we didn't find any alternative for spiderfier, we refactored multiple markers rendering, attached to the same location, which we solved by implementing carousel with arrows inside the info window. Although, Here Maps widget did not have integrated location search with autocompletion, which we implemented on our own using Geocoder Autocomplete API.

Payments

We were looking for the payment gateway, which would allow us to build autonomous and completely automated billing system. Moreover, we needed payment system capture and hold funds on the platform wallet and subsequently pay them out for the rental lessors. Hence, we considered payment solutions, designed for the marketplaces, eligible as capable of that.

Ultimately, it was chosen MangoPay and we implemented its integration into the gearo platform:

  • automatically create MangoPay wallets for all users
  • credit card payment, using MangoPay Card Registration JS Kit (with 3D Secure support)
  • SOFORT banking
  • payments refunds and authorized funds release
  • automatic payout at the end of rental
  • KYC documents upload for client verification
  • platform wallet

Insurance Protocols

Upon equipment pickup and return, users need to sign insurance documents to get gearo covered by the insurance policy.
In order to allow lessors and tenants sign insurance protocols digitally, we implemented step-by-step form with complex validation. At the end of the form filling, both sides of the process put their handwritten signatures, which we capture using Signature Pad.

Real-time Chat

Instant communication became commonly used nowadays, so we decided to replace existing one-to-one messages with the real-time chat, which built on top of Websockets, Django-Channels and VueJS. It allows lessor and tenant to discuss equipment technical parameters, rental terms and etc and has online status indicator.

User Profile

Since we need quite a bit of user data for various purposes: insurance protocols, invoices, payment system KYC etc, we decided to re-organize user profile page as well and indicate which sections are complete, and which sections need to be further filled with green and red indicators in the company colors.
Revision also included integration of the instant bank account validation and KYC documents upload to the MangoPay.

Rental Request Management

To get more insights about rental requests declination/cancellation and based on that, improve rental request conversion into the rentals, we started to ask users specific reason of rental revocation. Thus, to get the overview of the reasons, we also built a custom admin site view with the metrics, displayed as a pie chart.

Recommendations

In order to improve user engagement we implemented equipment advertisement recommendations, which includes spatial search, powered by Elasticsearch, of the advertisements with similar title and category and within the nearby location.

Images Upload and Cropping

Quality images are highly important for advertisement representation, thus we provided users to upload high resolution images and crop them afterwards, powered by VueJS with Cropper.js and RESTful API endpoint with performs image post-processing.

Availability Schedule

We provided user ability to set schedule, when equipment is occupied and not available for the rent and could be set through the calendar by selecting start and end date.
At the same time, user is able to set weekly schedule on the permanent basis, at which days of the week equipment is available for the rent, opening and closing time.

Infinite Scroll Pagination

In order to load new results on the advertisements list, instead of numeric pagination, we implemented infinite scroll pagination, which automatically loads new results when user scrolls down to the bottom of the page.

Invoices Generation

At the first stage we tweaked customer invoice generation, which eventually got complex in terms of legal data and prices display for different kinds of user, forms of ownership, cross-border rentals etc.
Secondly, we implemented credit invoice generation, which contains platform fee, insurance and how much lessor is credited, which contains all sufficient information, necessary to document earnings into accounting. Given functionality, within the automatic payouts, allowed to achieve machine-driven billing system, without consistent staff member involvement.

Communication System

We implemented keen communication system which dispatches email notifications, SMS and powers real-time chat.
In order to keep customers up to date, we introduced bunch of scheduled notifications for all occasions:

  • Reminder to review rental request before response limit ends.
  • SMS about successful rental for both lessor and tenant.
  • SMS about canceled or rejected transaction for lessor and tenant.
  • Email about unread chat messages.
  • Reminders about pay in or pay out limits on the MangoPay — MangoPay KYC limits.
  • Reminders about today's rental pickup or return for lessor and tenant (starting or ending equipment rental today).

Discounts

As part of customer loyalty system we implemented discount voucher code functionality. As a gift for the signup, referred from specific pages, we provided user voucher code, which we automatically generated on the fly.
All voucher codes can be applied once or multiple times (depends on related offer model values) during rental process and consequently reduce rental price by the discout value. At the moment platform supports only absolute value discounts.

Google Analytics

With an eye to have bird's eye view on what happening on the platform, we integrated Google Analytics to track various kinds of actions and events.
Some of them:

  • User registration.
  • User search query.
  • User used map widget.
  • User viewed equipment detail page.

Miscellaneous

  • Data export to CSV files from admin.
  • Custom Facebook authentication flow, allowing user to login the same account through the Facebook and using email and password within the email confirmation for security reasons.
  • Test coverage for all major functionality.
  • Deployments automation using Ansible.
  • 2FA for the admin users using Nexmo Verify API.