At Crema, we build custom digital products for our clients. They could use off-the-shelf software but choose to create something to fit their specific needs.
These tools are generally only for use within the client’s organization. They require constant refinement as client teams express business logic through digital solutions. They take input and feedback from leadership, stakeholders, employees, users, the market, and more, transforming those insights into software.
Internal tools are a powerful way to improve efficiency and build confidence around well-defined processes. If you run a digital product agency like Crema, they also provide additional practice for production team members, providing a low-risk environment for testing new tools and workflows.
Every now and then, we get the chance to create tools for ourselves. Here are two examples of lightweight internal applications that were built to meet specific needs at Crema.
Hotdesk - a desk checkout tool
We can all recall the events of 2020 and beyond, where terms like “contact tracing” became part of our common language. As time continued, Crema began to transition from remote-only to remote-first. With optional in-person work being back on the table, we found ourselves in need of additional tooling to manage new datasets that would help keep everyone safe.
Hotdesk started as a simple question from leadership: “How might we create a way to schedule and log working sessions within our office?” It was a way to build accountability and transparency into the strangeness during the slow reopening process.
We determined that a lean web app would do the trick and set out to build something for employees who wished to work in that shared space.
The app was built with React (Next.js) and hosted on Vercel. This pairing allowed us to use tooling that we knew inside and out while minimizing the overhead required to get a product into the world. Since it was a tool that only our employees would use, we set up Google Authentication to control access, limiting the users to those within our organization.
Airtable served as the back-end for this app; spreadsheets make great databases! We created a few automated scripts that ran when records were added/changed to fetch information from Slack (profile picture, etc.) which removed the need for anyone to update their information in multiple systems.
We decided to split daily reservations into morning and afternoon, providing additional flexibility and freeing up spaces for others later in the day. This all populated a running list of records in Airtable and sent daily notifications to a dedicated Hotdesk channel in Slack. These simple measures helped prevent double bookings, even on busy days, since the status of a particular desk could be seen by everyone in multiple contexts.
Despite the fast turnaround time - one Developer working part-time for a couple of weeks - this app continues to be a daily driver for employees who work from our main office in Kansas City. The tool sits at a careful balance between functionality and minimalism, making for easy maintenance and upgrades over time.
Top Hat - a Slack mass-messaging tool
We have been spoiled to have several incredible Hospitality Coordinators over the years. Their work of facilitating events and keeping everyone aware of important information is often invisible to the rest of the company.
Since our primary communication tool is Slack, the limitations of one-to-many messaging within that ecosystem make receiving individual input from multiple people a real chore. It’s natural that more time will be spent on this work as our company grows; we saw an opportunity to disrupt this exponential effort with a well-placed tool.
Most apps that promise mass-messaging capabilities try to remain entirely within Slack. This is a strong option since Bolt and Block Kit provide a lot of helper methods for creating UI, event listeners, webhooks, and much more. We started with this but ran into limitations around message formatting that ultimately halted our progress.
After some research and deliberation, we decided to spin up another lightweight React app in place of the Slack-specific tools. Similar to Hotdesk, this all started in React (Next.js) and was hosted on Vercel. We decided to build upon the Airtable base that we already had, leveraging the employee information in one of the tables and adding a couple of columns for additional information.
Once we were back at home in React, things progressed very quickly. The tool still utilized Google Authentication to ensure only Crema employees could log in, with an additional layer of security that checked each attempt against a small list of users who were allowed to send messages to everyone at once.
Messages could be formatted with a WYSIWYG editor that (nearly) mirrored the one within Slack. Once created, a message could be previewed by the current user via a direct message from a custom Slack bot. This allowed the sender to try many different things before committing to something seen by many people in our company.
When they were ready to send the final message, we cheered them on with funny gifs and confirmations. Building confidence - and adding a little levity - is an important piece of any application. When we build something that will showcase the efforts of a single person, we have a responsibility to let them do their best work. This drives innovation on behalf of felt needs and is a great way to motivate people on both sides of the codebase.
How do you pursue building internal products?
Perhaps you are reading this and wondering what it looks like to build something for your own team. While every organization will solve this differently, there are a few principles that we’ve learned over the years.
- Finding a good idea inspires people. Focused efforts are often the byproduct of filtering ideas through an external reviewer. Give a production team member some open time and they can build all kinds of concepts, but what creates real value? In the cases of Hotdesk and Top Hat, we saw disproportionate value for time spent to build solutions that would create new opportunities for our team, so those ideas rose above other possible projects.
- Understanding organizational priorities drives purpose. This will look different at every time and place, but there are guiding principles we can all follow. In the case of Hotdesk, Crema needed a tool to use as we slowly reopened in-office working spaces. It provided a clear benefit for autonomy and accountability within our company.
- Right-sizing the solution builds momentum. Top Hat was an idea that we started building entirely within Slack but hit limitations around rich text editing. It may have been possible to do some really wild magic within that toolkit or open tickets and discuss the requested feature with developers. Ultimately, we replicated the core functionality in an external framework, trimming anything that stood between us and releasing the first version of the tool.
- Making time to create new opportunities. It’s often hard to make a case for building something that has no quantitative value in annual revenue. The good news is that, when considering the case for internal applications, the value can be much higher than money or publicity. Employees can feel seen, appreciated, and valued when their needs are met by custom tooling. It’s also a great boost for the people creating the solutions when they see their work being used by coworkers!
- Building iteratively facilitates feedback. Releasing early and often builds momentum and fosters a shared sense of destiny between people at all levels in an organization. When you want to validate an idea, try using tools that are familiar. When you want to broaden your horizons, try using new tools. Either way, iterating on concepts and sharing those experiences with your team(s) will open lines of communication that may not have existed before.
There’s always a chance that none of the benefits or business cases listed above will convince your organization to consider building internal tools. At Crema, we’ve seen time and again the value of investing time to apply our strategies and practices back onto ourselves. Regardless of the size or scope of the tool itself, opportunities for growth always arise when going through the process as a team, which can breathe new life into digital product work.
Give it a try! Look for areas of need, map the situation, explore simple solutions, and start small. You may be surprised by the benefits of building something by and for your team that is made to fit your internal needs.