Experiences
What the page may do, and when
Everything visitors can see is written and approved by your team. The rules below decide which approved experience appears, and they are ordinary code you can read, test and change.
Campaigns
Which experiences each campaign allows
A campaign lists the experiences the system may infer from behavior. A visitor who says what they want in their own words can reach any enabled experience, and help is always available.
Giving Tuesday 2026 Active on the site
- Window
- Nov 1 – Dec 1, 2026
- Priority
- donations
- Default gift
- $50 one-time
Donation-first. Volunteer and help paths still work when a visitor asks for them directly.
Year-round support
- Window
- Always on
- Priority
- engagement
- Default gift
- $50 monthly
Engagement-first. Monthly giving is the default frequency and volunteering is promoted.
| Experience | Giving Tuesday 2026 | Year-round support |
|---|---|---|
| Learn | Inferred or requested | Inferred or requested |
| Take Action | Inferred or requested | Inferred or requested |
| Subscribe | Inferred or requested | Inferred or requested |
| Volunteer | On request only | Inferred or requested |
| Donate | Inferred or requested | Inferred or requested |
| Events | On request only | On request only |
| Receive Help | Always on | Always on |
Thresholds
Confidence bands and the policy tester
Model confidence and donation readiness are separate. A visitor can look ready to give and the model can still be unsure it can tell. That combination changes nothing. The tester below runs the real policy function, so what you see is what the site would do.
Readiness .91 at confidence .95 clears the gate: the full donation experience opens.
Confidence 0.90: strong. Donation adds its own gate on top (readiness ≥ 0.60 at confidence ≥ 0.60), and learn never goes past subtle when inferred.
Outcome · Giving Tuesday 2026
Donate · strong
Approved variant shown
Protect Red Wolves This Giving Tuesday
gt26.donate.strong.v1 · opens donation
Why
- Campaign "Giving Tuesday 2026" allows: learn, action, donate, subscribe
- donate 0.90 → ≥ 0.7, strong
- Readiness 0.91 at confidence 0.95 clears the expanded-donation gate
Current values
| Rule | Value | What it does |
|---|---|---|
| Adapt floor | 0.45 | Below this model confidence the page is left alone. |
| Strong at | 0.70 | At or above this the fundraising slot adapts strongly. Between the floor and this it stays subtle. |
| Help override | 0.40 | A help signal at or above this removes every ask. Deliberately lower than any fundraising bar. |
| Donation readiness | 0.60 | Expanded donation UI needs readiness at least this high… |
| Readiness confidence | 0.60 | …and confidence in that readiness at least this high. |
| Choose floor | 0.28 | Two intents both above this, and close together, offer both next steps. |
| Choose gap | 0.14 | How close counts as “too close to call”. |
| Researching cap | 0.70 | A visitor who is mostly researching doesn't get a hard ask. |
| Can't give | 0.60 | At or above this, no gift asks. Action falls back to the free variant. |
| Asks for | 0.60 | A typed request that asks for two paths at or above this gets both offered. Never applied to inferred behavior. |
| Challenger wins | 2 | Consecutive wins needed before the page switches (3 to retreat to the normal page, or confidence ≥ 0.85 to switch at once). Prevents flicker. |
Approved copy
Variant library
Jev picks a key. The site renders the approved variant behind it, filling in only a topic name from a fixed list. Nothing here is written by a model. Variants marked Draft are proposals: they are stored, but the site never renders them until someone approves them.
Control (static CTA)
| Status | Copy | Where | Approval |
|---|---|---|---|
| Approved | Give this Giving TuesdayYour gift supports recovery, habitat and community partnerships for {topic}.Donate now | gt26.control.v1Giving Tuesday 2026 · strong | Digital Director2026-09-12 |
| Approved | Help {topic} thriveYour gift supports recovery, habitat and community partnerships.Donate now | yr.control.v1Year-round support · strong | Digital Director2026-09-12 |
Learn
| Status | Copy | Where | Approval |
|---|---|---|---|
| Approved | Learn how we're helping {topic}Field teams, landowners and volunteers work together year-round. See what that looks like.See our impactWays to help | gt26.learn.subtle.v1Giving Tuesday 2026 · subtle | Digital Director2026-09-12 |
| Approved | Learn how we're helping {topic}Field teams, landowners and volunteers work together year-round. See what that looks like.See our impactWays to help | yr.learn.subtle.v1Year-round support · subtle | Digital Director2026-09-12 |
| Approved | Learn about {topic}Pick a place to begin. Each one is a short read.Opens: reading-paths | *.learn.strong.v1All campaigns · strong | Digital Director2026-09-12 |
Take Action
| Status | Copy | Where | Approval |
|---|---|---|---|
| Approved | Add your voice for {topic}Not every way to help involves a gift. Sign the letter, share the story, or join a field day.See ways to help | *.action.subtle.v1All campaigns · subtle | Digital Director2026-09-12 |
| Approved | Help Protect {Topic}Add your name to the public-comment letter urging continued recovery funding. It takes under a minute.Take actionSupport this work | *.action.strong.v1All campaigns · strong | Digital Director2026-09-12 |
| Approved | Ways to help that don't cost a thingYour voice and your time matter just as much. Pick what fits your week.Opens: free-ways | *.action.strong.no-cost.v1All campaigns · strong · no-cost | Digital Director2026-09-12 |
Donate
| Status | Copy | Where | Approval |
|---|---|---|---|
| Approved | Support this workGiving Tuesday gifts fund monitoring, habitat and community partnerships for {topic}.Give this Giving TuesdaySee how gifts are used | gt26.donate.subtle.v1Giving Tuesday 2026 · subtle | Digital Director2026-09-12 |
| Approved | Support this workMonthly gifts give field teams steady support for {topic}.Become a monthly donorSee how gifts are used | yr.donate.subtle.v1Year-round support · subtle | Digital Director2026-09-12 |
| Approved | Protect {Topic} This Giving TuesdayChoose a gift and we'll put it straight to work.Opens: donation | gt26.donate.strong.v1Giving Tuesday 2026 · strong | Digital Director2026-09-12 |
| Draft · never shown | Double your impact todayChoose a gift and we'll put it straight to work.Opens: donation | gt26.donate.strong.v2-draftGiving Tuesday 2026 · strong | Pending: Development Director |
| Approved | Protect {Topic}, all yearChoose a gift and we'll put it straight to work.Opens: donation | yr.donate.strong.v1Year-round support · strong | Digital Director2026-09-12 |
Events
| Status | Copy | Where | Approval |
|---|---|---|---|
| Approved | Join us in personDinners, paddles, field days and open evenings. Pick one and save your spot. | *.events.strong.v1All campaigns · strong | Digital Director2026-09-12 |
| Approved | Coming upHere's what's on the calendar. | *.events.subtle.v1All campaigns · subtle | Digital Director2026-09-12 |
| Approved | Ways to join us that don't cost a thingField days, howl night and livestreams are free. Pick one and save your spot. | *.events.strong.free.v1All campaigns · strong · free | Digital Director2026-09-12 |
Subscribe
| Status | Copy | Where | Approval |
|---|---|---|---|
| Approved | Field notes on {topic}One email a month: what our teams saw, what's working, how to help.Get field notes | *.subscribe.subtle.v1All campaigns · subtle | Digital Director2026-09-12 |
| Approved | Get field notes on {topic}One email a month: what our teams saw, what's working, how to help. Unsubscribe any time.Opens: subscribe-form | *.subscribe.strong.v1All campaigns · strong | Digital Director2026-09-12 |
Volunteer
| Status | Copy | Where | Approval |
|---|---|---|---|
| Approved | Give a weekend to {topic}Habitat restoration and citizen-science days across the coastal plain.See volunteer days | *.volunteer.subtle.v1All campaigns · subtle | Digital Director2026-09-12 |
| Approved | Join a volunteer field crewWeekend habitat restoration and citizen-science days for {topic}. No experience needed.Sign up to volunteerSee the calendarOpens: volunteer-form | *.volunteer.strong.v1All campaigns · strong | Digital Director2026-09-12 |
Receive Help
| Status | Copy | Where | Approval |
|---|---|---|---|
| Approved | Need help with wildlife?If you've found an injured animal, call the care line first.Call (919) 555-0142Read what to do | *.help.subtle.v1All campaigns · subtle | Digital Director2026-09-12 |
| Approved | Need help with wildlife?Found an injured or orphaned animal, or having trouble with wildlife on your land? Here's what to do first.Call (919) 555-0142Read the step-by-step guide | *.help.strong.v1All campaigns · strong | Digital Director2026-09-12 |
Events
Approved events calendar
Jev picks an event by its id, or names a kind of event. Every date, price and total on the card comes from this list. An event markedDraft is never shown. Events are typed-request only: no campaign infers them from behavior.
| Event | When | Kind | Ticketing | Status |
|---|---|---|---|---|
| Pocosin Paddlepaddle | Sat, Oct 10, 20269:00 AM · Manns Harbor, NC | Fundraiser | 3 options, $45+ticket, sponsor | ApprovedEvents Manager |
| Pocosin restoration: ditch pluggingfield-pocosin | Sat, Oct 17, 20268:30 AM · Dare County, NC | Volunteer day | Free RSVP, 12 spots | ApprovedEvents Manager |
| Red Wolf Howl Nighthowl-night | Sat, Oct 24, 20266:30 PM · Manteo, NC | Community | Free RSVP, 40 spots | ApprovedEvents Manager |
| Camera-trap check and trail clearingfield-camera | Sat, Oct 31, 20269:00 AM · Creswell, NC | Volunteer day | Free RSVP, 8 spots | ApprovedEvents Manager |
| Longleaf pine plantingfield-pines | Sat, Nov 14, 20269:00 AM · Tyrrell County, NC | Volunteer day | Free RSVP, 20 spots | ApprovedEvents Manager |
| Giving Tuesday Wolf Cam Nightwolf-cam | Tue, Dec 1, 20267:00 PM · Online | Community | Free RSVP | ApprovedEvents Manager |
| Longleaf Winter Galagala | Sat, Dec 5, 20266:30 PM · Raleigh, NC | Fundraiser | 6 options, $75+ticket, table, sponsor | ApprovedEvents Manager |
Principles
Ten commitments and how each is enforced
A commitment only counts if something in the system holds it. Each one is paired with the mechanism and the place to read it.
We never claim to know an individual's search
Search Console is aggregate history for a page. It says nothing certain about the person in front of us.
How it’s enforced. Imported queries are averaged by landing page into a prior that is shrunk by click volume. No per-visitor query field exists anywhere in the visitor state.
lib/gsc/aggregate.ts · visitorStateSchema
No sensitive or protected attributes
Nothing infers or stores who someone is: health, faith, income, race, age, location or similar.
How it’s enforced. The model sees a closed, validated snapshot of session behavior. Every question asks what the visitor is trying to do right now, never what kind of person they are.
lib/domain/types.ts · lib/jev/questions.ts
Help outranks fundraising
Someone who might need help gets help, not an ask.
How it’s enforced. The help rule runs first and at a deliberately low bar (0.40). Service pages carry no asks in either experiment arm, whatever the model says.
lib/decision/policy.ts · lib/content/pages.ts
Consequential actions are deterministic
The model never touches money, forms or payment.
How it’s enforced. Amounts and frequency are parsed by code from what the visitor typed. Gifts, sign-ups and submissions run through ordinary components. Jev's answer keys are a closed set.
lib/donation/parse.ts · components/adaptive/modules.tsx
The nonprofit approves every word
The model chooses a key. It never writes copy.
How it’s enforced. Variants and calendar events are looked up from approved content. Anything with a draft status is skipped, and if no approved variant exists the page is left alone. A ticket price or a date can only come from the calendar.
lib/content/experiences.ts · findVariant()
Adaptive behavior can be switched off entirely
One control returns every visitor to the normal static page.
How it’s enforced. The kill switch on the overview, or ?adaptive=off. When off, no state is inferred and no decision is requested.
admin overview · DemoProvider
Confidence is never shown to visitors
A probability is a working signal for the team, not a label to put on a person.
How it’s enforced. Confidence appears only in the presenter panel and this admin view. Public components render approved copy and nothing else.
components/adaptive/* · PresenterPanel
A model answer is a signal, not a fact
When the model isn't sure, the page stays as it is.
How it’s enforced. Below 0.45 confidence nothing changes. Donation needs readiness and confidence in that readiness. A new experience must win repeatedly before the page changes, to avoid flicker.
lib/decision/policy.ts · lib/decision/stabilize.ts
Only what's needed, nothing identifying
No names, emails, device fingerprints or cross-site tracking feed a decision.
How it’s enforced. The request is validated against a strict schema on the server. The visitor id is a random on-device value used only to assign an experiment arm.
app/api/decide/route.ts · visitorStateSchema
The visitor's word beats our inference
If someone tells us what they want, or dismisses a prompt, we listen.
How it’s enforced. A stated request skips inference and resolves straight to approved content, and a request that asks for two things gets both. A dismissed experience is not shown again this session.
lib/decision/policy.ts · explicitResolved() · dismissed