Inspiration
Nonprofits depend on personal stories to explain their impact, raise funds, and reach supporters. However, a story that inspires a donor can also expose the person it is meant to help.
Consent is rarely a simple yes-or-no decision. A participant might permit an anonymous story in a private report but not allow their name, photograph, or personal circumstances to appear in a public campaign. Permission may also expire or be withdrawn later.
We built DignityLift around one principle: possessing someone’s story does not automatically mean having permission to publish it.
What it does
DignityLift is a consent-aware Slack agent for nonprofit storytelling.
A nonprofit employee can mention DignityLift beneath a proposed beneficiary story. The agent then:
- Extracts the participant, intended purpose, destination, media type, and identity exposure.
- Checks a structured consent record through an MCP consent registry.
- Retrieves relevant Slack context through a Real-Time Search integration.
- Applies deterministic consent rules for purpose, destination, media, identity, expiration, withdrawal, and guardian approval.
- Presents a clear Slack Block Kit decision card explaining every mismatch.
- Generates a lower-risk version that removes prohibited or identifying details.
- Routes the result to an authorized human reviewer and records a minimal audit receipt.
DignityLift does not approve stories or publish content externally. It provides evidence-based decision support while preserving human responsibility.
How we built it
We built DignityLift with TypeScript, Node.js, Slack Bolt, and Slack Block Kit.
The system separates responsibilities across clear trust boundaries:
- AI interprets the proposed use and helps produce lower-risk wording.
- MCP provides the authoritative structured consent record.
- Slack Real-Time Search provides current supporting context.
- A deterministic policy engine evaluates consent compatibility.
- An authorized human reviewer makes the final decision.
The project includes a live Slack RTS adapter and a clearly labeled fictional adapter for safe, repeatable judging. It can use the OpenAI Responses API for structured extraction and rewriting, with a deterministic credential-free fallback.
We used Zod for structured data validation and Vitest for automated testing.
Challenges we faced
Our biggest challenge was preventing the language model from becoming the permission authority.
A fluent AI response can sound confident even when consent is incomplete. We therefore designed the system so the model cannot grant permission or override hard policy rules. Missing information fails closed and requires human review.
We also had to represent consent as purpose-specific and revocable rather than as one permanent checkbox. Another challenge was respecting Slack RTS data-handling requirements, so temporary search content is not copied into the audit record.
Accomplishments that we are proud of
- Missing consent never becomes permission.
- The model cannot override deterministic consent rules.
- Every blocked decision includes understandable reasons and evidence.
- The agent provides a constructive lower-risk alternative instead of only saying no.
- Lower-risk wording is never falsely labeled safe or anonymous.
- Live Slack search content is not copied into audit receipts.
- Human review remains mandatory.
- The complete workflow operates inside Slack.
What we learned
We learned that responsible AI is not only about improving prompts. It requires clear authority boundaries.
AI is useful for understanding language and drafting alternatives, but permission decisions are stronger when they are based on explicit records, deterministic rules, visible evidence, and meaningful human review.
We also learned how Slack events, interactive Block Kit components, Socket Mode, MCP tools, and Real-Time Search can work together in an agentic workflow.
What's next for DignityLift
Future versions could connect to organization-approved consent-management systems, add stronger identity resolution, implement role-based reviewer authorization, support consent-renewal workflows, and provide multilingual participant-facing consent summaries.
Before any real-world deployment, the system would require safeguarding, privacy, security, and legal review.
Impact
DignityLift is designed for nonprofit teams working with children, patients, refugees, survivors, and other people whose stories may involve sensitive circumstances.
By placing a dignity checkpoint directly inside Slack, DignityLift helps teams catch harmful publication decisions before content reaches a public campaign.
Disclaimer
This hackathon prototype uses entirely fictional people and consent records. It is decision support, not legal advice, safeguarding approval, or a guarantee of anonymity. It never publishes content externally.
Built With
- agent
- api
- block
- bolt
- builder
- context
- kit
- mcp
- mode
- model
- node.js
- openai
- protocol
- real-time
- search
- slack
- socket
- typescript
- vitest
- zod

Log in or sign up for Devpost to join the conversation.