Legal
Privacy Policy
Last updated: 2026-05-28
Summary
Needlework is a personal tool that helps crate diggers move between Discogs and YouTube Music — building playlists from Discogs releases, managing playlists and Liked tracks on YouTube Music, and organising Discogs collection folders and wantlist. To do that, it asks you to connect any combination of those two accounts. This page explains exactly what we read, what we write, where it's stored, and how to make us forget it.
We do not sell your data. We do not show ads. We do not use your data to train AI models. We do not transfer it to third parties.
Data we receive from Google / YouTube
When you connect YouTube Music with Google OAuth, Needlework receives:
- A short-lived access token and a refresh token granted under the single scope
https://www.googleapis.com/auth/youtube, used to call the YouTube Data API on your behalf. - Your YouTube channel ID, display name, and avatar URL, so we can show whose account is connected.
- The playlist IDs and URLs of playlists Needlework creates for you.
What we do with your YouTube data
We use your YouTube credentials only to fulfill explicit requests you make in the chat — for example: “build me a playlist of 2024 dub techno on Berceuse Heroique” or “rename my Crate playlist to Late Night.” In response to such a request, we may:
- Search YouTube Music for each candidate track (
search.list). - List your existing playlists when you ask “what playlists do I have” or refer to one by name (
playlists.list,playlistItems.list). - Create a playlist in your YouTube Music account (
playlists.insert). - Rename a playlist (title or description) when you ask (
playlists.update). - Add matched videos to a new or existing playlist (
playlistItems.insert). - Remove videos from one of your playlists when you ask (
playlistItems.listto locate the playlistItem id, thenplaylistItems.delete). - Delete one of your playlists when you ask (
playlists.delete). - Read your liked videos by listing your “Likes” auto-playlist (
channels.list,playlistItems.list). - Like or unlike a video when you ask (
videos.rate).
We do not read your watch history, subscriptions, or any other channel data. We do not modify anything you did not ask us to modify.
Where it's stored
In the current beta, Needlework does not run a user database. All your data lives in your browser as encrypted cookies and stays scoped to your browser session:
- YouTube / Google credentials: stored in an
httpOnly, encrypted, server-only cookie. Auto-refreshed when the access token nears expiry. Cleared immediately if Google returns 401. - Discogs credentials: an
httpOnly, encrypted, server-only cookie holding the OAuth 1.0a access token and token secret. Discogs tokens have no fixed expiry; we clear the cookie on disconnect or if Discogs returns 401. - Chat history: stored in your browser's
localStorage. It never leaves your machine. - Pollinations API key(which powers the chat AI): stored in your browser's
sessionStorage.
In the current beta, we do not log content, search queries, playlist titles, or track names from any connected service to a server-side database. Our application logs (operated by Vercel) record the API endpoints we call and, where applicable, their unit cost for quota observability — they do not include your tokens or your personal data.
Planned public metadata cache
Needlework is designed to add a shared resolver cache for public music metadata and cross-platform match mappings. That cache is meant to reduce repeated provider searches and improve match quality over time. It may include normalized artist and track titles, public Discogs release IDs, YouTube video IDs, confidence scores, candidate history, and resolver status.
The resolver cache is not meant to store OAuth tokens, raw chat prompts, private playlist names, private playlist contents, full account-specific library exports, provider credentials, or payment data. Failed resolver attempts and negative-cache entries should use hashed normalized queries where practical and should be retained only for limited debugging, abuse prevention, and quota-control windows.
Retention
Your Google/YouTube tokens are retained for as long as their refresh tokens remain valid (controlled by Google, typically months of inactivity) or until you disconnect, whichever comes first. Your Discogs token has no fixed expiry but is cleared whenever you disconnect or Discogs returns 401. Chat history remains in your browser until you delete it from the sidebar or clear browser storage.
How to delete your data
You can revoke Needlework's access at any time. Inside the app, open the sidebar and click the Disconnecticon on any row — this deletes the encrypted cookie immediately and the token can no longer be used.
To also revoke at the provider end (so the refresh token itself is invalidated):
- Google / YouTube: visit myaccount.google.com/permissions, find Needlework, and remove access.
- Discogs: visit discogs.com/settings/applications and revoke Needlework.
Discogs
When you connect Discogs (OAuth 1.0a) we receive an access token used on your behalf. Discogs OAuth does not have granular scopes — the token grants the same permissions as your Discogs account.
In response to explicit chat requests, we may:
- Read your account identity (username, avatar) via
GET /oauth/identityat connect time. - Search public release metadata via
GET /database/search. - Read your collection folders and the releases in them via
GET /users/{u}/collection/foldersandGET /users/{u}/collection/folders/{id}/releases. - Read your wantlist via
GET /users/{u}/wants. - Create or rename a collection folder via
POST /users/{u}/collection/foldersandPOST /users/{u}/collection/folders/{id}. - Delete one of your own collection folders via
DELETE /users/{u}/collection/folders/{id}(system folders “All” and “Uncategorized” and the wantlist cannot be deleted). - Add a release to one of your collection folders via
POST /users/{u}/collection/folders/{folder}/releases/{release}. - Add a release to your wantlist via
PUT /users/{u}/wants/{release}. - Remove a release from your wantlist via
DELETE /users/{u}/wants/{release}.
We do not touch your Discogs orders, marketplace listings, messages, or any data outside the collection folders and wantlist. We only write when you explicitly ask. The token is retained until you disconnect or Discogs returns 401.
Limited Use disclosure (Google API Services)
Needlework's use and transfer of information received from Google APIs to any other app will adhere to the Google API Services User Data Policy, including the Limited Use requirements. Specifically:
- We only use Google user data to provide or improve user-facing features that are prominent in the app's user interface (the chat-driven playlist creation flow).
- We do not transfer Google user data to third parties except as necessary to provide or improve user-facing features, comply with applicable law, or as part of a merger or acquisition with adequate notice to users.
- We do not use Google user data for serving advertisements.
- We do not allow humans to read Google user data unless we have obtained your affirmative agreement for specifically identified data, the data is necessary for security purposes (such as investigating abuse), to comply with applicable law, or the data is aggregated and used for internal operations.
Cookies
We use cookies only for the functional purposes described above (encrypted credential storage, OAuth state, session identification). We do not use analytics cookies, advertising cookies, or third-party trackers.
Changes to this policy
If we change anything material we will update the “Last updated” date at the top of this page and, where appropriate, surface a notice in the app.
Contact
Privacy questions, data requests, or anything else: hello@needlework.io.
See also: Terms of Service.