Building Dotmap: shipping features nobody asked for

How a side project grew from "map with dots" to a full professional discovery platform.

Building Dotmap: shipping features nobody asked for

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.

SEO page with Verticals selection

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:

  1. Countries table with ISO codes and flags
  2. Cities table with lat/lng coordinates
  3. Photon geocoding for address lookups
  4. 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.

JOIN DOTMAP
CTA Image

Ready to claim your spot? We're opening up to a small group of professionals. Be one of the first in your city.

Learn more

Series

I created a series of blogposts about this app. You can read them here:

Building dotmap
A series on visibility, discovery and tech professionals