H1 titles are ignored in the table of contents. We always start the table of contents links with H2.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila! Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
The broker posts this listing publicly and runs a whole marketing campaign (email, social, physical mailers) to find as many leads as possible.
PRO: Get more leads
CON: Have to split commission fee with another broker
The alternative is to keep the listing private and try to find a buyer yourself. This is called "double-ending" a deal, since the broker represents both sides of the transaction.
PRO: Don't have to split the commission fee
CON: Harder to find buyers
We conducted 12 user interviews to develop personas and guide design. Our findings confirmed a market need for a matchmaking product, with both Brokers and Buyers showing interest and willingness to pay. We presented these insights to leadership for further development.
Virtual interviews
Broker users
Buyer users
Research questions
Our findings confirmed a market need for a matchmaking product, with both Brokers and Buyers showing interest and willingness to pay. We presented these insights to leadership for further development.
To address both broker and investor goals, I created user personas to guide software use. One persona—BUYERS—was new to Buildout, so their needs were less understood. For each persona, we detailed:
• Their goals (long-term & short-term)
• Daily tasks
• Frequency of software use
• Other tools used
• Their ideal software
I frequently revisited these personas through multiple product iterations and business constraints, aligning management's ideas with user incentives.
After researching the commercial real estate industry, my project manager and I found only one company, RCM, addressing the problem, but its solution was too costly for most users. Other products offered partial solutions but lacked direct matchmaking like ours.
With multiple ways to go about solving the problem I rough sketched some possible ideas. These are broad structures that would help us choose a direction to continue
Dating Site
Map Search
Email List
Social Network
Once business concerns were taken into account, we decided to pursue Idea 1, as we wanted to force users to mark their interest or disinterest in the flow:
After settling on the general path we wanted to go down, we began to define the specific functionality that we were going to commit to building:
Add a new feature to the Buildout Marketing product for Brokers to be informed of interested Buyers
Create a new product for Buyers to browse listings and mark their interest
This would show them if there are potential buyers interested in their listing. They would then be able to pay for access to those contact details
Target Persona: Broker
Create an entirely separate domain and software experience for Buyers. They would be able to mark their interest in listings.
Target Persona: Buyer
After settling on the general path we wanted to go down, we began to define the specific functionality that we were going to commit to building:
GOAL 1
Listing Index
New Listing Creation
Existing Listings - Boost Modal
Boost Modal
Payment Modal
Confirmation Modal
Leads Page
GOAL 2
Login
Create Investment Criteria
Investment Criteria Index
New Matches Modal
Review matches
Mark interest
Confirmation modal
Empty State
In April 2023, we finally launched Buildout Connect and... crickets! Who knew it wouldn't be an instant hit? 😛 Turns out, creating a new product for unfamiliar user types was a bit of a rollercoaster. So, we spent the next few weeks diving into data and chatting with users to figure out how to make it shine.
Brand awareness
Buyers were a new user to us and had never heard about Buildout before.
No communication
Buyers were a new user to us and had never heard about Buildout before.
Minimal inventory
Buyers were a new user to us and had never heard about Buildout before.
Business limitations
Buyers were a new user to us and had never heard about Buildout before.
It was clear that changes to the product needed to be made, so we set out to iterate on the first version as fast as possible.
With this version, we tried to create solutions to each of our key findings. We concentrated on adding additional functionality within the structure, rather than experimenting with the structure itself.
Weekly active users
Weekly active users
After making these changes and continuing to test, it became clear that there was a core structural element that was not working for this experience. This lead us to...
Initially, buyers specified their interests, and we matched them. But for Iteration C, we reversed it: buyers saw all properties and then filtered for matches.
You may recognize this layout as the Map Search sketch from earlier :)
Upon first load, users would see the full amount of listings we had
Buyers now saw the immediate impact of changing their filters
Users knew immediately how to interact with the software
With iteration C, we had much higher user adoption and engagement with the product. We talked to users again and validated that this version of the experience felt the best and that everything from this point was just about building new features into it, rather than having to re-tool the foundational structure.
Weekly unique visitors
Weekly active users
Average user session
3-month user retention rate
Bringing a new product to market is much different than a standard feature release. It is a large endeavor that requires persistence, constant iteration, and slowly narrowing in on what is working with the product. But as long as you're talking to users, there is a light at the end of the tunnel!
One of the major lenses that shaped this project was the initial business constraint of "we can't have a listing site." Once it became clear that our workaround to this was hampering our adoption, we had to be more creative in our approach.
If there are familiar patterns that people use, they often provide a major benefit from an ease-of-use and onboarding standpoint. Weigh the cost of losing that against any potential gain from a different UI approach.