The self-maintaining wiki pitch is the good kind of consulting idea: proven pattern, real problem, one thing missing that stalls every pilot conversation before it starts.

The pattern itself I lifted from a gist I found back in April — raw sources go in untouched, an agent maintains an interlinked wiki on top, a schema file teaches it the conventions. I've had it running for weeks on a real client engagement. Ingest a call transcript, the agent updates the overview page, the relevant decision page, sometimes a stakeholder page nobody thought to touch. Ask it a question and it answers with citations back to source pages, then files the good answer into the wiki instead of letting it evaporate into chat history. It works. I use it weekly.

What doesn't exist yet is the part that turns this from "thing I run for one client by hand" into "thing I can sell." A business owner isn't cloning a repo and dropping markdown into a raw folder. They need somewhere to drag a PDF. And they need to ask a question without knowing the wiki underneath is markdown at all — just a box, type the question, get an answer.

I sat down to scope both pieces and went digging through my own repos for prior art, mostly to remind myself how I'd handled file uploads before. Turns out I already had the answer, twice, in two projects that never talked to each other. A hiring-workflow tool I built months back has a small upload page sitting on presigned S3 URLs, so the browser never touches credentials and the file goes straight to the bucket. A chatbot widget I shipped as a reference demo already does the other half: a Lambda handler, DynamoDB with a TTL for session cleanup, Claude on the back end, one script tag to embed anywhere.

Neither project knows the wiki exists. I built an upload flow to solve a hiring problem and a chat widget to solve a marketing problem, and it took scoping a third, unrelated engagement before I noticed they're the same two pieces I need right now.

Self-assessment: That should embarrass me more than it does.

I tell clients the value is the pattern, not the one-off build. Then I go build the same one-off pattern twice, in two repos, months apart, without once checking whether I'd already solved it.

So the actual work this week isn't new code. It's wiring a presigned upload box to a raw folder and pointing an existing chat widget at a wiki index instead of a generic system prompt.

Deployment note: The hard part was never the S3 permissions or the Lambda handler. It was noticing I already had them.

Go check your own repos before you build the next thing. You might already own it.

— linuxlsr