Built 19 August 2026 · verified in session

The Content Engine

Why the LinkedIn posts were bad, what now stops a bad one from shipping, the fourteen days of content that replace the deleted plan, and which channels are actually wired.

ContentPilot dfeddfe · 94e83e6 social-engine 847e742 · 2274fd9 Meta: live · LinkedIn page: blocked
01

You were right, and here is the number

The post you saw was not ContentPilot. It was social-engine queue item #14, published 18 Aug at 21:52 by a Windows scheduled task. ContentPilot's prompt already asked for short lines and blank lines — so the rules were fine and nothing enforced them.

WhatScoreReading
Post #14 — the one that went live
22
Opens on a topic label. Banned contrast flip ("not a slide deck"). Closing question nobody can answer with a fact. 5 hashtags.
Three older posts of ours that read well
82–88
These are what the gate was calibrated against, so "good" is a sample, not an opinion.
Replacement drafted through the new spec
94
1,431 characters, hook 71 characters, five concrete details, two hashtags.
Same pipeline run on our own GPU, ₹0
88
First attempt. Needed enable_thinking:false — it was burning the whole budget in a reasoning field and returning nothing.
Your queue of 67 unposted items 8 / 30 / 29 Pass / one fix / rewrite. Top failure across the backlog: 45 posts have no number in the opening line.
Two things were about to make it worse today

Your pause flag was decorative. 48 items carried PAUSED_BY_SRIRAM_2026-05-13. The poster only checked "not posted and approved", so every one of them was still queued to go out. That is how #14 shipped.

Three scheduled tasks fire the poster daily — 08:30, 13:00, 18:30, all Ready, all last run 18 Aug 21:52:06. The next item in line had no pause flag: a Penn RAIL AI research summary scoring 34/100. It was going to your personal feed today. Both holes are now closed.

02

Positioning — and whether your marketing plan is right

I read Mansi Pachpute's WhatsApp message (16 Aug) and the brain KB. Her read is correct and it is the sharpest input you have on this.

Mansi, verbatim

"You've built something that solves a REAL problem: visibility & control in healthcare revenue. But on LinkedIn, practice owners probably see you as just another RCM tool. You should OWN the visibility narrative. Most healthcare SaaS talks features. You should talk OUTCOMES."

She is right about the diagnosis. Your content was proving her point: post #14 said "practical operating layer" and named no outcome anyone could check. That is feature language with the features removed.

The line the engine now writes from

A small practice gets the visibility and control over its revenue that only a hospital system can normally afford.

And underneath it, the reason — your value, not a tagline: everyone should get healthcare. A clinic whose billing holds together keeps seeing the patients whose coverage is complicated.

That second line is in the spec as a topic filter and an angle, never as copy. A mission statement bolted onto the end of every post is exactly the AI tell your own rules ban. It shows up in which story gets told, not in a closing slogan.

Where I think your plan is wrong

03

How ContentPilot works now

Signals in, post out, and a gate at the two points where a bad post could escape.

01
Signals
NPPES new clinics, Google Suggest demand, Reddit pain. Free, no keys. scripts/signals.py
02
Calendar
Each day gets a format, a title, and the signal it came from. Nothing is written without a reason.
03
Draft
Prompt built from brand.spec.js — positioning, structure, our own good and bad posts as examples.
04
Gate
Deterministic. No model. Fails a draft and hands back the exact reasons. postQuality.js
05
Repair
One automatic pass against its own failures. The repair is kept only if it scores better.
06
Publish
The gate runs again at the poster. A failing post is refused, not published.

One set of rules, two systems. social-engine does not re-implement any of it — it shells to ContentPilot's checker through engine/format_gate.py, so the two can never drift apart.

What the gate actually checks

The opening line (does anything specific live inside the see-more fold) · block structure and line length · the contrast flip, including the sentence-split form · hype words and dead phrases · survey-question closers · concrete detail anywhere in the post · length, hashtag count, emoji · mojibake · and any money, percentage or multiplier that is not in the facts you supplied.

