About the Project
đź§ Inspiration
This project was born from a simple but urgent problem: small, committed grassroots groups often have the passion and purpose, but not the resources or technical capacity to run high-quality, data-driven campaigns. While large organisations can afford consultants and tech platforms, local campaigners are often left with little more than a Canva subscription and good intentions.
I wanted to change that.
The goal was to build a platform that gives these groups access to the kind of strategic campaign planning and messaging infrastructure usually reserved for national organisations — powered by AI, responsive to user input, and accessible for next to no cost.
🛠️ How I Built It
I partnered with Bolt.New to help kickstart the development, then rolled up my sleeves and dove deep into the tech stack. The platform is built with:
- Node.js (Express) for the backend API
- React for the frontend interface
- Firebase for authentication and Firestore database
- OpenAI’s GPT models to generate structured campaign plans and message frameworks
- Cloudflare Tunnels + NGINX reverse proxy for secure and flexible deployment
- Ubuntu Server on a self-managed instance for backend hosting
AI plays a central role: user inputs are processed through a series of structured prompt chains to generate campaign classification, goal prioritisation, messaging frameworks, and even suggested actions. The goal was to maintain the nuance and strategic depth of professional campaign consulting, while automating and simplifying the interface for non-experts.
📚 What I Learned
This project taught me more than any course could. I had to get hands-on with:
- Firebase Auth & Firestore: setting up structured, secure data workflows
- Node.js + Express: building APIs that could intelligently handle AI prompt chaining
- Cloudflare Tunnels & NGINX: configuring secure tunnels and custom domains without needing static IPs
- Ubuntu server management: setting up, securing, and debugging a production-grade backend
- Prompt engineering: designing layered and context-aware prompts for campaign classification and strategic messaging
Most importantly, I learned how to integrate AI meaningfully — not just as a novelty, but as a serious tool for lowering the barrier to entry for social change work.
⚠️ Challenges
- Prompt complexity: Getting the AI to behave consistently across a range of user inputs, without dumbing down the messaging, took many iterations.
- Debugging backend integration: Especially when managing Firebase auth tokens, OpenAI timeouts, and API chaining.
- Maintaining strategic depth: I had to balance automation with nuance — ensuring the AI didn’t oversimplify campaign strategy.
- Self-hosting: Managing Ubuntu, firewall rules, reverse proxies, and logs was a steep but rewarding learning curve.
đź’ˇ Final Thought
This isn’t just a tech project — it’s a political one. The idea is to shift power by giving smaller, ethical organisations access to campaign tools that are usually locked behind paywalls or internal strategy teams. And thanks to AI, that's now possible.
Log in or sign up for Devpost to join the conversation.