Pulse — https://github.com/acme/social-scheduler

Process-health from the repository alone. Observations to discuss, not verdicts.

Stack: frontend (monorepo)
Repo lifetime: 2024-01-26 → 2026-07-01 · 2656 commits (2184 non-merge, 17.8% merges)
Analyzed window: 2026-06-18 → 2026-07-01 · 39 commits (since 2026-06-17 )
State as of: 2026-07-01 (snapshot at period end)
Commit-message hygiene (window): 0% low-effort (0/39)

In plain language (AI-refined)

Over the last two weeks, the team focused on making scheduled publishing more reliable and able to handle more load, alongside new posting features for Facebook, WordPress, and LinkedIn, plus some security improvements and better handling when AI content generation runs into errors. Most of the effort went into building new capabilities, with a good share spent fixing issues along the way. One thing worth raising: there don't appear to be automated tests in place — it's worth asking how the team checks that things work before they go live. Overall this looks like normal, active development, and the point above is a good question to ask rather than a cause for concern.

Questions worth raising

The signals most worth a conversation this period — observations to discuss, not verdicts. Each carries the evidence behind it. Ordered by how much it stands out, not by severity of judgement.

flagWe added about 1,403 lines of product code this period with no test code, and the project has no test files at all — is this covered elsewhere or is testing falling behind?

Behind it: +1,403 code lines, +0 test lines · the project has no test files at all · window 2026-06-18 → 2026-07-01

watch2 commits this period were reverts — what shipped and had to be pulled back, and was the root cause understood?

Behind it: “Revert "scale scheduler to 12 concurrent workers"”; “Revert "stream large media uploads to R2"” · window 2026-06-18 → 2026-07-01

watchlibraries/nestjs-libraries/src/integrations/social/tiktok.provider.ts is one of the period's most-active files and only John Carter has touched it (13 commits) — a single point of knowledge worth spreading?

Behind it: 13 commits, sole author John Carter · window 2026-06-18 → 2026-07-01

watchlibraries/nestjs-libraries/src/integrations/social.abstract.ts and libraries/nestjs-libraries/src/integrations/social/facebook.provider.ts changed together in 5 commits this period (~80% of the time one moved, so did the other) — intended coupling, or a seam worth decoupling?

Behind it: 5 co-changes, ~80% confidence · window 2026-06-18 → 2026-07-01

watchlibraries/nestjs-libraries/src/integrations/social/facebook.provider.ts has been rewritten 3.0× its current size across 6 commits — a settling design, or churn without convergence?

Behind it: churn factor 3.0× (162 lines over 54 now) · 6 commits · window 2026-06-18 → 2026-07-01

watchAbout 55% of Bob Nguyen's 11 classified commits this period were bugfixes — is that firefighting a fragile area, or just where they happened to be assigned?

Behind it: 55% of 11 classified commits are bugfixes · window 2026-06-18 → 2026-07-01

infoAbout 38% of this period's commits (15 of 39) landed on 2026-06-30 versus a typical ~3 a day — was that a batch or merge day, an end-of-sprint push, or just when the work was ready?

Behind it: 15 of 39 commits on 2026-06-30 (typical day ~3) · window 2026-06-18 → 2026-07-01

AI-inferred work items AI

What was built, reconstructed by clustering commits — no Jira. The footprint and commit count under each item are computed locally from the real diff, not the model's say-so; confidence is the model's own estimate from commit metadata alone — a weak signal, so read low / medium with caution. No code leaves the box.

