Social posts written from cited research
The system that drafts, renders and queues our own social posts every morning. Every claim comes from a fixed library of cited sources, and nothing posts until a person approves it.
- Status
- Live
- Year
- 2026
- Services
- Manual admin, Something specific
- Published results
- None yet
The problem
A clinic owner scrolling past a post has heard every claim about AI already. A post only earns attention if it says something true and specific, and writing that by hand every day is the first thing to stop when the week gets busy.
How it worked before
- Posts were written when there was time, so there were none in busy weeks
- Statistics were whatever turned up in a search, with no source kept
- Every graphic was made by hand
What was in scope.
Deliverables, not outcomes. Anything not on this list was not built, and is not implied to have been.
- A fact library of cited sources, with a banned-claims list
- Daily drafting limited to facts in that library
- Carousel, stat card and reel rendered from brand templates
- A layout check that rejects a render before anyone sees it
- One approval email each morning; no reply means nothing posts
The system, stage by stage.
Each stage does one thing and hands off. The marked stages are the ones a person owns: they are in the diagram because they are part of the design, not because nothing else could reach them.
Fact library
Every usable claim, its source and its caveat. Anything not in it cannot be written.
Drafts
A model writes the day's posts against the library and the banned-claims list.
Render
A small server turns each draft into images, a PDF carousel or a short reel.
Layout check
Overflowing text or a broken frame fails the render, and it retries itself.
A person approves
Human decisionOne email at 7 AM with every post. Approve, change or skip.
Published
Approved posts go out on schedule. Skipped ones are recorded, not retried.
One stage in this system is owned by a person. It stops there deliberately: those are the points where being wrong is expensive.
Runs on
Tools you can keep without us.
Everything is set up on your own accounts and your own billing, so the system does not stop working if we do.
- n8nThe workflow layer most of our automation runs on. Self-hostable, which matters when a client wants everything on their own infrastructure.
- WebhooksHow one system tells another that something happened, without either polling the other.
- REST & JSON APIsThe documented interface of whatever software you already run. Where one exists, it is how we connect.
- Google WorkspaceMail, docs and identity where a business already lives there, which is most of them.
These are tools we build with. Braav Labs is not affiliated with, endorsed by or a partner of any of them, and all names belong to their owners.
Why it was built this way.
- 01
The model cannot invent a number
It is only given facts that are already sourced, and a list of claims it may not make. A draft with a statistic not in the library fails validation before it is rendered.
- 02
Templates, not generated images
Every graphic is an HTML template filled with text and rendered by a headless browser. It looks the same every day, costs nothing per image and never produces a picture that is almost right.
- 03
Silence means no
If the approval email is not answered, nothing is published. A missed morning costs a post. A wrong post costs more.
Results
No measured result yet.
This build has not run long enough to produce a number we can stand behind and show you the source of. When it has, the figure and where it came from go here. We would rather this section say nothing than say something we cannot evidence.
On visual evidence
The canvas is drawn from the workflow file in the repository. The posts are real renders from the templates.
The code
Read it yourself.




What we would change
What we would do differently.
Written down because the next client gets the version of us that already made these mistakes.
The layout check should have come before the templates. Text that fits in a sample does not always fit in a real draft.
A model version can be retired without notice. The first full run failed on every call for that reason, so the model name now lives in one place.
Want something like this built for your business?
Get my free auditOther work
- New-patient website and booking pathA practice site rebuilt around the single question a prospective patient is actually asking (can I be seen, and how soon) with a booking path short enough to finish on a phone in a waiting room.
- Our own sourcing and follow-up pipelineThe system we use to find practices that fit what we do, screen them, and make first contact, running against our own inbox before it is ever sold to anyone else.
- Voice agents that play a hard prospectTwo voice agents, a receptionist and an owner, chained into one call so a sales pitch can be rehearsed against a real gatekeeper before it is spent on a real lead.
How an engagement runs.
The same five steps whatever we are building, so you always know which one you are in.
- Pricing
- Fixed price, quoted after a scope call
- You have the number before anything is built. Nothing is billed by the hour.
- Timeline
- A date at quote time
- Stated as a commitment, not an estimate that drifts once work starts.
- Ownership
- Everything stays in your name
- Domains, hosting, inboxes and every account, on your billing, documented.
- 01
Scope call
Twenty minutes on how inquiries reach you today. No deck, no discovery package.
- 02
Written scope and a fixed quote
What gets built, when it lands, what it costs. Fixed before anything starts.
- 03
Build and review
You see it working on your own content, not a screenshot of it working.
- 04
Launch and handover
Accounts in your name, a written record of what runs where, a walkthrough.
- 05
Support, if you want it
A separate decision, made after something is already running.