Data

Data Tab

The Data tab is your data entry point. This is where you drop a pin by clicking the map, paste location lists, import CSV files, geocode everything, and manage your map's content in one table. Every location marker on your map originates from controls in this tab. The Data tab is the same width as every other tab; the paste, import, and manage windows open at a fixed size and never resize as your data changes.

pitchmappr uses a dataset-based organization model. Each dataset is an independent group of locations that share the same marker color, shape, and visibility settings. You can have multiple datasets in a single project (e.g. "Current Offices" in blue circles and "Target Acquisitions" in orange diamonds), and each dataset can be shown or hidden independently.

HQ is a dataset. Name a dataset HQ, Headquarters, Head Office, or Head Quarters (case doesn't matter) and every location in it is drawn as a headquarters marker — the distinct HQ color, and a star shape when "HQ as star" is on in the Marks tab. There's no separate HQ checkbox: move a location into the HQ dataset to make it a headquarters, move it out to change it back. Older projects that used the previous HQ flag are converted automatically the first time they're opened.

Place a pin

Drop a single exact spot by clicking the map — the quickest way to add one location when you don't have a list to paste or a file to import. Pick a dataset, click where you want the pin, nudge it if needed, then add it. Works on the Regular and Focus maps, not the Focus+ projection view.

FeatureControlDescription
Dataset chipsChip row + NewChooses which dataset the pin joins. Default is pre-selected; + New creates a dataset inline (with a Cancel to back out). To drop a headquarters marker, pick or create a dataset named HQ — there's no separate HQ switch, an HQ pin is just a pin in the HQ dataset.
Place a pinButtonArms placement, then click the map where you want the pin. A draggable preview pin drops and its coordinates read out as Point set: … — drag the pin to nudge it onto the exact spot.
NameText inputOptional label for the pin, on the same row as Add pin. Leave it blank and the coordinates become the label. Pressing Enter adds the pin too.
Add pinButtonAdds the preview pin to the chosen dataset as a marker and clears the field, ready for the next one.
Cancel / EscButton / keyDiscards a preview pin you haven't added yet. Leaving the Data tab does the same.

Add locations

Pasting and CSV import share one panel section. Everything starts with Paste a list… — one location per line, whether that's a single address or two hundred of them.

FeatureControlDescription
Paste a list…Button → modalOpens the paste box. Type or paste one location per line: simple place names ("Tokyo"), city and country ("Munich, Germany"), full street addresses ("123 Main St, New York, NY"), or landmarks ("Eiffel Tower"). Up to 200 lines per paste. Each line can carry optional tags in any order — see the format legend below the box.
Default datasetDropdown + NewChooses the dataset for lines that don't carry their own {Dataset} tag. + New creates a dataset inline without leaving the modal.
Per-line tagsLine format"Name", 'Name', or (Name) at the start of a line sets that marker's label (e.g. "HQ" 1 Bryant Park, New York shows the marker labeled "HQ"). {Dataset} routes the line into a dataset by name, creating it if needed (e.g. {Stores} 123 Main St, Dallas). {HQ} routes the line into the HQ dataset so it renders as a headquarters marker. Tags combine in any order: {Stores} "Closed" 123 Main St, Dallas, TX.
Add to listButtonAdds the lines as pending rows — nothing is geocoded yet. Use this when you're stacking several sources (more pastes, CSV files) to geocode together in one go. Pending rows show in the summary strip and in Manage locations.
Add & geocodeButtonAdds the lines and geocodes them immediately — the one-step path when this paste is all you're adding.

Import CSV files

Import as many CSV files as you need — each file keeps its own column mapping and dataset rule, and importing never replaces what's already on the map. Files appear as cards you can manage individually.

⚠️

Import never puts anything on the map. Importing a file registers its rows as pending — even rows that already contain latitude and longitude. Nothing is drawn until you press Geocode locations, which places coordinate-bearing rows instantly (no geocoding is performed on them) and geocodes the rest.

FeatureControlDescription
+ Add a CSVButton → file browserOpens your computer's file browser straight away. Pick a CSV, TSV, or TXT file and the Import CSV dialog opens at the column mapping: Address (required unless you map both Latitude and Longitude), Label, Latitude / Longitude (rows with coordinates skip geocoding — they're placed as-is when you press Geocode locations), and an optional Size value (a number column — e.g. revenue or headcount — used to size markers by value; see Size markers by value). Column roles are auto-detected from your headers — adjust the dropdowns if the guess is wrong.
Dataset ruleRadio group (in the dialog)Decides where the file's rows go: From a column creates a dataset for each distinct value in that column (a "region" column with East/West/HQ values becomes three datasets — and rows with the value HQ become headquarters markers); New dataset puts the whole file into one new dataset; Add to existing merges it into a dataset you already have; No dataset uses the current default.
ImportButtonRegisters the file and its rows as pending — nothing lands on the map, including rows that already have coordinates. Stack as many files (and pastes) as you like, then place them all with one Geocode locations. There is no per-file row limit; the project's 1,000-row total (on-map + waiting) is checked as you import, and you're told if rows don't fit.
Import & geocodeButtonRegisters the file and immediately runs Geocode locations — the one-step path.
File cardsCard per fileEach imported file shows its name, row count, dataset-rule chip, and a status pill: Pending (nothing geocoded yet), Partial (some rows on the map), ✓ Geocoded (all rows on the map), or Empty (no rows are tied to the file any more — you deleted them from Manage locations rather than removing the file).
Per-file ⋮ menuMenu per cardEdit locations… opens Manage locations filtered to just that file's rows. Re-geocode file re-runs geocoding for all of that file's rows (useful after fixing addresses). Remove file deletes that file's rows and card — other files and pasted rows are untouched. Remove asks you to click twice to confirm.

