Building Dotmap: shipping features nobody asked for
How a side project grew from "map with dots" to a full professional discovery platform.
When I started Dotmap, the idea was simple: put developers on a map. Find talent near you. That's it.
Since then, I've shipped OAuth login, portfolio pages, multi-vertical support, SEO landing pages, and a sitemap architecture that would make enterprise developers nervous. Nobody asked for any of this. I built it anyway.
Here's everything that's in there now.
The big pivot: from developers to professionals
The original name was "Dotmap for Developers." But limiting the platform to developers felt arbitrary. Designers need local networks too. So do photographers, videographers, and other creative professionals.
So I renamed "Developer" to "Professional" across the entire codebase. Every route, every component, every database reference.
The rebranding came with a visual refresh: a mint green color scheme that feels more professional than the original bright blue.\

Multi-vertical architecture
This was the hard part.
Instead of one big pool of professionals, Dotmap now supports multiple verticals. Tech. Creative. And more to come. Each vertical has:
- Its own icon and color scheme
- Filtered SEO pages (
/professionals/tech/netherlands/amsterdam) - Separate skill categories
- Independent professional counts
The tricky bit: professionals can belong to multiple verticals. A developer who does UI design fits both Tech and Creative. The data model had to support this without duplicating profiles.
SEO pages that actually rank
I built an entire SEO landing page system. Not because I love SEO, but because organic traffic is the only sustainable growth channel for a bootstrapped project.
The system generates pages for:
| Type | Example URL |
|---|---|
| Countries | /professionals/in/netherlands |
| Cities | /professionals/in/netherlands/amsterdam |
| Skills | /professionals/skills/laravel |
| Skill + Country | /professionals/skills/laravel/netherlands |
| Skill + City | /professionals/skills/laravel/netherlands/amsterdam |
| Verticals | /professionals/tech |
Each page shows relevant professionals, a map, and proper meta tags. The sitemap splits into seven separate XML files for better Google crawl efficiency.
Total indexable URLs: potentially 20,000+. All generated dynamically from actual data.

Beta access codes
Dotmap is currently invite-only. Not because I want to be exclusive, but because I want early users who actually care.
The system is simple:
- Generate codes in the admin panel
- Share codes with potential users
- Codes can have usage limits and expiration dates
- Track which code each user signed up with
When someone tries to register without a code, they see a waitlist form instead. This gives me control over growth while collecting interested leads.
Social login
Nobody wants to create another password. So I added OAuth for Google, GitHub, and Microsoft.
The basic implementation with Laravel Socialite is straightforward, but the edge cases aren't:
- What if someone signs up with email, then tries to link Google later?
- What if the OAuth session expires mid-flow?
- What if they have multiple Google accounts?
Each edge case became a bug report, then a fix, then a release note.

Portfolio and work experience
A map pin isn't enough to evaluate a professional. You need to see their work.
Every professional can now add:
Portfolio items:
- Title, description, URL
- Tags and skills used
- Featured image
- Published/draft status
Work experience:
- Company, role, dates
- Description
- Current job indicator
These show on profile pages and contribute to search relevance. A Laravel developer with actual Laravel projects ranks higher than one who just listed the skill.

Custom skills and proficiency
The original skill system was a fixed list. If your skill wasn't in the database, too bad.
Now users can add custom skills. The system tries to match them to existing categories (add "Vue.js" and it auto-categorizes under Frontend). If no match exists, it stays uncategorized until I review it.
Each skill also has a proficiency level: Beginner, Intermediate, Advanced, Expert. This affects how skills display and how search weights results.

Profile analytics
Professionals want to know: is anyone looking at my profile?
The analytics dashboard shows:
- Profile views over time
- Where visitors come from
- Which skills attract the most attention
It's basic, but it answers the core question: is this platform worth my time?
Location data model
The original system stored locations as text strings. "Amsterdam" and "amsterdam" were different places. "Amsterdam, Netherlands" was a third.
I rebuilt the entire location system:
- Countries table with ISO codes and flags
- Cities table with lat/lng coordinates
- Photon geocoding for address lookups
- Automatic user-to-city linking based on coordinates
Now when someone enters "Amsterdam," they're linked to the canonical Amsterdam city record. SEO pages aggregate correctly. The map clusters properly.
The small stuff that adds up
Some features sound trivial but make a real difference:
- Cookie consent banner (GDPR compliance)
- Breadcrumbs on every page
- Release notes page ("What's new")
- Bookmarking other professionals
- Country flags in location displays
- Bounds-based map loading (only fetch visible area)
None of these are exciting. All of them make the product feel complete.
What I learned
Ship vertically, not horizontally. I could have built ten features at 80%. Instead I built three features at 100%. Users notice the difference.
SEO is infrastructure. The sitemap refactor wasn't glamorous, but it's the foundation for every future page. Build it right once.
Rename things early. The developer-to-professional rename touched 200+ files. Doing it later would have been worse.
Nobody cares about your stack. Users don't care that I'm using Laravel 12, React 19, and Inertia. They care that the map loads fast and their profile looks good.
What's next
The foundation is solid. Now I need users.
Current focus:
- Outreach to local tech communities
- Content marketing (you're reading it)
- Partnerships with meetup organizers
The product is ready-ish. The distribution is the hard part.
Dotmap is a professional discovery platform. Find talent near you at dotmap.app.

Ready to claim your spot? We're opening up to a small group of professionals. Be one of the first in your city.
Series
I created a series of blogposts about this app. You can read them here:

I offer hands-on consulting to help you resolve technical challenges and improve your CMS implementations.
Get in touch if you'd like support diagnosing or upgrading your setup with confidence.


