Daily Post Factory
The user should not choose the topic, category, audience, or format unless they want to.
0. Load context
Read durable CareerSignal context and recent history.
If profile is uninitialized, hand off to onboarding and then resume.
1. Research broadly inside the user's professional universe
Use live web/search capability when available.
Prefer:
- first-party official documentation, release notes, repos, standards, papers;
- primary research;
- reputable technical sources;
- community sources for pain points, not as sole authority for factual claims.
Search for:
- recent changes/releases;
- recurring implementation failures;
- API/tool changes;
- practitioner pain points;
- research worth translating;
- misunderstood concepts;
- debugging patterns;
- security/governance problems;
- useful evergreen problems when news is weak.
Do not collect generic news.
2. Generate candidates
Create 5–10 internal candidates across different domains.
Domain examples:
- agentic systems
- LLMs
- RAG
- evals
- MCP/tool use
- Python
- ML/deep learning
- computer vision
- data engineering
- SQL/data quality
- MLOps/deployment
- APIs/automation
- AI safety
- open-source AI
- research papers
- cloud/GPU
- debugging
- BI/analytics
- research data
- the user's own evidence/project domains
Use references/domain-library.md.
3. Turn each candidate into a problem
For each candidate identify:
- what changed or what commonly fails;
- who experiences it;
- why it matters;
- the practical fix/decision;
- what the reader can reuse.
Reject candidates that are only announcements.
4. Score
Use references/scoring.md.
Important dimensions:
- timeliness;
- problem importance;
- educational value;
- actionability;
- evidence strength;
- match with user's knowledge boundary;
- career/professional signal;
- novelty;
- memorability;
- connection quality potential.
5. Originality and feed diversity
Read recent topic/category/domain/format memory.
Check:
- same topic;
- same core lesson;
- same hook pattern;
- same format;
- same audience;
- same visual;
- same analogy/joke;
- same emotional tone.
Use script when available:
python3 engine/originality.py ...
Do not repeat polls or humor back-to-back. Do not let one domain dominate the feed.
6. Choose category independently from domain
Use references/category-library.md.
The best topic determines the category, not a rigid calendar.
7. Choose teaching structure
For advanced learning content prefer:
problem → core idea → how it works → practical example → common mistake → when to use → one rule to remember
Not every post needs every section. Keep one main idea.
8. Build-before-post option
If the best content would be stronger with original evidence, return BUILD instead of weak commentary.
A BUILD action can be:
- 5–30 minute code experiment;
- small benchmark;
- tiny data analysis;
- quick architecture prototype;
- reproducible comparison.
When code execution is available, run it. Then use the result as original evidence and continue to the post.
9. Defensibility + counterargument check
Before writing:
- What would a knowledgeable peer challenge?
- What limitation matters?
- When is the recommendation wrong?
- Can the user defend the post?
Soften or remove claims that fail this check.
10. Choose format
Possible outputs:
- text;
- poll;
- carousel/document;
- generated teaching image;
- annotated real screenshot;
- code + explanation;
- architecture diagram;
- decision tree;
- chart;
- short situational humor;
- mini-guide.
Prefer a real evidence visual over decorative generation. If image generation exists and an original image teaches better, generate it. If not, produce a precise visual brief.
11. Draft + quality pipeline
Run:
- evidence/claim check;
- source freshness check;
- privacy scan;
- humanizer;
- technical/factual audit;
- hype/AI-tell audit;
- originality check;
- format-specific validation;
- final voice pass.
When executable code is used in a post, run/validate it when possible.
12. Save history
If local state is available, save the draft metadata before returning it:
- create a post JSON compatible with
schemas/post.schema.json; - run
python3 skills/user-context/scripts/context_cli.py record-post --file <post.json>.
Do not mark as published until the user says it was published. When they do, use mark-published and include the LinkedIn URL if they provide it.
13. User-visible response
By default return only:
- final post;
- and the selected asset/poll/carousel/code if needed.
Do not expose candidate rankings, chain-of-thought, audit tables, or research notes unless asked.
If decision is BUILD / ENGAGE / SKIP, say so briefly with one useful action.
CareerSignal shortcut modes
All commands remain intent aliases and may also be expressed naturally.
/CSpost— run the complete daily-post workflow./CSideas— return 5–10 strong ranked ideas only; do not draft the post./CSseries— create a progressive multi-post learning series from one topic without repeating the same lesson./CSvisual— create or brief the strongest visual/carousel/diagram for an existing or selected post idea./CSpoll— create a useful practitioner poll with 2–4 distinct options and a follow-up learning angle./CSreply— draft a substantive reply/comment grounded in the supplied post/comment and the user's real evidence./CSrepost— take an older user post and find a materially new angle; do not paraphrase the same lesson.
These modes still use evidence, privacy, voice, originality, and source checks.