Reliability & scaling of scheduled publishing engine 2026-06-25 → 2026-06-30 maintenancemedium confidence 16 commits
A large body of work to make the background job system that posts to social networks more stable and able to handle higher volume: tuning concurrency limits, adding timeouts and heartbeats, preventing infinite retry loops, splitting workloads across servers, and hardening data handling so bad values fail cleanly instead of corrupting jobs. TikTok in particular got repeated tuning.
» 13 files, +231/-77 lines · libraries/nestjs-libraries/src/temporal/temporal.module.ts, libraries/nestjs-libraries/src/integrations/social.abstract.ts, libraries/nestjs-libraries/src/integrations/social/tiktok.provider.ts
Facebook posting features and fixes 2026-06-18 → 2026-07-01 featurehigh confidence 4 commits
Improvements to how Facebook posts are created and published, including background color presets for text-only posts, fixes to video story handling, and migrating analytics off Facebook metrics that were being deprecated.
» 6 files, +443/-61 lines · libraries/nestjs-libraries/src/integrations/social/facebook.provider.ts, apps/frontend/src/components/new-launch/providers/facebook/facebook.background.ts, libraries/nestjs-libraries/src/dtos/posts/providers-settings/facebook.dto.ts
WordPress publishing capabilities 2026-06-25 → 2026-06-30 featurehigh confidence 3 commits
Added the ability to set tags, categories, and post status when publishing to WordPress, plus a reusable multi-select input to support it, and clearer error messages when connecting a WordPress site.
» 7 files, +361/-47 lines · libraries/nestjs-libraries/src/integrations/social/wordpress.provider.ts, libraries/react-shared-libraries/src/form/multi.select.tsx, apps/frontend/src/components/new-launch/providers/wordpress/wordpress.terms.tsx
LinkedIn image quality handling 2026-06-26 → 2026-06-30 bugfixhigh confidence 3 commits
Changes to how images are processed for LinkedIn — keeping PNGs instead of converting them to JPEG and capping large images to LinkedIn's limits rather than shrinking them unnecessarily — to preserve image quality.
» 1 files, +23/-6 lines · libraries/nestjs-libraries/src/integrations/social/linkedin.provider.ts
Security hardening 2026-06-22 → 2026-06-26 infrahigh confidence 3 commits
Several security-focused changes: protection against server-side request forgery for integrations that use custom URLs, preventing the AI assistant tooling from reading environment secrets, and a security policy update.
» 10 files, +129/-8 lines · SECURITY.md, .claude/settings.json, libraries/nestjs-libraries/src/integrations/social.abstract.ts
AI content generation error handling 2026-06-29 → 2026-06-29 bugfixhigh confidence 2 commits
Made the AI post-generation experience more robust by translating underlying provider errors into clean, user-friendly responses and handling failures gracefully in the live streaming generator path.
» 5 files, +217/-113 lines · apps/frontend/src/components/launches/generator/generator.tsx, libraries/nestjs-libraries/src/database/prisma/media/media.service.ts, libraries/nestjs-libraries/src/openai/generation.error.ts
Billing and trial adjustments 2026-06-22 → 2026-06-26 featuremedium confidence 3 commits
Changes to subscription handling, including fixes to how free trials start and removing the lifetime plan option.
» 3 files, +3/-11 lines · apps/backend/src/api/routes/billing.controller.ts, libraries/nestjs-libraries/src/services/stripe.service.ts, apps/frontend/src/components/layout/gtm.component.tsx
Team invite link expiry extension 2026-06-26 → 2026-06-26 featurehigh confidence 1 commits
Extended the time a team invitation link stays valid from one hour to two days, making it easier for invited members to join.
» 1 files, +2/-2 lines · libraries/nestjs-libraries/src/database/prisma/organizations/organization.service.ts
Documentation and README updates 2026-06-22 → 2026-06-26 docshigh confidence 3 commits
Updates to the project README including sponsor information, formatting, and grammar corrections.
» 1 files, +10/-15 lines · README.md
Small usability improvement for post management 2026-06-25 → 2026-06-25 featuremedium confidence 1 commits
Added an easier way to copy a post's ID from the calendar view.
» 1 files, +62/-17 lines · apps/frontend/src/components/launches/calendar.tsx

Commit work-type mix AI

39 commits classified by intent — the shape of a role: builds vs fixes vs refactors. AI per-commit labels (conventional kinds), cached so re-runs only classify new commits.

feature 62%bugfix 26%docs 10%config 3%

authori commitsi mixi
John Carter26 feature 73%bugfix 15%docs 8%config 4%
Bob Nguyen11 bugfix 55%feature 45%
Barbara Ellis2 docs 100%