Geocode & Manage

One button geocodes everything that's waiting, from every source at once. The summary strip tells you how it went, and Manage locations is where you review and fix.

FeatureControlDescription
Geocode locationsButtonPlaces every waiting row — pasted lists and imported files together. Rows that already carry coordinates are placed instantly, with no geocoding call; the rest are geocoded in batches. Rows that resolve land on the map; rows that fail stay pending and are marked failed so you can fix their addresses in Manage locations. Disabled when nothing is waiting.
Summary stripStatus lineLive counts of your data's health: ✓ ok (on the map), ⚠ to check (on the map, but the geocoder wasn't confident about the match — worth a look), ✗ failed (couldn't be resolved), ● to place (already has coordinates, waiting), ● to geocode (needs an address lookup).
Manage locations…Button → tableOpens the full data table — see the next section.
View allButtonAdjusts the map viewport to fit all marker locations into the visible area with appropriate padding, so you can see the full geographic spread of your data at a glance.
ClearButton → confirmation modalOpens a confirmation dialog before permanently deleting ALL locations, pending rows, and imported-file cards. The datasets themselves (their names, colors, shapes) are preserved. Use this to start over with the same project settings but fresh data.

Manage locations (the data table)

Every location from every source in one wide, sortable table — built for working with hundreds of rows. This is where you view, sort, edit, fix, and re-geocode your data.

FeatureControlDescription
SearchText inputFilters rows by any column — address, label, dataset, source, coordinates, or status.
FiltersDropdowns + status controlNarrow the table by dataset, by source (which file or paste a row came from), or by status using the segmented control (All / ok / fix / failed / new). A line above the table reads "Showing 1 of 1,000 rows · filtered by … · clear", so a short filtered list always accounts for itself.
SortColumn headersClick any column header to sort; click again to reverse.
Edit in placeTable cellsAddress and label edit directly in the row. Editing an address clears its coordinates and marks the row "new" — so the next geocode run picks up exactly the rows you changed, and nothing else. The dataset dropdown moves a row between datasets, including into or out of HQ.
Status columnColored wordok — on the map. fix — on the map, but the geocoder matched with low confidence; the line under the row shows exactly what it matched and the score, so you can judge whether to keep it or refine the address. failed — not resolved; the line under the row shows why. new — not yet geocoded.
Row checkboxesBulk selectionSelect rows (or a whole page) for bulk actions: Delete selected removes them; Re-geocode selected clears their coordinates and re-runs them — including rows that already resolved.
+ Add rowButtonAppends an empty row for a quick manual addition — type the address, then geocode.
Geocode N changedButtonGeocodes only rows that need it (new + failed). Never re-geocodes rows that already resolved.
PaginationControls50, 100, or 250 rows per page keeps large datasets fast to work with.
Save changes / CancelButtonsNothing touches the map until Save changes. Rows still waiting to be placed stay waiting even after you save — only Geocode locations puts them on the map. Cancel discards your edits (it asks before discarding unsaved work, and Save asks again if the save would remove every location).

Dataset Settings

Datasets let you organize locations into groups that can be styled and toggled independently. Each dataset has its own marker color, shape, visibility toggle, and optional size override. Common uses include separating "Current Offices" from "Planned Offices", distinguishing "Buy-side" from "Sell-side" locations, or grouping locations by region or business unit.

FeatureControlDescription
New dataset nameText input + buttonCreates a new dataset with the name you enter. Max 60 characters. Each new dataset starts empty and becomes available wherever datasets are chosen (the paste modal, the CSV dialog, the Manage locations table). New datasets start from circle shape, the next available colour from the active colour scheme, and the Default dataset's current Size & Halo — except a dataset named HQ, Headquarters, Head Office, or Head Quarters, which starts as a red star and renders its locations as headquarters markers. You can create as many datasets as needed for your project.
Rename datasetText input per datasetEvery dataset's name is editable in place. The first dataset (named Default on a new map) is where unassigned rows land — renaming it doesn't change that role. Renaming a dataset to or from an HQ name changes whether its locations count as headquarters.
Remove datasetButton per datasetAsks what should happen to the dataset's locations before anything is removed: Delete them (permanently removed from the map) or Move them to another dataset — you choose which one, or create a new one inline. The dialog states the exact outcome ("42 locations move to Target Sites. Nothing is deleted.") before you confirm. At least one dataset must always exist, so removal is refused when only one remains.

Looking for visibility or styling? Per-dataset marker/label toggles, shape, colour, size, and halo all live in one place now — the Markers tab's Datasets roster. This section only creates, renames, and removes datasets.