That last one exists because the first real generated draft invented a statistic — "worth half of what it was filed for" — and scored 88. Requiring a number in the hook is an incentive to make one up. For a healthcare company that is the expensive kind of wrong, so unsourced figures now fail.

04

Channels — what is actually wired

Every row below was tested with a live API call in this session, not read off a config file.

ChannelStateProofIn ContentPilot?What it needs
LinkedIn — you Live Token active, w_member_social Yes Nothing. Posts today.
LinkedIn — company page Blocked organization_id empty; scope not granted Code ready, cannot authenticate Community Management API approval + page-admin re-consent. Owner gate.
Facebook page Live "Getmax solutions", 2 followers, token never expires Wired today Nothing. Was sitting unused.
Instagram business Live getmax_solutions, 37 followers, instagram_content_publish Wired today Every IG post needs an image or video URL — text alone is refused by the API.
LinkedIn analytics No API Token has no read scope at all n/a The xlsx export, run through the analytics dashboard skill.
X / Twitter Not set up All four keys blank Code ready Four API keys. Lowest priority — your buyer is not there.
Bluesky · Telegram Live Both READY in social-engine No Low value; leave in social-engine.

Correction to the brain KB: 06_GTM.md lists Meta as NEEDS_SETUP. It is not — the tokens have been working the whole time.

05

The research stack — all open source, all free

What feeds the calendar, what makes the assets, and honestly which of these are running versus available.

JobToolCostState
New clinics & hospitals openingNPPES / CMS NPI registry APIFree, no keyBuilt signals.py --lane new_providers
SEO — real search demandGoogle SuggestFree, no keyRun 115 phrases collected
Pain signals in the buyer's wordsReddit JSONFreeBuilt rate-limits on call count, one call per sub
Open web researchPerplexica + SearXNGSelf-hostedOn the fleet not yet wired to the calendar
Copy generationQwen3.8-27B on our L40S₹0Proven 88/100 first attempt
Infographics & stat cardsHTML + headless Chromium₹0Have it beats every diffusion model at setting type
VideoComfyUI + Wan 2.2 on i-055 · MiniMax H3₹0Proven once 1280×704, 5s in 225s
Your voiceF5-TTS / OpenVoice v2 (MIT)₹0Clones on disk three reference takes in Desktop/GetMax_Video
TranscriptionWhisper (max-ears)₹0Live needs the RCM jargon dictionary
Hiring signalsGap no free source found yet; LinkedIn blocks it
What the keyword lane actually returned

claim denied for authorization · claim denied as duplicate · claim denied as medically not necessity · why does prior authorization take so long · patient no show prediction · insurance eligibility verification software

Every calendar entry below is traced to one of these. That is the difference between a content plan and a list of ideas.

06

Fourteen days, starting today

The old plan is deleted — 67 unposted items removed, backup kept at post_queue.backup-2026-08-19.json. This replaces it. Six formats, no AI-industry stories, every row traced to a signal.

DateTitleFormatWhereWhy this one
19 AugThe 19-day denialTextLinkedInOpens the visibility narrative on the most-searched denial reason. The mechanism sells; there is no pitch.
20 AugWhere a claim actually diesInfographicLI · FB · IGFive denial exits with their CARC codes. This is the asset a manager screenshots and sends to their biller.
21 AugPrior auth: why it takes so longCurated videoLinkedInA market explainer with our read on top. High-intent question, cheap to produce.
22 AugThe no-show is a revenue eventStat cardLI · IG · FBConnects scheduling — what the practice manager owns — to revenue, what the owner owns.
23 AugEligibility at 48 hoursBlog → postLinkedInThe one topic where search intent is commercial. Blog does the SEO, post drives to it.
24 AugTwo minutes inside the denial queueVideo (ours)LinkedInProduct depth shown, not claimed. Answers "is this real" in a way no text post can.
25 AugWhat a new clinic gets wrong in month oneTextLinkedInAimed at the NPPES list — practices with no incumbent vendor. Warmest segment we can reach organically.
26 AugTimely filing by payerInfographicLI · FBA reference asset people save and return to.
27 AugThe report that should take ten minutesTextLinkedInThe visibility narrative stated as a test the reader can run today. Highest-conversion angle in the set.
28 AugWhat the payer seesCurated videoLinkedInMedical necessity — the denial practices argue about most and understand least.
29 AugDays in AR is not one numberStat cardLI · IGReframes a metric every owner already tracks. Reframing beats introducing.
30 AugAppointment to payment, end to endBlog → postLinkedInBridges front-desk search demand to the revenue outcome.
31 AugSriram, 60 seconds, no slidesVideo (ours)LI · IGFace to camera outperforms everything on a personal profile, and no competitor can copy it.
1 SepMonth in review, in publicTextLinkedInShows the operating system working. That is the proof the visibility narrative rests on.