Bob Nguyen: a majority of commits look like bugfixes — firefighting, or just where they were assigned? Worth asking.

Demo-risk / quality smells

A rule-based scan of the current code for signs it was rushed toward a demo — high-signal patterns only, framed as questions. "Clean" means none of debug tails, skipped tests, or hardcoded secrets; TODO markers and a thin test ratio are shown for context but don't break "clean". Build / tooling scripts are excluded from the debug scan, and only near-zero-false-positive secret patterns are flagged.

Debug tails left in: 74 libraries/nestjs-libraries/src/integrations/social/bluesky.provider.ts×5, libraries/nestjs-libraries/src/services/email.service.ts×5, libraries/nestjs-libraries/src/upload/r2.uploader.ts×5, libraries/nestjs-libraries/src/integrations/social/wordpress.provider.ts×4

Test coverage shape: 0 test files vs 709 code files (ratio 0.0)

Demo-risk read AI

Scan flags leftover debug output across the code and no detectable test files, though secrets and skipped-tests came back clean

We found 74 spots that look like leftover debug/logging statements — can the team confirm these are intentional and won't leak noise or sensitive detail into production logs?

The scan detected 0 test files across 709 code files. Can the team explain how the software is currently verified before release — automated tests, manual QA, or something else?

Is the absence of tests a real gap, or could tests live in a separate repo or format our scan didn't recognize?

What would it take to add automated tests around the most critical parts of the system, and is that on the roadmap?

On the positive side, we found no hardcoded secrets, no skipped tests, and no leftover TODO markers — can the team confirm that matches their own understanding of the codebase's hygiene?

Per-author profile

Lines added by category — the shape of a contribution, not a score.

authori commitsi prodi uii migri testi jsi noise%i owns%i
John Carter260 6300 3238% 97.9
Bob Nguyen110 39900 6180% 0.9
Barbara Ellis20 000 0100% 0.1

prod/ui/migr/test/js = lines added by file kind · noise% = share of added lines in low-signal files (lockfiles, generated, config) · owns% = share of current code authored now, by blame.

Current ownership by area

Who holds the live code as of the period end — by git blame over the current code, so a rewrite reassigns ownership to whoever last touched a line, not who first wrote it. Percentages are within each area (each row sums to ~100%); the count in grey is that person's live lines there. Contributors under 1% are hidden.

js John Carter 97.6% 66824
ui John Carter 98.3% 42980

Anomaly feed — questions worth raising

Scans current ownership for knowledge concentration — one person holding an outsized share of the code who has since gone quiet. Flagged when someone owns ≥25% of all code, or ≥60% of one of the two largest areas, and hasn't committed for 60+ days before the period end. An empty feed means none was found.

Who introduced new files in the period

Who created new files in the window — file creations attributed to their author, counted and split by category (the count, then the share within that area). A third lens beside "who holds the code now" (ownership) and "what grew" (growth). Only meaningful files count, so bots adding lockfiles or generated output never show up here.

ui Bob Nguyen 2 (100%)
js Bob Nguyen 2 (100%)

Rework hotspots

Most-touched meaningful files → "why so much?". Settled = quiet since well before the period end.

commitsi churni last touchedi filei authorsi
1368 2026-06-30 libraries/nestjs-libraries/src/integrations/social/tiktok.provider.tsJohn Carter
6162 2026-07-01 libraries/nestjs-libraries/src/integrations/social/facebook.provider.tsBob Nguyen, John Carter
595 2026-07-01 libraries/nestjs-libraries/src/integrations/social.abstract.tsBob Nguyen, John Carter
537 2026-06-30 libraries/nestjs-libraries/src/integrations/social/linkedin.provider.tsBob Nguyen, John Carter
476 2026-06-30 libraries/nestjs-libraries/src/temporal/temporal.module.tsJohn Carter
3191 2026-06-30 libraries/nestjs-libraries/src/integrations/social/wordpress.provider.tsBob Nguyen, John Carter
325 2026-06-30 libraries/nestjs-libraries/src/integrations/social/bluesky.provider.tsJohn Carter
320 2026-06-30 libraries/nestjs-libraries/src/integrations/social/instagram.provider.tsJohn Carter
28 2026-06-30 libraries/nestjs-libraries/src/3rdparties/heygen/heygen.provider.tsJohn Carter
213 2026-06-30 libraries/nestjs-libraries/src/integrations/social/pinterest.provider.tsJohn Carter
28 2026-06-30 libraries/nestjs-libraries/src/integrations/social/whop.provider.tsJohn Carter
24 2026-06-26 libraries/nestjs-libraries/src/services/stripe.service.tsJohn Carter
1103 2026-07-01 apps/frontend/src/components/new-launch/providers/facebook/facebook.background.tsBob Nguyen
144 2026-07-01 apps/frontend/src/components/new-launch/providers/facebook/facebook.preview.tsxBob Nguyen
192 2026-07-01 apps/frontend/src/components/new-launch/providers/facebook/facebook.provider.tsxBob Nguyen

