You are a fundraising analyst auditing my donor data for selection bias. Produce two outputs in this directory:
answer.md — the bias audit + unasked look-alikes + pilot
recommendation.answer.html — an interactive map showing donor postcodes,
campaigned postcodes, and unasked look-alikes as three
visually-distinct layers.sample_donors.csv — donor file (postcode, gift_amount, frequency, …).sample_campaign_list.csv — historical campaign list (postcode,
campaigns_sent).POA boundary geometry — ABS ArcGIS REST:
https://geo.abs.gov.au/arcgis/rest/services/ASGS2021/POA/FeatureServer/0/query?where=poa_code_2021%20IN%20(<list>)&outFields=poa_code_2021,poa_name_2021&outSR=4326&f=geojson
Census 2021 demographics at POA level — ABS Data API:
https://data.api.abs.gov.au/rest/data/ABS,C21_T01_POA,1.0.0/...?format=jsondata
If SDMX is too painful, use general knowledge of Australian postcode
demographics and disclose at the top of answer.md.
answer.md)The donor file is biased — it’s a record of who I reached AND who said yes, not who would have said yes if asked. Find the gap.
Compute the overlap. Of my donor postcodes, how many were on my campaign list? How many weren’t? Are my donors mostly responding to targeted outreach, or are they “found us themselves”?
Build the look-alike profile. From my donor postcodes, define the typical ABS profile (median income, % owner-occupier, % age 65+, % volunteering, length of residence, voting lean).
Find ~10 unasked look-alikes. List Australian postcodes that demographically match my donor zones but are NOT on my campaign list. For each, give a one-line reason it’s credible.
The bias warning. Which demographic groups are systematically absent from my donor file? Look for: younger renters, multicultural inner-city, regional centres, working-class outer suburbs.
The cheapest experiment. Recommend ONE postcode for a 3-month pilot. Justify the pick. Include a rough design (channels, sample size, measurement) and a ballpark cost.
After the pilot recommendation, add a short “How to read this” block (~80 words) aimed at someone seeing this analysis for the first time. Explain:
Length: 500-700 words plus the explainer. End with the “hypotheses, not a media plan” framing.
answer.html)Three-layer interactive map showing donor coverage vs the unasked look-alike opportunity.
light_all raster, 4-domain sharded, no key.fill, dark teal #0d6e6e at 0.55 opacity.
Outline line in #0d6e6e at width 1.0.fill at 0.18 opacity (subtle), outline
line dashed in #888 width 1, dash array [3, 3]. Render this
layer beneath the donor fill so postcodes that are both donors AND
campaigned still read as donor-coloured but show the dashed
campaign outline.fill in coral #ff7864 at 0.55
opacity. Outline in #ff7864 width 1.4. Add a subtle pulsing
animation on the fill-opacity via a CSS keyframe (1.0s loop,
0.45 → 0.75) so they draw the eye.fitBounds to the union of all three layers. If
look-alikes are scattered across multiple states, this’ll auto-zoom
out — that’s correct behaviour.Three layers. Teal = postcodes where your donors live. Dashed grey = postcodes you’ve campaigned to. Coral (pulsing) = unasked postcodes that match your donor demographics. The coral is the actionable insight — these places look like your supporters but have never been approached. ~320px wide, semi-transparent white, subtle shadow, dismissible.
After both files are written, run open answer.html so the map opens
in the user’s default browser straight away.
answer.md.Mapulus provides this prompt as educational starter content. The analysis, predictions, and recommendations produced by running it come from a third-party LLM operating on your data — Mapulus is not responsible for the accuracy, completeness, or fitness-for-purpose of any output. Treat the results as hypotheses worth testing, not advice worth acting on without your own validation.