You're in a safe, non-corporate space
Nothing you type here is sent anywhere, stored, or profiled. This demo runs entirely inside your browser tab and forgets everything the moment you close it. The only thing that ever sees your words is you.
The Solidarity Hub & Injustice Ledger
When a system fails you, the first thing it takes is your record of what happened. Write it down here. One entry per event, while it's fresh. When you're ready to push back, a clean timeline is the most powerful thing you own.
My timeline
No entries yet. Add your first one above.
Where to take it next
- Document before you argue. Dates, names, reference numbers, and what you were told versus what the policy says.
- Put everything in writing. Ask for a written decision and written reasons. A phone call that isn't confirmed in writing never happened.
- Find a peer advocate. Community legal centres, tenants' unions, disability advocates, and welfare rights services are free and exist exactly for this.
- Escalate in order. Internal review β external review body β ombudsman β your local MP. Each step wants the previous step documented.
- Never go without food, power, or a roof while you fight. Emergency relief and hardship programs exist and are separate from your complaint. Use them now, argue later.
I keep a directory of verified non-government help β food pantries, crisis accommodation, utility relief grants, free legal aid β that I'll confirm live for your specific suburb on request. Just ask me: "what's near me?"
The Daily Kindness Catalyst
Mutual care isn't sentimental β it's chemistry. When you help someone, your brain releases oxytocin, dopamine, and serotonin. The person you helped gets the same wash of it. Both of you heal. That's the whole trick, and it costs nothing.
Your kindness streak (this session)
You've marked 0 acts of service today. The bar is deliberately tiny β small and repeated beats grand and never.
Build & Privacy sheet
Everything you need to take this from prototype to a live, independent platform.
1. The persona & system prompt
This is the brain-defining text. Paste it into whatever model you run β self-hosted, local, or an API.
2. Wiring a real model (server-side)
// Never put an API key in the browser. Proxy through your own server.
// POST /api/chat β Node / Express style
import express from 'express';
const app = express();
app.use(express.json());
const SYSTEM_PROMPT = /* the prompt from section 1 */;
app.post('/api/chat', async (req, res) => {
const { messages } = req.body; // [{role, content}, ...]
const r = await fetch('https://YOUR_MODEL_ENDPOINT/v1/chat/completions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MODEL_KEY}`
},
body: JSON.stringify({
model: 'your-model',
messages: [{ role: 'system', content: SYSTEM_PROMPT }, ...messages],
temperature: 0.4
})
});
const data = await r.json();
res.json({ reply: data.choices[0].message.content });
});
// PRIVACY POSTURE: no request logging, no analytics, no third-party scripts.
// Store nothing server-side. Let the user's browser hold their own ledger.
app.listen(3000);
3. Roadmap from prototype to platform
- Step 1 β Real brain. Swap this page's rules engine for a call to your own model endpoint. Keep the persona prompt as the system message.
- Step 2 β Live verified data. Give the assistant a retrieval tool that pulls current entitlements from official sources, so it cites rather than guesses.
- Step 3 β Local directories. Crowd-verify food pantries, crisis housing, and utility relief grants by postcode, maintained by the community, not an ad network.
- Step 4 β Zero-knowledge by design. No accounts by default. If you add accounts, encrypt the ledger client-side so only the user holds the key.
- Step 5 β Governance. Publish the code, publish the prompt, publish the funding. No ads, no data sales, no sponsors with a stake in poverty.