Stored at backend/content/calendar_2026-08-19.json with the full brief, asset pipeline and signal for every row.

07

Two of them, written out

So you can judge the output rather than the plumbing.

Day 1 — The 19-day denial Gate 94 / 100

From the keyword claim denied for authorization. Hook is 71 characters so all of it clears the see-more fold. Five concrete details, two hashtags, and the value shows up as a fact about a clinic rather than a slogan.

A denial hits your clearinghouse at 9am. Nobody touches it for 19 days.

Not because your biller is slow. Because nothing told her it was the one to work first.

Here is what a small billing team is holding in their head at any moment:

- which of last week's 40 denials are CO-45 write-offs and which are real
- which payer's timely filing window closes this month
- which claims are sitting on a modifier 25 problem that will deny again on resubmission
- which patient's eligibility was never checked and will bounce the whole encounter

A hospital system solves this with twelve people and a workqueue tool. A four-provider clinic solves it with memory and a spreadsheet, and the memory loses.

So we built the workqueue instead of the headcount. Eligibility runs 48 hours before the visit. Claim status comes back off the X12 277 in about two seconds, not a 40-minute hold. Denials get tagged by CARC on arrival and ranked by dollars at risk against the filing deadline.

The practices that run this way do not collect more per claim. They just stop losing the ones that age out.

Pull your last month of denials and count how many were worked after day 14. That number is your real leak.

#rcm #medicalbilling
Day 2 — Where a claim actually dies Caption + infographic

Goes to LinkedIn, Facebook and Instagram — the first post that uses the Meta channels wired today. The graphic is set in HTML and rendered by headless Chromium, because a diffusion model cannot set type.

Five ways a clean-looking claim still dies.

Most practices can name two of them.

- CO-45: contractual adjustment. Not a denial. Writing these off as denials makes your denial rate look worse than it is.
- CO-197: no prior authorization. Dead on arrival, and the auth cannot be obtained after the fact.
- CO-18: duplicate. Usually your own system resubmitting, not the payer being difficult.
- PR-204: not covered under the plan. This is a patient conversation you should have had at scheduling.
- CO-29: past timely filing. The only one that is purely a process failure. It was always payable.

Four of these five are visible before the claim goes out. The fifth is visible on day 1 of the filing window.

Which of the five is your most common? Most practices guess wrong until they sort by CARC.
08

soldiers.getmaxsolutions.com — honest status

You asked for agents with their own channel, a kanban board, and Qwen improving them continuously. Here is what exists versus what I would have to build, stated plainly so you are not told something is done when it is not.

PieceStateWhere it is
Agent seats, specced24 builtcrew.py loads a seat, filters tools to its allowlist, enforces guardrails in code
The routing matrixLive76 processes, 13 departments — ai-lab/matrix.py
Qwen3.8 serving themLivei-055, L40S, ₹0 per call
Kanban / PMS boardCloned, not deployedHuly is on disk; Twenty is a live CRM
Each agent owning a channelNot built
soldiers.getmaxsolutions.comDoes not existDNS first, then Caddy — a cert cannot be issued before the name resolves
Continuous self-improvement loopNot builtThe measurement half exists; nothing feeds results back into the seats

The content engine is the right first tenant for that board: it now produces a scored artifact every day, which is exactly the kind of measurable output an improvement loop needs. Building the board before there was anything to measure would have been the wrong order.

09

What needs you