Konsulentkortet
LiveDenmark

From an address to a visit list in 30 seconds

A jobcentre consultant sits with a citizen and has to answer one question: which employers near this person could actually take them. Konsulentkortet answers it while they are still in the room.

Open konsulentkortet.dkThe map for business consultants
01The address
02Reach and trade
15 min30 min45 min
CarBus and train

Trade: Warehousing and logistics

03Map and list
12′Warehouse · Hvidovre34 staff
18′Canteen kitchen · Ballerup21 staff
24′Depot · Greve12 staff
3 staffed workplaces · sorted by travel timeP-enheder

Illustration, not a screenshot. The controls are the product's; the results are made up.

Reach, not radius. Workplaces, not companies. Shown to a jobcentre. Stripped from a recruiter. Nothing leaves the municipality. One docker compose
Why he built it01

He is the user.

This is his own job. He is a business consultant at Falck, in the Danish employment system, and the work is finding employers who might take a specific person — someone without a car, or without a licence, or with an hour of energy a day.

Answering that took an hour of CVR lookups, Google Maps tabs, a spreadsheet and whatever the team happened to remember. He built the tool he needed, then found that everyone doing the job needs it.

Reach, not radius02

Nobody commutes in a circle.

A radius drawn around an address is a lie told by every map that draws one. It crosses water, motorways and the end of a bus route as if they were nothing. Konsulentkortet computes how far a person can actually travel in fifteen, thirty or forty-five minutes, by car or by bus and train, and shows the employers inside that shape. A municipal border does not appear anywhere in the calculation, because nobody has ever lived or commuted by one.

Inside the circle. Across the harbour.

RadiusA circle. Crosses water.
ReachThirty minutes by bus and train.
Drag

A diagram over a real map of Copenhagen. Both shapes are drawn, not computed here.

Workplaces, not companies03

The head office does not hire.

Denmark's company register answers with legal entities, so a search for employers returns holding companies and head offices: addresses where nobody works. What matters is the production unit, the P-enhed — the warehouse, the kitchen, the shop floor with staff on it. Konsulentkortet reads the register at that level and keeps only the units that actually have people. It is a one-word difference in a database query and it is the difference between a list you can drive to and a list you cannot.

Legal entitiesWhat the register answers with214in reach
UnitLevelStaff
Nordvest Logistik Holding ApSCVR0
Nordvest Logistik A/SCVR0
Nordvest Logistik — HvidovreP-ENHED34
Nordvest Logistik — GreveP-ENHED12
Byens Køkken ApSCVR0
Byens Køkken — BallerupP-ENHED21

Illustration. The two register levels are real and so are their names; the six units are not.

One flag, two treatments04

The same company, shown here and stripped there.

Some Danish companies carry an advertising-protection flag in the register. Section 19 of the CVR act restricts private use of a protected company's data for direct marketing, and allows its contact details to be passed on only if the recipient is told it is protected. Konsulentkortet goes further: a jobcentre consultant sees protected workplaces on the map, and a private recruiter's export leaves them out.

One rowNordvest Logistik — HvidovreAdvertising-protectedCVR-loven§ 19

Same row, same map. The organisation logged in decides which product rule applies.

Built to be allowed05

The hard part is not the map.

A tool that touches citizen data in a Danish municipality has to get past an IT department whose job is to say no. So the whole product is one docker compose on the municipality's own server: API, map, database and routing together. Travel times and address lookups are computed there and never leave. A citizen's address is held for the length of one query and never written down.

The citizen's addressOne query

Held for the length of the request, used to compute a travel shape, and never written down.

docker-compose.yml
docker compose up -d
apistarted
webstarted
postgisstarted
valhallastartedrouting, local
photonstartedaddresses, local
tilesstartedmap, local
6 services. Nothing outside the building.
Between organisationsRow-level security

Enforced in the database, not in the application.

Every imageSBOM + scan

Built, listed and scanned for known vulnerabilities before it ships.

In productionNo Node process

The web layer is static files behind a reverse proxy.

Where it runsTheir server

Routing, geocoding and tiles are all local. No third-party map key.

The six services are the product's own. The terminal is a drawing of them.

Where it sits06

Between the tools that stop early and the systems that start late.

Sales tools know the companies and nothing about a citizen's commute. Case-management systems know the citizen and nothing about which employers are within reach. The team's own history — who has been visited, who said not this year — lives on a whiteboard, in a colleague's memory, or nowhere. Konsulentkortet puts that history on top of open data, in the gap the other two leave.

Sales toolsKnow every company. Know nothing about a citizen's commute.
KonsulentkortetTravel time, staffed workplaces, and the team's own history on top.
Case systemsKnow the citizen. Know nothing about which employers are in reach.
Sales tools: 32 per cent. Konsulentkortet: 24 per cent. Case systems: 44 per cent.
Built for07

One engine, two kinds of work.

Public

Jobcentres and municipalities

Find work placements near one citizen, and coordinate a team so the same employer is never approached twice.

  • Travel time by bus and train from the citizen's address
  • Shared history: have we been here before, at a glance
  • A printable visit list for the drive
Private

Recruiters and temp agencies

Outreach with travel time attached, and follow-up that does not need a CRM behind it.

  • Every metal workshop within 25 minutes of a candidate
  • Status, notes and follow-up in the same place as the map
  • Exports with protected companies removed automatically
What it will not do08

It sends nothing.

Section 10 of the Danish marketing act requires prior consent before a trader sends direct marketing by email, automated call or fax, so the product finds employers and the consultant makes contact through their own channels. It is a map and a memory, not an outbound machine.

Markedsføringsloven§ 10
Where the data comes from09

Open registers, cited.

Everything the product knows about a company comes from a public register, and everything it knows about a road comes from a map anyone can download. All three are named here for the same reason the product names them on its own pages: on a data product the sources are part of the argument.

  • CVR · Danish company registerCC BY 4.0
  • DAR · Danish address registerCC BY 4.0
  • OSM · Map, buildings and routingODbL

It is live, and it is in Danish.

The product speaks to the people who use it, which means every word of it is Danish. This page is the argument in English.