You are a fundraising analyst. Before I commit budget on a list of target postcodes, score each one against my existing donor profile. Produce two outputs in this directory:
answer.md — ranked target list, cut-line recommendation,
channel suggestions per top-10.answer.html — an interactive map of the target postcodes only,
coloured by similarity score 0-100, with the recommended cut-line
reflected in the legend.sample_donors.csv — current donor file.sample_campaign_targets.csv — postcodes I’m considering for the
next push (column: postcode).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
Pull both the donor postcodes AND the target postcodes (some may be on both lists — that’s expected).
Census 2021 demographics — ABS Data API or general knowledge of
Australian postcode profiles, disclosed at the top of answer.md.
answer.md)Build the reference fingerprint from my donor postcodes: typical ABS profile (age mix, income, owner-occupier %, volunteering, length of residence, voting lean).
Score each target — give a 0-100 similarity score using distance across the fingerprint features. Be explicit about the method (population-weighted, z-score distance, etc.) at the top of the answer.
Rank the target list. Show the top 10 and bottom 5 with each postcode’s most distinctive feature (e.g. “2030 — close on owner-occupier and age, distant on rental %”).
The cut-line. Recommend a score above which I should mail and below which I should drop. Justify with the deck’s Lorenz-curve logic — 28% of postcodes produce 80% of dollars; don’t dilute the campaign.
Channel suggestion per top-10. Direct response (mail / paid social) vs community-led (ambassador / event / referral), based on the postcode’s demographic profile.
What I’m missing. Up to 5 postcodes NOT on the target list that look very similar to my donor base.
After the “What I’m missing” section, 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 correlational caveat.
answer.html)Choropleth of the target postcodes only, coloured by similarity score, with the cut-line baked into the legend so the audience can see which targets fall above and below.
light_all raster, no key.fill — colour each target by similarity score using a diverging
ramp:
#f6b651 (gold, full)#fbcf80 (gold, faded)#c8c8c8 (grey)#7ba6e8 (light blue)#3a5b8c (dark blue)line — outline weight 1.0 in #1a1a1a at 0.4 opacity.line layer at
width 2.5 in solid gold #f6b651 so the in-vs-out boundary is
visually obvious.Postcode <NNNN> · <suburb name>
Similarity score: <NN>/100 → <ABOVE/BELOW> the cut-line
Top match feature: <feature> (<value> vs donor avg <value>)
Top mismatch feature: <feature> (<value> vs donor avg <value>)
Channel suggestion: <direct response | community-led>
Each target postcode is scored 0-100 for demographic similarity to your existing donors. Gold-bordered postcodes are above the cut-line — mail these. Blue postcodes are below — drop or rework. The score is similarity, not predicted giving. ~300px 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.