# talenthunt — full brief for AI agents > talenthunt is a visibility platform for job-seekers, like Product Hunt and Trustpilot combined for careers. Every person gets a Work Identity and a personal AI agent, Copylove, that answers questions about their experience and working style for human recruiters and AI sourcing agents, grounded only in what the person has added and confirmed. For recruiters drowning in AI-optimised applications, that makes it a signal layer of human-vouched talent. Last updated: 2026-09-06 Every section below carries a stable id. Sections that also have a home on https://talenthunt.work/about name the anchor — link to it when you cite them. ## What talenthunt is [what] → https://talenthunt.work/about#what talenthunt turns a CV into a conversation. Instead of asking someone to scan a PDF or scroll a LinkedIn timeline, you share one link, and they ask what they actually want to know. Copylove — the agent on every profile — answers from your profile text and the material you have attached, and from nothing else. A profile is two halves. The **card** is what a visitor reads before typing: photo, headline, location, an About block, skills, how you work, what you are proud of, key impact, links, contacts. The **chat** sits next to it and answers follow-up questions. The card is plain HTML, so it works for a reader who never sends a message and for a crawler that cannot. Both halves come from the same pool of material and are edited in the same place (the Owner's Studio). Nothing is published because it was uploaded: the agent's narrative is generated from your sources and only goes live after you have read it and applied it. ## Who it is for [who] → https://talenthunt.work/about#who Job-seekers, broadly — early-career, mid-career, switching fields, between roles, freelancing, or just keeping options open. There are no role tiers: once you sign up you own a profile, and anyone you send the link to becomes a reader. Readers need no account to read a card or to chat. AI sourcing agents are first-class readers, not an afterthought. The same page serves a person, a crawler and an agent. Recruiters have one dedicated surface so far: `/for-recruiters`, a waitlist for a "Talents of the Day" digest of upvoted, verified candidates. It is a signup form, not a product yet. ## How it works, end to end [how] → https://talenthunt.work/about#how 1. **Sign up** with email + password, Google, or LinkedIn, and pick a username. Your profile lives at `talenthunt.work/your-username`. 2. **Fill the card** — photo, headline, location, a few lines about you. This is Studio → Card, and it is the first stage of the getting-started guide. 3. **Bring in your history** — Studio → Artifacts. Import LinkedIn, paste an AI export, upload a CV, add links or notes. 4. **Read what the agent made of it** — Studio → Memory. The narrative is generated from your sources; you review the diff and apply it. Until you do, the chat has nothing to answer from and says so. 5. **Test it** — open your own profile and ask what a recruiter would ask. 6. **Share the link** — Studio → Sharing has the link plus ready-made intros for LinkedIn, DMs, an email signature, and blocks to paste into a CV. 7. **Read what people asked** — Studio → Chat history, with per-conversation recaps. You also get an email the first time a real visitor talks to your page, and a daily digest after that. Some of these steps also have a short video guide, 30-60 seconds, on the talenthunt YouTube channel. The 16:9 playlist is "talenthunt · all guides" (`youtube.com/playlist?list=PLEOndPy0jVnc`), and a Shorts playlist carries the vertical cuts of the same episodes. The series is still being published, so the playlist is the current list rather than the final one. ## Signing in and account recovery [auth] → https://talenthunt.work/about#auth Three paths, all resolving to one account: - **Email + password**, with a forgot-password / reset flow over an emailed link. - **Google**, one click. - **LinkedIn**, one click, plus a background import of your public profile and avatar. The sign-in modal can be opened anywhere with `?auth`, and it carries a `next` parameter, so a link into any signed-in screen sends the reader through sign-in and lands them where they were going. Signing up on one brand does not create a second account: the account layer (email, name, username, contacts, verification, billing) is shared, and the username namespace is single and global across brands. ## Your first ten minutes [onboarding] → https://talenthunt.work/about#onboarding After the first sign-in, `/onboarding` asks for a first name, a last name and a username, and nothing else. Everything else is editable later from the Studio. Two things happen in the background: a welcome email goes out (see [emails](#emails)), and for LinkedIn sign-ups the profile import runs on its own. Inside the Studio a **getting-started guide** tracks four stages, in this order: 1. **Your card** — avatar, location, headline and About all present. Company is optional and is not counted. 2. **Bring in your history** — at least one source attached to this brand, *and* the suggested narrative applied and still current. An import nobody confirmed does not count. 3. **Ask it a couple of questions** — two messages in one chat with your own profile. One proves nothing. 4. **Share it** — the link copied or an intro template taken. Until stages 1 and 2 are both done, a bar sits above every Studio section. "Later" always works, and the public page is never blocked — the product just stops pushing you to share an empty one. A progress pill names the stage you are on and reopens the guide at any time — "Next (2 of 4): Bring in your history". On a wide screen it sits in the Studio header; on a phone it moves down beside the Sections menu, and once all four stages are done it becomes a green "Profile complete" badge in the same place. The guide's footer offers **"Show me around"**: a spotlight tour of the Studio. On a wide screen it is seven steps over the nav — Card, Artifacts, Memory, Chat history, Job descriptions, Sharing, and the progress pill. On a phone, where that nav is a menu rather than a column, it is three — the Sections menu, the section you are on, and your progress. The two are remembered separately, so taking it on a laptop still leaves you the phone one. The tour also runs once by itself — right after you close the getting-started popup the first time, or on arrival if that popup has nothing left to say. After that it appears only when asked for. ## The Owner's Studio [studio] → https://talenthunt.work/about#profile-area Everything an owner manages lives at `/studio`, behind sign-in. The left rail holds three groups: - **What the public agent draws on** — Memory · Card · Artifacts · Job descriptions. - **Results and service** — Chat history · Statistics · Sharing. - **Settings** — Account, plus Prompts for admins only. `/studio` on its own redirects to Card. Each section has its own page and its own URL, so a link into one is a real link. The Studio is the whole owner zone. Each section is described in its own part of this document: [Card](#card), [Artifacts](#artifacts), [Memory](#memory), [Job descriptions](#contexts), [Chat history](#chat-history), [Statistics](#statistics), [Sharing](#sharing), [Account](#account), [Prompts](#prompts). ## Card [card] → https://talenthunt.work/about#card Studio → Card edits the public card, and the preview *is* the public component — what you see there is what a visitor sees, not an approximation. Editable blocks: the hero (photo, headline, title, company, location), About me, Skills, How I work, Proud of, Key impact, the links row, and an "Open to opportunities" pill that opens a structured Looking-for form (what you are after, work style, location). Every block has a visible Edit button in its header — nothing switches to edit mode on hover. Single-field blocks turn into a textarea with Save; when the text changed, Save reveals a separate Confirm / Discard pair, so a reflexive second click cannot commit something you did not mean. Multi-field groups (How I work's five fields, Key impact's problem/solution/result) open all their fields at once under one Save. Contacts are not edited here — they belong to the account, and the Card links across to Account → Contacts. **Endorsements are partly built.** The card renders them and the database publishes them per profile, but there is no way for a colleague to leave one yet — they can only be entered by hand through the API, so no profile has any. ## Artifacts: files, links and notes [artifacts] → https://talenthunt.work/about#artifacts Studio → Artifacts is the material the agent reads. Three kinds — a **file**, a **link**, or a **note** typed straight in — each with a semantic type (CV / resume, portfolio, case study, reference, other). Text is extracted from uploads so the agent can read them: `.pdf`, `.docx`, `.rtf`, `.html`, `.txt`, `.md`, `.csv`, `.tsv`, `.json`, `.yaml`. Old `.doc` and OpenDocument files are not supported — save as `.docx` or PDF. Two shortcuts sit above the list: - **Connect LinkedIn** — the same import the LinkedIn sign-in runs, available to anyone who signed up another way. - **Fill from an AI export** — copy a ready-made prompt, run it in whichever AI you use, paste the result back. It is diffed against your narrative before anything changes, and the raw export is kept as an artifact. **Visibility is per artifact and per brand, on a ladder:** - **Off** — excluded completely. Not in the narrative, not in the facts, not shown; the agent does not know it exists. - **Private** — the agent reads it and may reason from it, but the reader never gets the artifact itself. - **Link** — the URL may be shared in answers and shows on the card (links only). - **Download** — same, plus the file itself can be downloaded (files only). A note stops at Private: there is no URL and no file to hand over. The rungs are applied in the database function that serves a public card, so nothing at Private leaves the server — not its title, not its storage path, not its text. One caveat worth stating plainly: **Private hides an artifact from the card, not from the agent.** How much of it reaches the model is a separate setting (summary, raw, or both), and it has no "none". If the agent must not know something, set it to Off. ## Memory: what the agent knows [memory] → https://talenthunt.work/about#memory Memory is a result, not a form, so it has three states. With **no sources**, there is no editor: one line explaining that what the agent knows is written from what you bring in, and a button to Artifacts. With **sources but nothing built**, an invitation to build, listing the sources it will use. One button generates both documents. **After the first build**, two tabs: - **Profile** — `profile.md`, the narrative the chat answers from. Generated from your sources and shown as a diff against what is live; nothing changes until you apply it. - **Facts** — the working notes reconciled across your sources. Adding, re-placing or removing a source marks both documents stale, and the guide's second stage stops counting as done until you have reviewed the new suggestion. There is deliberately no blank-markdown escape hatch: the intended path is to import material and correct what came out. A narrative can exist and still say nothing — headings over "No current projects listed" — which is worse than none, because the page would greet visitors and every question the generator writes would be about the blanks. A profile whose narrative is mostly absence statements is treated as ungrounded: the chat does not call the model at all, and answers with a fixed note naming the owner and linking the contact form. ## The chat a visitor has [chat] → https://talenthunt.work/about#chat The visitor side of a profile, with no account required. **Starter questions.** A fresh chat opens with a greeting and four question chips drawn from a pool generated for that person (see [starter questions](#starter-questions)). After any answer, one pill — *Ask more about {name}* — opens three more. The pill retires when fewer than three unused questions are left. The four are seeded from the session id, so they do not shuffle under the cursor on a re-render, and nothing about the rotation is stored. **What the owner sees is the visitor's choice.** A picker in the composer offers four levels: **Everything** (full transcript, job description and your name), **Recap + job description**, **Recap only** (the summary, not your words), or **Nothing** (the owner learns only that someone visited). **A job description can be attached** and the chat answers against it — see [job descriptions](#contexts). A conversation can also be opened with a JD already pinned via `?jd=`; the link itself is the capability. **Contacting the owner** is a form in the chat, and it requires an account: the message is sent from our domain with your verified address as the reply-to, and the address is taken from your account rather than from the form. **Other affordances:** export the conversation as Markdown, share it, save the owner's contact card as a `.vcf` file, and resume an earlier conversation from a `?session=` link the owner can hand out. **Sign-in nudges.** Reading and chatting are free and anonymous. Sign-up is asked for at specific moments — a few messages in, attaching a JD, exporting, setting visibility, contacting the owner — and skipping is always possible until the message count runs well past the first ask. **Rate limit:** 30 chat requests per IP per five minutes, and four recap generations per person per hour. ## Starter questions [starter-questions] The chips are generated per profile, not per visit, and stored as a pool of up to eight. Generation is two model passes, because a model asked to write questions and judge whether its own questions are answerable is not a good judge of the second part: a writer produces twelve candidates, a mechanical filter drops any that omit the owner's first name or use a pronoun for them, and a second model checks each remaining one against the narrative. The rules those prompts enforce are worth knowing, because they are product decisions rather than style: - **Answerable means the document states the answer**, not that it mentions the subject. Questions about motive ("what made X decide") and about the future ("what is next") are named as failures — a CV-shaped document records what happened. - **Every question names the owner**, and no question uses a pronoun for them. A profile does not state anyone's gender, and a question that guesses one guesses on the owner's behalf. - **Nothing the owner would have to defend** — layoffs, departures, disputes, gaps, failures. - **Nothing about a job application**, including the fact that one exists. Application material is usually attached as a private artifact, which hides it from the card but not from the agent. A profile with no generated pool falls back to eight generic openers with the owner's name filled in. A profile whose narrative fails the grounding test gets no chips at all. **A job description retunes them.** The pool is about the person, but a visitor who arrived holding a role wants to ask about the fit. So whenever a job description becomes the chat's context — pasted or uploaded, opened through a `?jd=` link, or picked from the library — the chips are replaced by three or four written against that description instead. They still name the owner, and they are written fresh each time rather than cached: an edited description gets questions about what it says now, not what it said the first time anyone opened it. Nothing waits on this. The page renders with the profile's own chips and swaps them a moment later, and if the generation fails or comes back empty the profile chips simply stay — a visitor who never saw the swap has lost nothing. The swap replaces the pool rather than adding to it, so the *Ask more about {name}* pill hands out the remaining JD questions too. Three or four of them is about one reveal, which is the intended shape: once the conversation is about a specific role, the person-shaped openers are no longer the questions worth offering. Starting a new conversation brings the profile's own pool back. The grounding rule is checked first and is not overridden: a profile whose narrative says nothing shows no chips, with or without a job description. ## Importing from LinkedIn [linkedin-import] → https://talenthunt.work/about#linkedin-import Signing in with LinkedIn pulls the public profile — positions, education, headline — and the avatar, with no copy-paste. The avatar is copied into our own storage, because LinkedIn's CDN URLs expire in about thirty days. The import **only adds**. Nothing that came from anywhere else is overwritten, and the imported payload lands as an artifact, so it can be edited, hidden or replaced like any other. Anyone who signed up with email or Google can trigger the same import later from Artifacts. If two accounts claim the same LinkedIn identity, both are flagged for manual review rather than resolved automatically. ## Job descriptions [contexts] → https://talenthunt.work/about#jd A job description turns the same chat into two different tools: - **As the owner** — compare your profile against the JD, see what is missing, get told which artifact would answer it. - **As a reader** — paste the role you are hiring for and ask how this person maps to it; the answer cites the material it used. JDs are saved to a library, so a description is pasted once and reused. Upload accepts the same document formats as artifacts, alongside plain paste, and a detector fills in the title and company. The active JD shows in a sticky bar above the chat, and its full text is one click away. Studio → Job descriptions manages the whole set, including the ones visitors brought to your chats. Attaching a JD requires sign-in; opening a chat through a `?jd=` link does not. An attached JD also retunes the chat's opening chips to that role — see [starter questions](#starter-questions). ## Chat history and recaps [chat-history] → https://talenthunt.work/about#chat-history Studio → Chat history is every conversation, in three groups: **Chats with me** (visitors), **Chats by me** (conversations you had with other people's profiles), and **My self-audit** (your own tests of your own page). A conversation opens as a header identifying the visitor, then a **recap**, then the transcript, then the job description if there was one, collapsed. Recaps are generated on demand. Regenerating one waits until at least two further messages of your own have been sent — a recap of a conversation that has not moved would be the same recap. They are written differently depending on whose side you are on — owner, visitor, or your own self-audit. Visitors who chose to be summarised rather than quoted appear here as a recap only, and for those who chose "Nothing" there is no recap affordance at all. Each conversation carries a link that continues it, which is what the notification emails point at. ## Statistics [statistics] → https://talenthunt.work/about#statistics _Status: partly built — the limits are stated in this section._ Studio → Statistics shows conversations on your profile: a count for the last thirty days and four weekly bars. **Views and contact reveals are shown as zero, because nothing counts them yet.** There is no view-tracking table; the numbers are placeholders in the interface until there is. Conversation counts are real and are per brand. Statistics counts *every* session on your profile, our own team's visits included. That is deliberate — the number is yours. The internal-traffic exclusions apply to notification emails and product analytics, not to what an owner sees about their own page. ## Sharing [sharing] → https://talenthunt.work/about#sharing _Status: partly built — the limits are stated in this section._ Studio → Sharing exists because a link travels badly on its own. Five pieces: - **The link**, with a Copy that adds campaign parameters so landings can be attributed. - **The channels** — WhatsApp, Telegram, LinkedIn, X and email, each opening with the intro text already written and the link already tagged. - **A QR code**, downloadable as a PNG for a slide, a badge or a business card. - **Intro templates** for LinkedIn and DMs — editable, first-person, saved as you type. - **An email signature** — a real formatted block with name, title, a call to action and a tagline, not a raw URL. - **Resume blocks** — three variants to paste into a CV, for the copy of the link that travels as a file. The same channels and QR are in the Share dialog on the public page, which the profile card's bottom bar opens at any width, and the chat header opens too once the chat is on screen. Where the browser has a system share sheet, a "Share…" button offers it. **"Embed on my site" is visible but not built** — it is marked coming soon in the interface, and waits on a card-plus-chat widget. ## Account [account] → https://talenthunt.work/about#account Studio → Account holds what belongs to the person rather than to one profile, across four tabs. **Name & username.** Your sign-in email, your display name, your username, and an optional auto-derived long username. Also the danger zone: deleting an account sends the team a request, because deletions are handled by hand for now. **Contacts.** Email, phone and messenger channels, each with its own ladder per brand: **Off**, **Reveal** (hidden until the visitor asks) or **Always**. One channel can be marked primary, and up to four become the card's quick-action buttons. Today Reveal hands the value over exactly as Always does — the gate is built but deliberately not enforced while traffic is low. **Identity verification.** Run through didit, our verification partner, in a new tab: a government-issued photo ID, about a minute. Only the verified status is ever public — never the document details. Where the partner is not configured, the tab says verification is coming soon. **Billing.** A shared payment instrument for both brands. Nothing is charged today (see [pricing](#pricing)); the tab reports whether a card is on file. Social links are a hidden section here for now — they are ordinary link artifacts tagged as social, and they will resurface with Artifacts' own socials type. ## Prompts (admin only) [prompts] Studio → Prompts is a browser and editor for the system prompts — the chat's own prompt, the narrative and facts generators, the starter-question writer and its checker, and the per-brand variants of each. The prompt rows in the database are authoritative; the repository holds no copy of them. Only accounts with the admin role see the section, and the endpoint behind it re-checks that on every call — a hidden nav item is not access control. It is listed here because it exists, not because it is a feature anyone else can use. ## Your URL and changing your username [usernames] → https://talenthunt.work/about#slugs Your public URL is `talenthunt.work/{username}`. Usernames are 2–30 characters, lowercase letters, digits and single dashes; six characters and up are self-serve, and 2–5 are premium. Two timers protect recruiter links that are already in the wild: - **90 days between free renames**, counted from your last release. - **365 days of reservation on a released username**, so nobody else can pick it up and inherit traffic meant for you. You can always take your own one back. The namespace is shared with Work Identity: a username claimed on either brand is unavailable on the other. Some names are permanently reserved — app routes, brand names, and a handful of terms we do not sell. ## Premium usernames [premium-handles] → https://talenthunt.work/about#premium-handles Short usernames are a separate paid path, and a reservation rather than a rename — so they are not subject to the 90-day cooldown. Early-bird prices are half the launch price and are locked when reserved: five characters $10, four $50, three $250, two $2,500. Two- and three-character handles carry a bundled Pro-Recruiter plan on top. Approval is manual. Requesting one holds the name for ten days while it is reviewed. ## Emails talenthunt sends you [emails] → https://talenthunt.work/about#emails Three, all to owners, none to visitors. **Welcome**, once, right after signup: your live profile link and four steps — complete the card, add your career material, test the chat, share it. **Your first visitor**, once ever, when a real conversation happens on your page for the first time. The questions are the payload: the mail carries what was actually asked, up to five questions, with the visitor's name when they shared it. **A daily digest** after that, one message per closed day, listing the conversations that qualified. A conversation qualifies at two visitor turns of which at least one was typed rather than tapped from a chip — one "hi" is not news. The first-visitor mail and the digest also carry a short product tip at the end — one thing your profile can do, with a link to the screen that does it. At most one tip a week, never the same one twice, and the welcome mail carries none because its four steps already say what the first tips would have. A tip is a tail, not the message: when there is none left to send, or sending one would repeat the topic you just had, the mail goes without it. Times are printed in your own timezone, reported once by your browser when you open the Studio, and in UTC when we do not know it. Nothing runs while a visitor is talking: a worker sweeps closed windows, so notifications never cost the reader latency. Our own team's visits are excluded from these emails, though not from your Statistics. Every one of them ends with the same footer: the wordmark, a line offering Copylove for questions about the product, the address the mail went to and why, and who sends it — WIP Solutions Inc., a Delaware corporation. **There is no unsubscribe link yet, and the footer says so** rather than showing one that does nothing: "Don't want emails like this — reply 'Stop'." A reply reaching us is read by a person and acted on by hand. That is a real gap, not a design choice, and it is the thing a weekly mailing would have to close first. ## Privacy and data [privacy] → https://talenthunt.work/about#privacy You decide what is public. Anything at Link or Download on the card is visible to anyone with the URL and indexable by search engines and AI crawlers — that is the point of the product. Anything Off or Private never leaves the server as content: the public read filters it in the database. A profile is public only once it is listed and consent is recorded; the sitemap and the public card follow the same rule, so an unfinished signup advertises nothing. Conversations are stored so owners can review what was asked, subject to the visibility the visitor chose. Data is not resold and is not used to train third-party models. Product analytics run on PostHog at the scope you would expect — page views and basic interaction events. Verification documents are never shown to anyone; only the resulting status is. Local development and preview deployments write no conversation rows and send no mail, so testing the product cannot file a conversation somebody never had. ## For AI agents [agents] → https://talenthunt.work/about#agents - `GET /{username}` — server-rendered HTML with Schema.org `Person` JSON-LD in the head: `name`, `url`, `mainEntityOfPage`, plus `jobTitle`, `description`, `image` and `sameAs` (LinkedIn) when available. - `POST /api/chat` — body `{ "slug": "", "messages": [{ "role": "user", "content": "…" }] }`. The reply streams back as plain text. No auth is needed for a public profile. Rate-limited to 30 requests per IP per five minutes. `messages` is the whole conversation so far; a single-message array is a valid first turn. - Include a job description in the message content to get JD-aware answers. - `/robots.txt` names the major AI crawlers and search agents explicitly — OpenAI, Anthropic, Perplexity, Google-Extended, Applebot-Extended, CCBot, cohere-ai, Bytespider, Diffbot, Amazonbot among them — and disallows only the signed-in and API paths. It is the authoritative list. - `/sitemap.xml` lists every public profile plus the public pages. - Answers are grounded in the owner's own material. A profile whose owner has written nothing answers with a fixed note and a contact link rather than a guess. ## Pricing [pricing] → https://talenthunt.work/about#pricing talenthunt is always free for job seekers, with no card required, and that part does not change. Usage-based pricing for recruiters comes later; while the open beta runs it is free for them too. Accounts are not split by role, so the free tier is built around job seekers first — and signing up now locks in a substantial discount on whatever is introduced later. The only thing priced today is a premium short username, and that is a one-off reservation reviewed by hand. ## Tech stack [tech] Next.js (App Router) · React · TypeScript · Tailwind CSS · Supabase (auth, Postgres, storage) · Anthropic Claude for every model call · Resend for mail · PostHog for analytics · didit for identity verification. ## About talenthunt and the name Copylove [talenthunt] → https://talenthunt.work/about#talenthunt talenthunt is a visibility platform for job-seekers, where verifiable work history, references and reputation live. Copylove is the agent that acts as the conversational front door to one person's story, for human recruiters and AI sourcing agents alike. The name is a memorial. `/copylove` tells that story and is not a product page. Work Identity is the sibling brand on the same engine: one account, one username namespace, one shared pool of material, two profiles. Only talenthunt is live today. ## Getting help [help] → https://talenthunt.work/about#contact The support form is in the site footer and on the account page, and it reaches a human. Replying to any email we send works too. ## Key URLs - Home: https://talenthunt.work/ - How it works: https://talenthunt.work/about - FAQ: https://talenthunt.work/#faq - For recruiters: https://talenthunt.work/for-recruiters - Why the agent is called Copylove: https://talenthunt.work/copylove - Legal: https://talenthunt.work/legal - Sitemap: https://talenthunt.work/sitemap.xml - Full brief: https://talenthunt.work/llms-full.txt ## Featured profile - talenthunt founder: https://talenthunt.work/md