Churn factor

Churn over the analyzed window ÷ current size — a high ratio means a file kept being rewritten lately.

factori churni nowi commitsi last touchedi filei
3.0x16254 62026-07-01 libraries/nestjs-libraries/src/integrations/social/facebook.provider.ts
1.0x103104 12026-07-01 apps/frontend/src/components/new-launch/providers/facebook/facebook.background.ts
1.0x9293 12026-06-30 libraries/react-shared-libraries/src/form/multi.select.tsx
1.0x5859 12026-06-30 apps/frontend/src/components/new-launch/providers/wordpress/wordpress.terms.tsx

Semantic churn

Functions rewritten most often → "why so much?". The function-level twin of rework hotspots: parsed with tree-sitter, across the busiest parseable files, showing functions changed in 2+ commits.

commitsi functioni filei
5uploadedVideoSuccesslibraries/nestjs-libraries/src/integrations/social/tiktok.provider.ts
5postlibraries/nestjs-libraries/src/integrations/social/facebook.provider.ts
4fetchlibraries/nestjs-libraries/src/integrations/social.abstract.ts
4getTemporalModulelibraries/nestjs-libraries/src/temporal/temporal.module.ts
3postlibraries/nestjs-libraries/src/integrations/social/instagram.provider.ts
2constructorlibraries/nestjs-libraries/src/integrations/social.abstract.ts
2prepareMediaBufferlibraries/nestjs-libraries/src/integrations/social/linkedin.provider.ts
2authenticatelibraries/nestjs-libraries/src/integrations/social/wordpress.provider.ts
2uploadVideolibraries/nestjs-libraries/src/integrations/social/bluesky.provider.ts
2sendDatalibraries/nestjs-libraries/src/3rdparties/heygen/heygen.provider.ts
2postlibraries/nestjs-libraries/src/integrations/social/pinterest.provider.ts
2uploadMediaToWhoplibraries/nestjs-libraries/src/integrations/social/whop.provider.ts

Semantic growth over the period

2026-06-18 → 2026-07-01 · units, not lines — measured at the window's first commit vs its last. Functions and classes come from parsing the code (tree-sitter); the other rows are per-stack file / feature counts.

uniti starti endi Δi
apps/backend/modules4747 0
apps/commands/modules55 0
apps/extension/modules99 0
apps/frontend/components300300 0
apps/frontend/modules2021 +1
apps/orchestrator/modules2121 0
apps/sdk/modules22 0
components2929 0
modules271272 +1
functions25962608 +12
classes303303 0

What exists now (feature surface)

A rough count of the distinct units that exist at the end of the window, per stack — files for most stacks (components, modules, prod / test files) or real features for some (routes, models). It shows how broad the product is, not how good or how much code; counts aren't comparable across stacks, so don't add them up.

components: 30modules: 272apps/backend/modules: 47apps/commands/modules: 5apps/extension/modules: 9apps/frontend/components: 301apps/frontend/modules: 21apps/orchestrator/modules: 21apps/sdk/modules: 2
Repo-only signal — the repository shows the shape of the process, not its causes; effort ≠ volume, and attribution is imperfect. Treat every line as a question for the team, not a verdict.
Generated by Pulse on 2026-07-01 14:16 UTC.