Overview
This suite of CRM tools was built to manage quote requests, customer
accounts and subscription renewals. As a company of eight people,
individual time and focus matters a lot. Before this tool suite, each
quote that came in was a custom request, that required atleast an hour
of time to put together. By creating the automated quote tool, I
standardized and automated the quote process saving, by the COO's
estimate, 30 hours per month. The quote tool feeds into our legacy CRM
database on Zendesk and writes new lead information to Firebase RTDB,
as we prepare to migrate all of our customer data in JSON hosted on a
WebDAV server.
Next, I built a relatively simple CRM Portal for our COO to login to
and view customer data. This portal will be developed further as the
company expands. It currently has a dashboard and subscriptions page,
where we can go to see all of the active Simtable subscriptions
ordered by expiration date. It is connected to our Acequia WebDAV
Database to fetch/edit account information (see below for more info on
Acequia).
Finally, the subscription renewal tool allows admins in the CRM
platform to create custom carts (to support our varied subscription
and pricing models) for customers. The Simtable software moved to the
SASS model in 2019 but tracking and billing for subscription renewals
has been a manual process, with poorly organized account data. For
this project, I sifted through years of purchasing and customer data
to create a cohesive dataset of existing accounts and their
subscription type/length. This project has the potential to collect
150k in unclaimed revenue from subscriptions lapsing without our
account's manager noticing. The custom carts display pricing and
subscription length options. Customers are prompted to update their
contact information. Finally, they commit to a payment method (Stripe,
Check, or Bank ACH) and are given instructions on how to check out
with that payment type.
Technologies / Tools
Quote Tool
- Firebase Functions with Firestore/Realtime Database
- Zendesk Integration
- Vanilla JS Iframe embedded in Wordpress Site
- PDFMake + nodemailer
Subscription Renewal Tool
- Firebase Functions
- Stripe Integration
- Custom setState/subscribe functions with immer.js
- Lit and Shoelace (for CRM portal)
- JSON Structured WebDAV Backend
My role
I have been a solo developer on these CRM projects. I am responsible for the work outlined in the Overview sections. In addition to that information, there are a few architectural pieces I am proud of to note:
- The subscription renewal tool is reliant on the admin platform I built. The admin platform is among the first apps Simtable hosted with our Acequia technology. Acequia allows us to host apps on our own server and make authenticated requests (JWTS) to other Acequia Nodes. A key player in Acequia is WebDAV, which has a defined structure for PUT requests, making it a great choice for decentralized architecture. WebDAV works well with JSON, so we organized our customer accounts into a series of JSON files in their respective directories. The UI for the CRM portal is also hosted on the WebDAV server.
- For the CRM UI, I used Lit Custom Components with Shoelace Components. These solutions greatly decreased development time. I used immer.js to manage immutable state updates, registering listeners to state objects and subscribing to changes on those objects in the components which consume that piece of state. This brings quick, reactive state management in an alternative, framework-less web app.