{
  "schema_version": "1.0.0",
  "created_at": "2026-06-24T00:00:00-05:00",
  "map_fingerprint": {
    "hash": "a5fd0f3601b2b2c1515167f15024274e665b6875ac35a8036ebe0b1a1b0c5277",
    "algorithm": "sha256"
  },
  "model": {
    "human_user_name": "Not provided",
    "llm_name": "GPT-5.5 Thinking"
  },
  "agent": {
    "name": "Web Mapper",
    "url": "https://webmapgpt.com",
    "version": "2026-06-24"
  },
  "map": {
    "title": "Malawi Independence Day: Patriots & Nation Builders",
    "description": "Mobile-first commemorative web map of Malawian historical figures, using role-colored points, selectable hometown/birthplace modes, clearly marked cautious birthplace estimates, a Not on map biography modal for unplotted figures, filters, source-linked popups, and a muted topographic basemap.",
    "stack": [
      {
        "name": "Leaflet",
        "version": "1.9.4"
      },
      {
        "name": "HTML",
        "version": "Living Standard"
      },
      {
        "name": "CSS",
        "version": "CSS3"
      },
      {
        "name": "JavaScript",
        "version": "ES2022"
      },
      {
        "name": "GeoJSON",
        "version": "RFC 7946"
      },
      {
        "name": "CSV",
        "version": "RFC 4180-style"
      }
    ]
  },
  "datasets": [
    {
      "name": "Malawi historical figures dataset",
      "type": "CSV-derived GeoJSON point layer with selectable hometown and birthplace coordinate modes, plus documented cautious birthplace estimates",
      "fields": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "birth_year",
          "type": "string"
        },
        {
          "name": "death_year",
          "type": "string"
        },
        {
          "name": "place_of_birth",
          "type": "string"
        },
        {
          "name": "place_of_death",
          "type": "string"
        },
        {
          "name": "hometown",
          "type": "string"
        },
        {
          "name": "role",
          "type": "string"
        },
        {
          "name": "active_period",
          "type": "string"
        },
        {
          "name": "description",
          "type": "string"
        },
        {
          "name": "image_url",
          "type": "string"
        },
        {
          "name": "hometown_lat",
          "type": "number"
        },
        {
          "name": "hometown_lon",
          "type": "number"
        },
        {
          "name": "birth_lat",
          "type": "number"
        },
        {
          "name": "birth_lon",
          "type": "number"
        },
        {
          "name": "birth_est_lat",
          "type": "number"
        },
        {
          "name": "birth_est_lon",
          "type": "number"
        },
        {
          "name": "hometown_est_lat",
          "type": "number"
        },
        {
          "name": "hometown_est_lon",
          "type": "number"
        },
        {
          "name": "birth_coordinate_quality",
          "type": "string"
        },
        {
          "name": "birth_coordinate_note",
          "type": "string"
        },
        {
          "name": "birth_coordinate_source_url",
          "type": "string"
        },
        {
          "name": "hometown_coordinate_quality",
          "type": "string"
        }
      ]
    },
    {
      "name": "Esri World Topographic Map",
      "type": "Raster tile basemap",
      "source_url": "https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",
      "fields": [
        {
          "name": "tile_z",
          "type": "integer"
        },
        {
          "name": "tile_x",
          "type": "integer"
        },
        {
          "name": "tile_y",
          "type": "integer"
        }
      ]
    },
    {
      "name": "Location estimates",
      "type": "JSON source notes for cautious approximate coordinate additions",
      "source_url": "data/location_estimates.json",
      "fields": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "mode",
          "type": "string"
        },
        {
          "name": "place",
          "type": "string"
        },
        {
          "name": "lat",
          "type": "number"
        },
        {
          "name": "lon",
          "type": "number"
        },
        {
          "name": "precision",
          "type": "string"
        },
        {
          "name": "source_url",
          "type": "string"
        }
      ]
    }
  ],
  "prompts": [
    "I would like to make a tasteful and useful map to celebrate Malawi Independence Day on July 6. This map MUST be mobile first – as most people in Africa connect to the internet via cell phones, and I would like the target audience to be in the country of independence. \n\nPlease make sure you design the app to load on a portrait mobile device. The title, GUI, info windows, panels, etc., should all be designed to fit on the screen (scrolling should be used where necessary), be readable, and also to have interface design that makes it easy to interact with on a touch-based mobile device. \n\nSecondarily important here is desktop/PC mode. You can design this to be different, but first-things first: mobile mode. We can iterate if necessary to make it look better on desktop.\n\n---\n\nSymbology should use Malawi national colors from the flag and other official Malawi ornamentation. \n\nI want this map to be educational first. Authoritative appearing and serious. This map is meant to celebreate Malawi's independence from the British and to celebrate the people that helped make it happen, helped maintain this independence, and helped the people of Malawi – particularly regardless of tribal background. \n\nThe attached dataset highlights where people are from, were born, died, and what they did for the country. Please place them where they were active (their home towns). Color code the dots based on what their role was (a certain field in teh dataset, the name may be different). \n\nUse a publicly available and free tiled base map to provide some terrain and roads, etc., but mute these with transparency, as the goal of the map is to highlight and celebrate the individuals. \n\nDo not let people zoom or pan far outside of Malawi. If data exists outside of this space, that's okay. \n\nZoom in on Malawi as far as possible to show in in the obile view finder in its entirety when the map loads. \n\nCome up with a celebratory but official sounding title for the map. Again, mobile title design. Use a hamburger menu or bottom-up menu (as is popular on mobile these days) to allow users to filter people by birth year range, active years range, role in independence, or to search by place name or person name. Have a clear filter option as well. \n\nIn the info window pop-up, make sure to have the persons name as the header. Under this, the role or roles they played, birth year, birthplace, and underneath this the image thumbnail that fits inside the info window box. If there is no image URL, skip this completely. No header required either. Underneath the photo in very small print provide a source with an HTML link to the source page for the photo.\n\nUnderneath this show the description of the person followed by a list of Death Year (if any), Death Place (but only if there is one), Hometown, and sources. \n\nPlease ensure the tile dataset you use actually still exists. Thank you!",
    "Thank you. I forgot to mention, please add the option to the filter panel to change location to birth place or place of death. Also note how many people arent shown based on missing home town or birth place data, so people know it's not exhaustive. Thank you!",
    "Thanks. This is looking good. Now we iterate! :-)\n\nPlease remove place of death description about no coordinates, etc., and place of death filter completely. No worries. \n\nAlso, please rename the Legend to \"Important Roles\". \n\nI'm pasting in an image. The subtitle at the top takes up too much screen real-estate. Can you shorten it or make it appear as a dialog box if a person long-presses on the title, and have it easily dismissed by clicking anywhere outside of it? Thank you.\n\nNo need for a legend on mobile devices, as the legend is in the filter as well. Please remove on mobile. \n\nThe year sliders are amazing, but they are accidentally going the wrong way intuitively. The top one should fill from right-to-left, and the bottom one from left-to right. The dots should be on the same side. Both lines should be solid read at the beginning and the red should get shorter when clicked and dragged at the beginning. The two dots mustn't be allowed to overlap. When they are on the same year exactly, they should stop being moved. The user must readjust at least one bar in that case to move them again.\n\n---\n\nI cannot see the point symbols or the basemap tiles, because of this error. Please help me debug it. Then we should be good. Also, please add a link to the JSON provenance file, the CSV data file, and the name of the Cartographer: [Ian Muehlenhaus](https://www.muehlenhaus.com). Thanks! \n\nYou can cut back on all the details about fields, etc., in the sources modal, as it will be in the CSV if they want to download it. Thank you! Great work!",
    "This is stellar! One final ask: can you attempt to map some of these birth and home town places without coordinates based on rough estimates of location due to the place names themselves? If those are null, don't worry about it. But maybe we should include those missing people somewhere on the map, perhaps in a pop-up modal instead of the legend, so people can select them and read about them in info windows too? Please come up with a good solution and implement it. Thanks! Great work!"
  ]
}