This is a submission for Weekend Challenge: Generosity Edition What I Built Handover takes a plain description of what is going wrong inside a small charity and works out the role that would fix it. Not the role they asked for. The one they actually need. You type something like "our books are a mess, and we have missed two filing deadlines". It comes back with a full trustee role: the diagnosis, what the person would do, a deliberately short list of essential skills, an honest time commitment, and an advert you can paste straight into your newsletter. Then a volunteer pastes their CV, badly, and gets scored against every open role with a reason and an honest note on where the fit is thin. Why A couple of days ago I got an email saying Reach Volunteering is closing after 45 years. It genuinely hurt to read. Reach connected small UK charities with people who wanted to give them professional skills. Last year it placed 5,996 volunteers and trustees across 2,440 organisations. The people it placed contributed around £60 million in expertise. Ninety-six per cent of those organisations ran on under £1 million a year, and nearly half on under £50,000. It is not closing because the work stopped mattering. It is closing because funding for the infrastructure that helps small charities build capacity has dried up. Reach was the largest single source of trustees in the sector, and it is shutting at the peak of its impact. I volunteer as a digital navigator, which mostly means sitting with people who have been handed a system that assumes a confidence nobody ever gave them. You watch someone decide they are the problem, when the thing in front of them was just badly built. Reach existed to stop small charities from feeling like that about their own gaps, and now it is shutting down. I cannot rebuild 45 years of relationships in a weekend. So I picked the one piece of what Reach did that was pure expertise rather than headcount, and rebuilt that. The thing everyone gets wrong Every volunteering board opens with the same question. What role are you advertising? Small charities cannot answer it. That is the actual problem. A trustee who says "our books are a mess" is describing a symptom. The missing capability is financial oversight. Until somebody names that, the charity advertises for a bookkeeper, gets a bookkeeper, and still cannot answer a funder's question about restricted money. So it stops applying for the grants it could win, and nobody ever connects the two things. Reach's real value was having someone experienced enough to hear the symptom and name the gap. That is the part I wanted to keep working. So Handover refuses to ask what role you need. It asks what is going wrong, and reasons upward. Demo Live app: https://handover-nd-codes.vercel.app The live site works with no API key at all. Six example organisations are already on the board, spread across the four nations, and you can read any of them aloud straight away. Every canned result is labelled "demo output" on screen. A tool asking you to trust a diagnosis cannot pass off fixtures as one, so the labelling is not optional. To see the real thing, paste a Gemini key into the Settings tab and describe a problem of your own. Keys stay in your browser and go straight to Google. There is no backend in this project, so there is nowhere else for them to go. If you want the fastest honest test of whether this works, give it this and see what comes back: We run a lunch club for older people twice a week out of a church hall. There are six of us, all volunteers, all over seventy. Our secretary died in March, and she was the one who knew how everything worked, including the booking with the church and where the insurance documents are. We are still running the lunches, but I do not think anyone could take over if I stopped. Code Handover Small charities rarely know which skill they are missing. They know what hurts. Handover reads the symptom, names the capability underneath it, and writes the trustee or volunteer role that closes the gap. Built for the DEV Weekend Challenge: Generosity Edition, September 2026. Why this exists On the week I started this, Reach Volunteering announced it is closing after 45 years. Reach connected small UK charities with people who wanted to give them their professional skills. In 2025 alone it placed 5,996 volunteers and trustees, worked with 2,440 organisations, and the people it placed contributed around £60 million in expertise. Ninety-six per cent of those organisations had income under £1 million. Nearly half were under £50,000. It is closing at the peak of its impact, because funding for infrastructure that helps small charities build capacity has dried up. Handover is not a replacement for Reach. A weekend project… React 19, TypeScript and Vite, with no backend at all. Prompts and response schemas live in one module that both the app and the test suite import, for reasons I will get to. How I Built It Three Gemini calls, each with its own response schema. Diagnose a need, profile a volunteer, match one against the other. Google AI: the first version did not work I built the whole app against demo fixtures because I had no key yet. Scaffolding, matching UI, tiered results, all of it looking great on canned data. When I finally ran a real call, I gave it that lunch club above. Gemini answered "Secretary". It handed back the job title of the person who died. Which is exactly the reflex the entire project exists to interrupt. Refill the chair, leave the organisation just as fragile, wait for it to happen again. Three things were wrong, and two of them were mine. No worked examples. Nothing anchored the reasoning from symptom to gap, so the model did the obvious thing. I added two worked examples showing the lazy answer next to the good one, plus a hard rule against ever returning a title the charity already used. A voice instruction bleeding across fields. My house style said, "write as the charity, using we". That was meant for the advert. It leaked into the diagnosis, which came back as "We lack documented records". That is the charity talking to itself, not an adviser telling a board something it had missed. Voice is scoped per field. A spec stated in the wrong place. The advert length lived only in a schema description, and the model returned 55 words against a 150 to 220 word target. Restating it in the prompt body fixed it. It now answers "Governance and Continuity Trustee" and gets there properly: The missing capability is documented operational continuity and compliance oversight, not administrative secretarial support. That is the difference between a tool and a toy, and I only caught it because I tested with a real key before writing this post. Testing something that has no right answer You cannot unit test a diagnosis. But you can test whether it avoids the obvious wrong one. There is a smoke script with 13 assertions running against live Gemini. The one that matters feeds in the bereaved lunch club and asserts the answer is not "Secretary". One check defeated regular expressions entirely. I wanted to confirm the diagnosis names the continuity risk, but the model phrases the same correct idea as "institutional memory", then "unwritten personal memory", then "one key resignation away". Keyword matching either missed good answers or had to be widened until it passed anything at all. So that one check is a second Gemini call acting as a judge, given the shallow answer and the correct insight and asked which one the output reached. Slower and non-deterministic, but it tests the thing I actually care about instead of the words that happened to appear. That is also why the prompts sit in a module both the app and the test import. A test that drifts from the prompt is worse than no test, because it reports on something nobody runs. ElevenLabs: reading it aloud is the accessibility path The role pack can be read aloud, and this is not decoration. The people running £20,000 charities are often not confident readers of formal documents. A trustee advert is precisely the kind of text that makes somebody decide the role is not for them before they finish it. Hearing it spoken plainly moves that line. I picked Alice, a British voice, over the usual default. This is a UK tool and the listener is often somebody who already feels talked down to by officialdom. An American narrator would be one more small signal that this was not built for them. Testing with a real key caught a second bug. My hardcoded default was a library voice, and ElevenLabs returns 402 "Free users cannot use library voices" on a free plan. So the whole voice feature would have failed for anybody setting it up fresh, including any judge who tries it. It now recovers instead of failing. On a 400, 402 or 404 it asks the account which voices it genuinely has, prefers a British one, retries, and remembers the answer. A 401 is a bad key and is not worth retrying. There is also a Web Speech API fallback, so the accessibility feature is never the thing behind the paywall. That fallback had its own bug: it reported success without waiting for voices to load, which meant it could show "reading aloud" over complete silence. On the accessibility path that is the worst possible way to fail. Decisions I will defend Essential skills are capped at three. Every unnecessary requirement excludes somebody who could have done the job. The pool Reach built was over 40% under 40 and over 40% from ethnic minorities, well ahead of national trends, and bloated requirement lists are one of the mechanisms that quietly narrows a pool like that. Match scores are forced to spread. A matcher returning everything at 78 has not judged anything. Real scores come back between 92 and 18, which is why the results split into three tiers instead of one ranked list. Every match carries a "where it is thin" note. A volunteer who finds out in month three that the fit was wrong does not stay, and that costs the charity more than never recruiting them. The weak matches stay visible. Collapsed, not hidden. Handing somebody six roles they cannot do is asking them to do the triage the tool was supposed to do for them, but hiding the rejections entirely is just flattery. The example organisations are invented, and the app says so. Attaching made-up recruitment needs to real registered charities would put words in their mouths. The names are fictional. The shapes follow the real distribution Reach reported. What it is not The diagnosis is a starting point for a board conversation, not governance or legal advice. The model can be confidently wrong about which capability is missing, so the role pack is built to be edited rather than accepted. Matching runs against roles held in one browser. This demonstrates the mechanism, it is not a live marketplace. And it is not a replacement for Reach. Not affiliated with them either. It is one piece of what they did, kept working. Prize Categories Best Use of Google AI. Three schema-constrained Gemini calls carry the whole product, and the diagnosis prompt is the product. Most of the quality lives in the response schema field descriptions and two worked examples that stop the model from restating the charity's problem back at it. Tested by 13 live assertions, one of which uses Gemini itself as a judge. Best Use of ElevenLabs. Text to speech as an accessibility route rather than a feature, aimed at people who find formal documents off-putting, with a British voice chosen deliberately, graceful recovery when an account cannot use a given voice, and a Web Speech API fallback so the accessible path is never the paid one. The bit that bothers me Reach closed because nobody would fund the unglamorous infrastructure underneath the sector. Matching software does not fix that. A funder deciding capacity building is worth paying for fixes that. But the need did not disappear when the charity did. There are still thousands of small organisations who know exactly what hurts and cannot name the skill that would stop it hurting. If you have run a budget, chaired anything, written a policy, or built a system other people depended on, a grassroots charity somewhere needs precisely that and has no way left to find you. So which is it? Are you going to paste your CV into something like this and find out where you would actually be useful, or is that a job for somebody with more time than you?
Handover: small charities know what hurts, not what skill they are missing
Full Article
Original Source
Read the full article at Dev →KhanList aggregates and links to publicly available news content. We do not host full articles from third-party sources. Always verify important information with original sources.