Let’s talk

Visit Dundee

Dundee needed more than a tourism website.

So we built a destination platform: editorial, a business directory, live events, real bus timetables and an AI concierge called DeeDee, all in one Laravel codebase, on our own servers, in three months.

Client
Visit Dundee
When
2026
What we did
Strategy · UX · Development · AI · Search · Data
Status
Live & evolving

Let’s talk about yours Visit the site (opens in a new tab)

The Visit Dundee website

People. Places. Possibilities.

The short version.

  1. 01

    The problem

    The old site couldn’t show everything Dundee has to offer, or help a visitor actually plan a day.

  2. 02

    The idea

    Stop being somewhere you read about Dundee, and become something that helps you experience it.

  3. 03

    The result

    One platform with 280 articles, 240 live business listings, events from two feeds, two bus operators’ timetables and an AI concierge.

Where we started.

A good destination with a website that couldn’t keep up. Great content, but hard to navigate, hard to maintain, and no help to someone trying to work out what to do on a rainy Tuesday.

The problem behind the problem.

It wasn’t a website problem. Visitors need to know what’s on, what’s open, what’s nearby and how to get there, and that information lives in a dozen places: event listings, bus operators, hundreds of businesses and years of editorial.

Architecture first.

The first commit went in on 30 June 2026 and the platform’s first rule is “we will never sacrifice the architecture for a quick win”. Every part of it is built to the same written rules, 55 architecture and design documents of them, because a platform this size only stays fast to change if everyone builds it the same way.

Real data, not a brochure.

Bus times come from the operators’ own timetable feeds: Xplore Dundee and Stagecoach East Scotland, 61 routes and more than 150,000 timetabled stop times. Events arrive automatically from Data Thistle and Skiddle, and land as drafts until they’ve been checked. Businesses can claim their listing, improve it and subscribe through Stripe.

An AI that knows its place.

DeeDee is the platform’s concierge. It helps people decide what to do, build an itinerary and adapt a plan around the weather, their time and their budget. Its design rule is that it is not the source of truth: facts, opening hours and times come from the platform’s data, and DeeDee’s job is to turn them into useful guidance. That’s what stops it making things up.

The build.

  1. 01Discovery & visitor journeys
  2. 02Architecture & schema
  3. 03Editorial & directory engines
  4. 04Events & transit data feeds
  5. 05DeeDee, the AI concierge
  6. 06Business portal & subscriptions
  7. 07Technical SEO
  8. 08Ship, measure, improve

Under the bonnet

  • Laravel
  • PHP
  • MySQL
  • OpenAI
  • Stripe
  • GTFS timetable feeds
  • Data Thistle & Skiddle feeds
  • Bunny CDN
  • Our own servers

The receipts.

Real numbers. We counted.

  • 2,049commits since 30 June 2026
  • 280published articles
  • 240live business listings, from 2,034 businesses in the database
  • 102published events, 78 still to come
  • 1,080bus stops, 61 routes and 151,660 timetabled stop times
  • 161venues

The stuff that was hard

Two bus operators’ timetables in one place. De-duplicating the same business arriving from several sources. Events that change, move and cancel. And keeping all of it simple enough for a non-technical team to run day to day.

What we learned

Start with real visitor needs, not internal structures. Make every fact come from one place. Put AI where it genuinely helps and never let it be the source of truth. And write the architecture down, because the platform is only as fast to change as its rules are clear.

What’s next?

More of the city’s data, smarter personalisation, and more ways for Dundee businesses to turn visitors into customers.

Always another idea.

The people behind it.

  • Barrie Moran Founder / Chief Instigator
  • Ric Development
  • Cameron Design
  • Ailsa Marketing Manager
Meet the whole team

Got something like this in mind?

Good. We’re in.

Let’s talk about yours