LinkedIn Content Library & Analyzer app changelog
About the app
I've been active on LinkedIn for many years now, and I've always wanted a way to browse through or search for a post. There isn't a way to easily do this in LinkedIn or Buffer, which I use to schedule posts.
When the Buffer API was released, I realized I could build it myself. The LinkedIn Content Library & Analyzer app was born.
It's not open to users at the moment. I've generated this changelog to build a record of how the app has evolved. I've written more about the app itself over on Buffer.
Changelog
October 2026
Post Library
- Syncing now automatically pulls impressions, reach, reactions, and comments straight from Buffer for posts from the last 30 days. Stats the user uploaded by CSV or Shield are never overwritten — uploads always win.
- Clicking Sync now refreshes the stats on the post cards straight away, without needing to reload the page.
Analytics
- Direct API stats integration: added
buffer_apito the analytics source priority hierarchy. Post performance breakdowns (by post type, tag, and averages) now incorporate live synced metrics for recent posts when no manual CSV or Shield data is present. - The Buffer stats importer no longer requires both files: uploading only
timeseries.csv(daily views and followers) works on its own, and addingposts.csvremains optional.
Platform
- Added a private sign-in screen: replaces the open preview workspace with a dedicated login screen, restricted exclusively to the user's verified account.
- Enabled Row-Level Security (RLS) and server-side authorization: all database tables and backend functions now enforce owner-only access policies, ensuring the user's data, sync, AI tools, and Buffer actions cannot be accessed by unauthorized callers.
- Set up the app as an installable home-screen app named LCLA, with a custom icon.
- Patched the routing library to clear known security advisories.
September 2026
Analytics
- Made the Buffer CSV importer handle newer export formats:
posts.csvnow reads direct metric columns (Impressions, Reactions, Comments, Eng. Rate, Reach) as well as the older packed statistics column, andtimeseries.csvaccepts both "Views" and "Impressions" headers.
July 2026
Platform
- Patched the backend client, charting, and spreadsheet-parsing libraries to clear known security advisories.
June 2026
Post Library
- Cmd+Enter (Ctrl+Enter on Windows) now saves a note, so the user doesn't have to reach for the Save button.
- The "Import analytics" button on both the Post Library and Analytics screens now opens the Buffer CSV importer directly instead of making the user pick a source first. The LinkedIn and Shield importers are still available behind the scenes.
- The date-range picker now looks and behaves like the one on Analytics.
Analytics
- Hovering any impressions or engagements figure in the "by post type" and "by tag" tables shows the average per post, not just the total.
AI Chat
- Taught the AI to answer growth questions from actual analytics data instead of falling back on post notes. It now gets pre-computed performance rollups by tag and post type, a daily follower series, and a per-post follower attribution table showing net follower change 1, 3, and 7 days after each post — plus the biggest follower spikes and which posts sat next to them.
- Fixed a bug where a new chat's answer and cited posts flashed on screen briefly and then disappeared. The streamed response now stays put until the saved version is confirmed.
- Made "Analyze these posts" actually restrict the AI to the selected posts. Before, the whole library was sent with a polite hint to stay in scope; now out-of-scope posts are simply left out of the context, while global post numbering stays stable.
- Fixed garbled answers and truncated responses by raising the response limit and making the streaming pipeline hold onto partial lines instead of dropping fragments that straddle network chunks.
- Stopped long messages and code blocks from overflowing the chat bubble horizontally.
May 2026
Post Library
- Posts now carry a media type (text, image, video, document, carousel) and asset count, synced from Buffer.
- Added tag search inside the tag dropdown.
- Notes are editable in place and line breaks are preserved.
- Standardized page widths and the analytics grid across the app.
Analytics
- Switched the stats importer to Buffer CSV exports as the primary source.
posts.csvmatches each row to a post 1:1 via Buffer's own post ID, andtimeseries.csvsupplies daily views and follower counts. No more fuzzy URL matching. - Added a clear priority order across three import sources: Shield wins for anything before May 2025, Buffer wins from May 2025 onward, and LinkedIn XLSX fills whatever Buffer doesn't reach.
- Changed overlapping-period behavior so re-uploading a full month replaces earlier weekly uploads instead of double-counting.
- Rebuilt the Shield importer's matcher around publish date (±1.5 days) plus text similarity, with a disambiguation step when more than one post is a plausible match.
- Rebuilt the Stats screen on daily data so any date range — last 7 days, last 90 days, mid-month — reports correctly.
- Added performance breakdowns by post type and by tag, with sortable columns and a details popover.
- Made stats periods handle partial months: a bucket that only partly overlaps the user's selected range is prorated rather than counted whole.
- Reworked the date-range picker UX.
- Added the first analytics importer for monthly LinkedIn exports, with a resolver dialog for rows that couldn't be matched automatically.
- Added the first Analytics screen showing impressions, engagements, and followers over a chosen date range, plus an AI Insights card that generates a written read of what's working and what isn't.
AI Chat
- Added content buckets: define the user's own topical lenses (name, description, linked tags) and switch them on for a conversation. Buckets frame how the AI reads the user's library without filtering which posts it can see, and the selection is remembered per conversation.
- Added idea seeds: ask for post ideas and the AI returns short angles (1–3 sentences) rather than finished drafts. Each is typed as a new direction, a buried seed from an existing post, or a gap in the user's coverage, and rendered as an editable card the user can push straight to Buffer as an idea.
- Added
@mentionsof posts in the chat input, with normalization so near-miss text still matches. - Conversations can be scoped to a set of posts, and that scope is saved with the conversation.
- Added suggested follow-up questions after an answer.
- The cited-posts panel can be collapsed and no longer overlaps the chat on narrow windows.
- The AI now receives a tag index and per-tag tables so it can reason about topics as groups rather than one post at a time.
- Tightened citation filtering so the AI only cites posts it actually referenced in its answer.
April 2026
Post Library
- Added post notes: attach timestamped private notes to any post, search them as their own scope, edit or delete them, and have them included in the AI's context.
- Added a backfill mode that pulls historical Buffer posts older than anything currently in the library without disturbing the forward sync cursor.
- Synced tags from Buffer, showed them on each card, and added AND-style multi-tag filtering next to the date filters.
- Added a manual sync button and switched sync to
sentAtordering so incremental pulls pick up the right posts. - Gave the app a consistent header, page layout, and spacing so the Post Library, Chat, and Analytics screens feel like one tool instead of three separate prototypes.
AI Chat
- Made conversation memory persist properly across messages and sessions.
March 2026
Post Library
- Built the first working version as a browsable library of the user's synced LinkedIn posts: search, filter, and scroll every post in a three-column grid of collapsible cards.
AI Chat
- Added an AI chat on top of the synced library: ask questions about the user's posts and get answers that cite the specific posts they came from.
- Added chat sessions and history: conversations are saved, auto-titled, and reopenable from a history view.
- Added a cited-posts side panel that accumulates across a whole conversation; clicking a "Post N" reference scrolls to its card, and each card links out to the post in Buffer.
- Added optimistic sending so the user's message appears immediately.
- Stopped internal tool-call syntax and raw post IDs from leaking into the AI's prose.
- Added stable global post numbering: Post 1 is the user's oldest post, and a given number always means the same post — in chat, in the cited-posts panel, and in the library. The numbering used in each answer is stored with it, so old conversations still read correctly as the library grows.
Platform
- Set up the backend on Lovable Cloud and connected the Buffer API so posts could sync in for the first time.