CINXE.COM

A Founder’s Guide to AI Fine-Tuning | Product Hunt

<!DOCTYPE html><html lang="en" data-sentry-component="RootLayout" data-sentry-source-file="layout.tsx"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1"/><link rel="stylesheet" href="/_next/static/css/8f719edb11eed1a0.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/d5e9c100ec07c291.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/0bee508d3bad07c8.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/c99d6c2024146960.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/4afdd19ce6c2ffda.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/45be9f74b83be42e.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/bf9552dc979224e1.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/886a1217ff9fd009.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/6f0fd2191815f922.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/b0e0dd11aa1ac818.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-cfdef94efa45d47a.js"/><script src="/_next/static/chunks/52774a7f-6669686f43e90bd5.js" async=""></script><script src="/_next/static/chunks/fd9d1056-9af7b3142eb9eff3.js" async=""></script><script src="/_next/static/chunks/13326-c5fdf3cfd9b23ad7.js" async=""></script><script src="/_next/static/chunks/main-app-e9a52ec06e2ef464.js" async=""></script><script src="/_next/static/chunks/c16f53c3-48451ac2b1dbb4cf.js" async=""></script><script src="/_next/static/chunks/20921-7a96833f57c275e2.js" async=""></script><script src="/_next/static/chunks/99791-029fefa2b88e709e.js" async=""></script><script src="/_next/static/chunks/83785-230f48b890d5c9aa.js" async=""></script><script src="/_next/static/chunks/99485-049f8877fe3fd326.js" async=""></script><script src="/_next/static/chunks/20750-a86c83808da2a59a.js" async=""></script><script src="/_next/static/chunks/27834-5c78f4880616ba54.js" async=""></script><script src="/_next/static/chunks/53261-f5a2bb4c2cf1c00e.js" async=""></script><script src="/_next/static/chunks/38997-3ec4d552be6df75b.js" async=""></script><script src="/_next/static/chunks/33531-acabdae7789b7d36.js" async=""></script><script src="/_next/static/chunks/47931-b395de54841771b6.js" async=""></script><script src="/_next/static/chunks/50125-e28270261385c894.js" async=""></script><script src="/_next/static/chunks/82970-a7daac786c5af3dc.js" async=""></script><script src="/_next/static/chunks/42822-99f6529dd3dcc810.js" async=""></script><script src="/_next/static/chunks/75588-faf4b8cce7f62b7c.js" async=""></script><script src="/_next/static/chunks/72369-1e7864e9cf595161.js" async=""></script><script src="/_next/static/chunks/73882-86d296e7924d8950.js" async=""></script><script src="/_next/static/chunks/3842-a8176129994dc984.js" async=""></script><script src="/_next/static/chunks/1574-767209b786dd9ea5.js" async=""></script><script src="/_next/static/chunks/app/(main)/layout-debac8568c4d5c24.js" async=""></script><script src="/_next/static/chunks/42551-a0fa86bb9d6d8fd7.js" async=""></script><script src="/_next/static/chunks/app/(main)/not-found-fefe08edc4dfcd5c.js" async=""></script><script src="/_next/static/chunks/59793-66c731db89a93e2c.js" async=""></script><script src="/_next/static/chunks/53894-186a0b2de7ed77b4.js" async=""></script><script src="/_next/static/chunks/22429-69adeb18bda66f2d.js" async=""></script><script src="/_next/static/chunks/app/layout-c29e892b2aebc046.js" async=""></script><script src="/_next/static/chunks/app/(cards)/layout-84f2033be3b366db.js" async=""></script><script src="/_next/static/chunks/12103-257c54f0017a6619.js" async=""></script><script src="/_next/static/chunks/app/global-error-d77dd3563650f7c0.js" async=""></script><script src="/_next/static/chunks/16065-fb101c10cfdd889b.js" async=""></script><script src="/_next/static/chunks/49194-4af1f46f24e590e3.js" async=""></script><script src="/_next/static/chunks/31706-d405fcf06045e83c.js" async=""></script><script src="/_next/static/chunks/56679-6f28748363e55278.js" async=""></script><script src="/_next/static/chunks/61790-cd138e29ba47ce68.js" async=""></script><script src="/_next/static/chunks/67053-25d87194a55575d9.js" async=""></script><script src="/_next/static/chunks/22999-9e3c57ac7a8e2d2f.js" async=""></script><script src="/_next/static/chunks/49813-723a643f50dbb004.js" async=""></script><script src="/_next/static/chunks/40254-471542b69a0524eb.js" async=""></script><script src="/_next/static/chunks/20188-d958b7cbebf14580.js" async=""></script><script src="/_next/static/chunks/59319-2c585d144328c810.js" async=""></script><script src="/_next/static/chunks/33294-fc2fe72393298da6.js" async=""></script><script src="/_next/static/chunks/app/(main)/stories/%5Bslug%5D/page-13e8763f4ccc6b87.js" async=""></script><link rel="preload" href="https://www.googletagmanager.com/gtag/js?id=G-WZ46833KH9" as="script"/><link rel="preload" href="https://www.googletagmanager.com/gtm.js?id=G-WZ46833KH9" as="script"/><meta property="fb:app_id" content="1467820943460899" data-sentry-element="meta" data-sentry-source-file="layout.tsx"/><link rel="search" type="application/opensearchdescription+xml" title="ProductHunt" href="/osd.xml"/><meta name="theme-color" content="#ffffff"/><title> A Founder’s Guide to AI Fine-Tuning | Product Hunt</title><meta name="description" content="Product Hunt is a curation of the best new products, every day. Discover the latest mobile apps, websites, and technology products that everyone&#x27;s talking about."/><link rel="author" href="https://www.producthunt.com/@corbt"/><meta name="author" content="Kyle Corbitt"/><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"/><meta name="fb:app_id" content="1467820943460899"/><link rel="canonical" href="https://www.producthunt.com/stories/a-founder-s-guide-to-ai-fine-tuning"/><link rel="alternate" type="application/atom+xml" title="Product Hunt - All newest Products" href="https://www.producthunt.com/feed"/><meta property="og:title" content=" A Founder’s Guide to AI Fine-Tuning | Product Hunt"/><meta property="og:description" content="Product Hunt is a curation of the best new products, every day. Discover the latest mobile apps, websites, and technology products that everyone&#x27;s talking about."/><meta property="og:url" content="https://www.producthunt.com/stories/a-founder-s-guide-to-ai-fine-tuning"/><meta property="og:site_name" content="Product Hunt"/><meta property="og:locale" content="en_US"/><meta property="og:image" content="https://ph-files.imgix.net/2cd80df4-e3ff-43dd-8885-ad4a6b499b80.webp?auto=format&amp;fit=crop&amp;frame=1&amp;h=512&amp;w=1024"/><meta property="og:type" content="article"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@producthunt"/><meta name="twitter:creator" content="@corbt"/><meta name="twitter:title" content=" A Founder’s Guide to AI Fine-Tuning | Product Hunt"/><meta name="twitter:description" content="Product Hunt is a curation of the best new products, every day. Discover the latest mobile apps, websites, and technology products that everyone&#x27;s talking about."/><meta name="twitter:image" content="https://ph-files.imgix.net/2cd80df4-e3ff-43dd-8885-ad4a6b499b80.webp?auto=format&amp;fit=crop&amp;frame=1&amp;h=512&amp;w=1024"/><link rel="icon" href="https://ph-static.imgix.net/ph-favicon-brand-500.ico?auto=format"/><link rel="apple-touch-icon-precomposed" href="https://ph-static.imgix.net/ph-ios-icon.png?auto=format"/><link rel="chrome-webstore-item" href="https://producthunt.app.link/extension"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script><script>(window[Symbol.for("ApolloSSRDataTransport")] ??= []).push({"rehydrate":{":R1kq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":R9kq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":R268ptpkq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":Ra8ptpkq:":{"data":undefined,"loading":true,"networkStatus":1,"called":true},":R2e8ptpkq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":R2i8ptpkq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":Rgptpkq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":R19tpkq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":R1ptpkq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":R29tpkq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":R39tpkq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":Rd9tpkq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":Rl9tpkq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":R2pkq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":R3pkq:":{"data":{},"complete":false,"missing":"Dangling reference to missing Viewer object"},":R38ptpkq:":{"data":{"viewer":{"__typename":"Viewer","id":null,"email":null,"emailVerified":false,"isImpersonated":false,"analyticsIdentifyJson":{},"deviceType":"desktop","showCookiePolicy":false,"showCommentWarning":false,"showCaptcha":false,"showPhoneVerification":false,"isAdmin":false,"features":["ph_new_forum_threads_email","ph_visitors_online_register"],"notificationFeedItemsUnreadCount":0,"flashAlert":null,"notice":null,"otpRequiredFrom":null,"user":null,"abTestActiveParticipations":[],"visitStreak":{"__typename":"VisitStreak","id":"faef7bf1-391a-4dd6-bb55-1ef1af6aafdd","emoji":null,"duration":1},"recentLaunch":null,"intercomUserHash":null,"ifVisitedFromMobile":false,"newsletterSettings":{"__typename":"ViewerNewsletterSettings","hasNewsletterSubscription":false}}},"networkStatus":7},":R38ptpkqH1:":{"data":{"__typename":"Viewer","id":null,"email":null,"emailVerified":false,"isImpersonated":false,"analyticsIdentifyJson":{},"deviceType":"desktop","showCookiePolicy":false,"showCommentWarning":false,"showCaptcha":false,"showPhoneVerification":false,"isAdmin":false,"features":["ph_new_forum_threads_email","ph_visitors_online_register"],"notificationFeedItemsUnreadCount":0,"flashAlert":null,"notice":null,"otpRequiredFrom":null,"user":null,"abTestActiveParticipations":[],"visitStreak":{"__typename":"VisitStreak","id":"faef7bf1-391a-4dd6-bb55-1ef1af6aafdd","emoji":null,"duration":1},"recentLaunch":null,"intercomUserHash":null,"ifVisitedFromMobile":false,"newsletterSettings":{"__typename":"ViewerNewsletterSettings","hasNewsletterSubscription":false}},"complete":true,"missing":undefined},":R6fnnkptpkq:":{"data":{"viewer":{"__typename":"Viewer","id":null,"newsletterSettings":{"__typename":"ViewerNewsletterSettings","email":null,"hasDailyNewsletterSubscription":false,"hasWeeklyNewsletterSubscription":false,"hasDeeperLearningSubscription":false,"hasWeirdWideWebSubscription":false,"emailConfirmed":false},"user":null},"story":{"__typename":"AnthologiesStory","id":"13432","bodyHtml":"\u003ch2\u003eIntroduction\u003c/h2\u003e\u003cdiv\u003e\u003cstrong\u003eAbout the Author:\u003c/strong\u003e I’m \u003ca href=\"https://x.com/corbtt\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eKyle Corbitt\u003c/a\u003e, the founder and CEO of \u003ca href=\"https://openpipe.ai/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eOpenPipe\u003c/a\u003e. We make it easy to move from GPT-4 to a custom fine-tuned model that continuously improves based on your users’ feedback.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003eWho this is for\u003c/strong\u003e: You’re a busy founder or engineer building a GenAI-powered feature. You’ve heard about fine-tuning but don’t have deep ML expertise. You might already have a problem you think fine-tuning can solve (lower costs? higher quality?) or might just be getting ready for the future.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003eWhat you’ll learn:\u003c/strong\u003e\u003c/div\u003e\u003col\u003e\u003cli\u003eWhat is fine-tuning?\u003c/li\u003e\u003cli\u003eWhy fine-tune? What problems does it solve?\u003c/li\u003e\u003cli\u003eWhen is the right time to think about fine-tuning?\u003c/li\u003e\u003cli\u003eWhat tools and expertise do I need to be successful?\u003c/li\u003e\u003c/ol\u003e\u003ch2\u003eWhat is AI Fine-Tuning?\u003c/h2\u003e\u003cdiv\u003eFine-tuning is the process of steering model behavior by updating their actual weights, as opposed to prompting, which involves only rewriting the instructions or adding additional samples to the context. Compared to prompting, fine-tuning gives you much deeper and more nuanced control of a model’s behavior. On the other hand, when done incorrectly it can lead to conditions like “catastrophic forgetting” where the model actually gets much worse instead of better. Fine-tuning is a power tool!\u003c/div\u003e\u003ch2\u003eWhy Fine-Tune?\u003c/h2\u003e\u003cdiv\u003eModern frontier AI models are incredible. They can “zero-shot” many tasks like document classification, information extraction, chatbots and role-playing. However, they still have weaknesses. These include:\u003c/div\u003e\u003col\u003e\u003cli\u003eUnreliable adherence to instructions. For example, if you ask an LLM to create a summary that is under 50 words, it might still produce a 60+ word summary 20% of the time. This becomes even more true with instructions that are nuanced and subjective.\u003c/li\u003e\u003cli\u003eHigh costs for operations at scale. Current frontier model costs are low enough that they usually can be justified for realtime user interactions. But for large operations like sifting through millions of documents or scraping large parts of the web, they can quickly become cost prohibitive.\u003c/li\u003e\u003cli\u003eLatency that is too high for certain applications. If your app requires multiple rounds of LLM calls in eg. an agentic workflow, or near-realtime responses for a text-to-voice stream, frontier models may not respond fast enough provide a good experience.\u003c/li\u003e\u003c/ol\u003e\u003cdiv\u003eFine-tuning can help on all three of these dimensions simultaneously.\u003c/div\u003e\u003col\u003e\u003cli\u003eA good dataset leads to far greater reliability because the model is strongly conditioned to create outputs that correspond to your needs.\u003c/li\u003e\u003cli\u003eFine-tuned models are generally much smaller than generalist models. This leads to much lower inference costs (often a 10-100x improvement).\u003c/li\u003e\u003cli\u003eSince fine-tuned models are much smaller, they also can have much lower latency than large generalist models.\u003c/li\u003e\u003c/ol\u003e\u003cdiv\u003eThis effect is well illustrated on the graph below. The cost vs quality Pareto frontier for fine-tuned models is significantly more attractive than the one for prompted models alone.\u003c/div\u003e\u003cimg src=\"https://ph-files.imgix.net/24de114e-398a-4a28-ace7-5fed5b6a6484.webp?auto=compress\u0026amp;codec=mozjpeg\u0026amp;cs=strip\u0026amp;auto=format\" alt=\"\" /\u003e\u003cbr /\u003e\u003ch2\u003eWhen Should You Fine-Tune?\u003c/h2\u003e\u003cdiv\u003eCool, so is fine-tuning a panacea with no tradeoffs? Unfortunately not. There are some very good reasons why you should probably start with prompting.\u003c/div\u003e\u003col\u003e\u003cli\u003eFine-tuning specializes a model on a specific shape of input. But if you’re just starting off, you probably don’t know exactly what your input shape will look like! You need actual users using your system to see what inputs they will bring, so you can specialize on that.\u003c/li\u003e\u003cli\u003eFine-tuning does take some time and money (even if it’s minimal, as we’ll see below!). So it doesn’t make sense to reach for it until you’ve exhausted the limits of easier approaches like prompt engineering.\u003c/li\u003e\u003c/ol\u003e\u003cdiv\u003eThe typical flow we see come up frequently is to prompt engineer first, and then fine-tune only when you can’t wring more gains out of prompting.\u003c/div\u003e\u003col\u003e\u003cli\u003ePrototype Quickly with GPT-4: When exploring an idea or seeking product-market fit, using an off-the-shelf model like GPT-4 makes sense. You can iterate rapidly without worrying about custom infrastructure.\u003c/li\u003e\u003cli\u003eScale with Fine-Tuning: Once you’ve identified your core use case and are ready to scale, fine-tuning becomes valuable. A fine-tuned model can be:\u003c/li\u003e\u003c/ol\u003e\u003cdiv\u003e\u003cstrong\u003eCheaper\u003c/strong\u003e: Optimized for your specific tasks, reducing overhead.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003eFaster\u003c/strong\u003e: Streamlined responses improve speed.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003eMore Consistent\u003c/strong\u003e: Less variance in output, enhancing predictability.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003eMore Controllable:\u003c/strong\u003e You can define exactly how your AI responds, making it a better fit for your users.\u003c/div\u003e\u003cimg src=\"https://ph-files.imgix.net/c28420db-e719-4774-ada1-5c37621b0207.webp?auto=compress\u0026amp;codec=mozjpeg\u0026amp;cs=strip\u0026amp;auto=format\" alt=\"\" /\u003e\u003cbr /\u003e\u003ch2\u003eHow to Fine-Tune\u003c/h2\u003e\u003cdiv\u003eFine-tuning might seem daunting, but it can be broken down into four high-level steps:\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003e1. Prepare Your Data\u003c/strong\u003e: Start by saving interactions from your application—these could be customer support queries, user feedback, or prompts and responses from prototyping. This data forms the foundation of your fine-tuning dataset. Tools like \u003ca href=\"https://openpipe.ai/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eOpenPipe\u003c/a\u003e or observability providers like \u003ca href=\"https://www.producthunt.com/products/helicone-ai\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eHelicone\u003c/a\u003e and \u003ca href=\"https://www.producthunt.com/products/ai-investments-credits-finder\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003ePortkey\u003c/a\u003e can assist with data collection.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003e2. Train Your Model: \u003c/strong\u003eYou can use open-source tools (e.g. \u003ca href=\"https://www.producthunt.com/products/unsloth\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eUnsloth\u003c/a\u003e, \u003ca href=\"https://www.producthunt.com/products/axolotl\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eAxolotl\u003c/a\u003e or \u003ca href=\"https://github.com/hiyouga/LLaMA-Factory\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eLLaMA-Factory\u003c/a\u003e) for self-hosted setups, or opt for hosted platforms like \u003ca href=\"https://www.producthunt.com/products/openpipe\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eOpenPipe\u003c/a\u003e, \u003ca href=\"https://www.producthunt.com/products/together-ai\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eTogether\u003c/a\u003e, or \u003ca href=\"https://www.producthunt.com/products/fireworks\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eFireworks\u003c/a\u003e for a more managed experience.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003e3. Evaluate Performance\u003c/strong\u003e: Evaluation occurs in two loops:\u003c/div\u003e\u003cul\u003e\u003cli\u003e\u003cstrong\u003eInner Loop: Ra\u003c/strong\u003epid, iterative evaluations using a “golden dataset” or having an LLM act as a judge.\u003c/li\u003e\u003cli\u003e\u003cstrong\u003eOuter Loop\u003c/strong\u003e: Business metrics—how well is the fine-tuned model performing in terms of user satisfaction and task success?\u003c/li\u003e\u003c/ul\u003e\u003cdiv\u003e\u003cstrong\u003e4. Deploy:\u003c/strong\u003e Depending on your technical capabilities, you can either self-host your fine-tuned model (using tools like \u003ca href=\"https://github.com/vllm-project/vllm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003evLLM\u003c/a\u003e or \u003ca href=\"https://github.com/NVIDIA/TensorRT-LLM\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eTensorRT-LLM\u003c/a\u003e) or use hosted options like OpenPipe, \u003ca href=\"https://aws.amazon.com/bedrock/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eAWS Bedrock\u003c/a\u003e, Together or Fireworks.\u003c/div\u003e\u003cdiv\u003eAll of these are achievable by a reasonably competent software engineer with no specific training in data science or machine learning. We’ve seen organizations go from a prompt to a fine-tuned model with less than an hour of engineering time, if they were already collecting their data!\u003c/div\u003e\u003ch2\u003eIs Fine-Tuning Right for You?\u003c/h2\u003e\u003cdiv\u003eIf you’ve reached the limits of prompt engineering and your AI-powered feature could still be improved by lower costs, higher reliability or lower latency, fine-tuning may be able to help a lot!\u003c/div\u003e","description":"","headerImageUuid":"2cd80df4-e3ff-43dd-8885-ad4a6b499b80.webp","publishedAt":"2024-10-11T09:33:04-07:00","requiresLogin":false,"slug":"a-founder-s-guide-to-ai-fine-tuning","title":"A Founder’s Guide to AI Fine-Tuning","url":"https://www.producthunt.com/stories/a-founder-s-guide-to-ai-fine-tuning","authorName":"","authorUrl":"","author":{"__typename":"User","id":"970351","name":"Kyle Corbitt","username":"corbt","avatarUrl":"https://ph-avatars.imgix.net/970351/original.jpeg"},"productMentions":[],"moreStories":[{"__typename":"AnthologiesStory","id":"13927","title":"Why you should build tiny viral apps","slug":"building-tiny-viral-apps","headerImageUuid":"c3256824-b334-47b5-b998-a831fee5f4f7.png","minsToRead":5,"category":{"__typename":"Category","name":"How To","slug":"how_to"},"author":{"__typename":"User","id":"6157400","name":"Zubin Koticha","username":"zubin_koticha2"},"authorName":"","authorUrl":""},{"__typename":"AnthologiesStory","id":"13894","title":"The personal software revolution: Our interview with Replit CEO Amjad Masad","slug":"the-personal-software-revolution-2","headerImageUuid":"0e8916b2-ee26-4103-9f9c-d464764285a1.jpeg","minsToRead":15,"category":{"__typename":"Category","name":"Interviews","slug":"interviews"},"author":{"__typename":"User","id":"7512242","name":"Sanjana Friedman","username":"sanjanaf"},"authorName":"","authorUrl":""},{"__typename":"AnthologiesStory","id":"13861","title":"How we launch at Supabase","slug":"how-we-launch-at-supabase","headerImageUuid":"c4870826-3c62-402d-b133-6b7bf3ff9b8c.webp","minsToRead":15,"category":{"__typename":"Category","name":"How To","slug":"how_to"},"author":{"__typename":"User","id":"1401177","name":"Ant Wilson","username":"antwilson"},"authorName":"","authorUrl":""},{"__typename":"AnthologiesStory","id":"13828","title":"How to Ace a Product Demo","slug":"test-718bab32-fd3c-41a3-8cd6-4216295f3311","headerImageUuid":"db620624-fc84-4149-87ae-25918aa2b40a.jpeg","minsToRead":10,"category":{"__typename":"Category","name":"News","slug":"news"},"author":{"__typename":"User","id":"7512242","name":"Sanjana Friedman","username":"sanjanaf"},"authorName":"","authorUrl":""},{"__typename":"AnthologiesStory","id":"13762","title":"The ultimate guide to willingness-to-pay","slug":"the-ultimate-guide-to-willingness-to-pay","headerImageUuid":"ef5cdea8-582a-4ace-8c3b-3d4cdee5c17b.png","minsToRead":15,"category":{"__typename":"Category","name":"How To","slug":"how_to"},"author":{"__typename":"User","id":"478540","name":"Lenny Rachitsky","username":"lenny_rachitsky"},"authorName":"","authorUrl":""},{"__typename":"AnthologiesStory","id":"13729","title":"How to Improve Your AI Agent: A Guide for Founders","slug":"how-to-improve-your-ai-agent-a-guide-for-founders","headerImageUuid":"bac80123-0177-4c45-8123-6e5fa1713bb7.png","minsToRead":6,"category":{"__typename":"Category","name":"How To","slug":"how_to"},"author":{"__typename":"User","id":"7725267","name":"Pranav Raja","username":"pranav_raja"},"authorName":"","authorUrl":""},{"__typename":"AnthologiesStory","id":"13663","title":"How to Detect AI Content with Keystroke Tracking","slug":"how-to-detect-ai-content-with-keystroke-tracking","headerImageUuid":"3bc04edd-4ce9-4ae3-8ce1-f7a795fb326d.png","minsToRead":3,"category":{"__typename":"Category","name":"How To","slug":"how_to"},"author":{"__typename":"User","id":"5149485","name":"matt hardy","username":"mdahardy"},"authorName":"Mathew Hardy","authorUrl":""},{"__typename":"AnthologiesStory","id":"13630","title":"An Initially Failed PH Launch Turned Around to Get Us 850+ Paid Subscribers","slug":"initially-failed-ph-launch-turned-around-to-get-us-850-paid-subscribers","headerImageUuid":"3c43ae0c-75e2-45b7-8e83-977c67ab4c92.webp","minsToRead":3,"category":{"__typename":"Category","name":"Makers","slug":"makers"},"author":{"__typename":"User","id":"2713059","name":"Anton Osika","username":"antonosika"},"authorName":"","authorUrl":""}]}},"networkStatus":7},":R6fnnkptpkqH1:":{"data":{"viewer":{"__typename":"Viewer","id":null,"email":null,"emailVerified":false,"isImpersonated":false,"analyticsIdentifyJson":{},"deviceType":"desktop","showCookiePolicy":false,"showCommentWarning":false,"showCaptcha":false,"showPhoneVerification":false,"isAdmin":false,"features":["ph_new_forum_threads_email","ph_visitors_online_register"],"notificationFeedItemsUnreadCount":0,"flashAlert":null,"notice":null,"otpRequiredFrom":null,"user":null,"abTestActiveParticipations":[],"visitStreak":{"__typename":"VisitStreak","id":"faef7bf1-391a-4dd6-bb55-1ef1af6aafdd","emoji":null,"duration":1},"recentLaunch":null,"intercomUserHash":null,"ifVisitedFromMobile":false,"newsletterSettings":{"__typename":"ViewerNewsletterSettings","hasNewsletterSubscription":false}}},"networkStatus":7},":R18mfnnkptpkq:":{"data":undefined,"loading":true,"networkStatus":1,"called":true}},"events":[{"type":"started","options":{"skip":false,"fetchPolicy":"cache-first","query":"query Context{viewer{...UseCurrentUserFragment}}fragment ViewerNoticeFragment on Notice{type invite{id product{id slug}}makerSuggestion{id post{id slug}}dismissable{id isDismissed dismissableKey dismissableGroup}}fragment AbTestFragment on AbTestAssignment{name variant}fragment LaunchTipsFragment on Post{id canComment commentsCount featuredAt makerInviteUrl name url slug createdAt isMaker isHunter launchState shoutouts{id}}fragment UseCurrentUserFragment on Viewer{id email emailVerified isImpersonated analyticsIdentifyJson deviceType showCookiePolicy showCommentWarning showCaptcha showPhoneVerification isAdmin features notificationFeedItemsUnreadCount flashAlert notice{...ViewerNoticeFragment}otpRequiredFrom user{id avatarUrl isMaker name username}abTestActiveParticipations{...AbTestFragment}visitStreak{id emoji duration}recentLaunch{id scheduledAt ...LaunchTipsFragment}intercomUserHash ifVisitedFromMobile newsletterSettings{hasNewsletterSubscription}}","notifyOnNetworkStatusChange":false,"nextFetchPolicy":undefined},"id":"2"},{"type":"started","options":{"variables":{"slug":"a-founder-s-guide-to-ai-fine-tuning"},"skip":false,"fetchPolicy":"cache-first","query":"query StoryShowPage($slug:String!){viewer{id ...RegistrationWallFragment}story(slug:$slug){id bodyHtml description headerImageUuid publishedAt requiresLogin slug title url authorName authorUrl author{id name username ...UserImage}productMentions{id slug name description}moreStories(limit:8){id ...StoryItem}}}fragment NewsletterIndexPageHeaderFragment on Viewer{id user{id name}newsletterSettings{email hasDailyNewsletterSubscription}}fragment NewsletterPreferenceFormPendingVerificationFragment on ViewerNewsletterSettings{email emailConfirmed}fragment NewsletterPreferenceFormFragment on Viewer{id newsletterSettings{hasDailyNewsletterSubscription hasWeeklyNewsletterSubscription hasDeeperLearningSubscription hasWeirdWideWebSubscription ...NewsletterPreferenceFormPendingVerificationFragment}}fragment RegistrationWallFragment on Viewer{id newsletterSettings{email}...NewsletterIndexPageHeaderFragment ...NewsletterPreferenceFormFragment}fragment UserImage on User{id name username avatarUrl}fragment StoryItem on AnthologiesStory{id title slug headerImageUuid minsToRead category{name slug}author{id name username}authorName authorUrl}","notifyOnNetworkStatusChange":false,"nextFetchPolicy":undefined},"id":"3"},{"type":"data","id":"2","result":{"data":{"viewer":{"__typename":"Viewer","id":null,"email":null,"emailVerified":false,"isImpersonated":false,"analyticsIdentifyJson":{},"deviceType":"desktop","showCookiePolicy":false,"showCommentWarning":false,"showCaptcha":false,"showPhoneVerification":false,"isAdmin":false,"features":["ph_new_forum_threads_email","ph_visitors_online_register"],"notificationFeedItemsUnreadCount":0,"flashAlert":null,"notice":null,"otpRequiredFrom":null,"user":null,"abTestActiveParticipations":[],"visitStreak":{"__typename":"VisitStreak","id":"faef7bf1-391a-4dd6-bb55-1ef1af6aafdd","emoji":null,"duration":1},"recentLaunch":null,"intercomUserHash":null,"ifVisitedFromMobile":false,"newsletterSettings":{"__typename":"ViewerNewsletterSettings","hasNewsletterSubscription":false}}}}},{"type":"complete","id":"2"},{"type":"data","id":"3","result":{"data":{"viewer":{"__typename":"Viewer","id":null,"newsletterSettings":{"__typename":"ViewerNewsletterSettings","email":null,"hasDailyNewsletterSubscription":false,"hasWeeklyNewsletterSubscription":false,"hasDeeperLearningSubscription":false,"hasWeirdWideWebSubscription":false,"emailConfirmed":false},"user":null},"story":{"__typename":"AnthologiesStory","id":"13432","bodyHtml":"\u003ch2\u003eIntroduction\u003c/h2\u003e\u003cdiv\u003e\u003cstrong\u003eAbout the Author:\u003c/strong\u003e I’m \u003ca href=\"https://x.com/corbtt\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eKyle Corbitt\u003c/a\u003e, the founder and CEO of \u003ca href=\"https://openpipe.ai/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eOpenPipe\u003c/a\u003e. We make it easy to move from GPT-4 to a custom fine-tuned model that continuously improves based on your users’ feedback.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003eWho this is for\u003c/strong\u003e: You’re a busy founder or engineer building a GenAI-powered feature. You’ve heard about fine-tuning but don’t have deep ML expertise. You might already have a problem you think fine-tuning can solve (lower costs? higher quality?) or might just be getting ready for the future.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003eWhat you’ll learn:\u003c/strong\u003e\u003c/div\u003e\u003col\u003e\u003cli\u003eWhat is fine-tuning?\u003c/li\u003e\u003cli\u003eWhy fine-tune? What problems does it solve?\u003c/li\u003e\u003cli\u003eWhen is the right time to think about fine-tuning?\u003c/li\u003e\u003cli\u003eWhat tools and expertise do I need to be successful?\u003c/li\u003e\u003c/ol\u003e\u003ch2\u003eWhat is AI Fine-Tuning?\u003c/h2\u003e\u003cdiv\u003eFine-tuning is the process of steering model behavior by updating their actual weights, as opposed to prompting, which involves only rewriting the instructions or adding additional samples to the context. Compared to prompting, fine-tuning gives you much deeper and more nuanced control of a model’s behavior. On the other hand, when done incorrectly it can lead to conditions like “catastrophic forgetting” where the model actually gets much worse instead of better. Fine-tuning is a power tool!\u003c/div\u003e\u003ch2\u003eWhy Fine-Tune?\u003c/h2\u003e\u003cdiv\u003eModern frontier AI models are incredible. They can “zero-shot” many tasks like document classification, information extraction, chatbots and role-playing. However, they still have weaknesses. These include:\u003c/div\u003e\u003col\u003e\u003cli\u003eUnreliable adherence to instructions. For example, if you ask an LLM to create a summary that is under 50 words, it might still produce a 60+ word summary 20% of the time. This becomes even more true with instructions that are nuanced and subjective.\u003c/li\u003e\u003cli\u003eHigh costs for operations at scale. Current frontier model costs are low enough that they usually can be justified for realtime user interactions. But for large operations like sifting through millions of documents or scraping large parts of the web, they can quickly become cost prohibitive.\u003c/li\u003e\u003cli\u003eLatency that is too high for certain applications. If your app requires multiple rounds of LLM calls in eg. an agentic workflow, or near-realtime responses for a text-to-voice stream, frontier models may not respond fast enough provide a good experience.\u003c/li\u003e\u003c/ol\u003e\u003cdiv\u003eFine-tuning can help on all three of these dimensions simultaneously.\u003c/div\u003e\u003col\u003e\u003cli\u003eA good dataset leads to far greater reliability because the model is strongly conditioned to create outputs that correspond to your needs.\u003c/li\u003e\u003cli\u003eFine-tuned models are generally much smaller than generalist models. This leads to much lower inference costs (often a 10-100x improvement).\u003c/li\u003e\u003cli\u003eSince fine-tuned models are much smaller, they also can have much lower latency than large generalist models.\u003c/li\u003e\u003c/ol\u003e\u003cdiv\u003eThis effect is well illustrated on the graph below. The cost vs quality Pareto frontier for fine-tuned models is significantly more attractive than the one for prompted models alone.\u003c/div\u003e\u003cimg src=\"https://ph-files.imgix.net/24de114e-398a-4a28-ace7-5fed5b6a6484.webp?auto=compress\u0026amp;codec=mozjpeg\u0026amp;cs=strip\u0026amp;auto=format\" alt=\"\" /\u003e\u003cbr /\u003e\u003ch2\u003eWhen Should You Fine-Tune?\u003c/h2\u003e\u003cdiv\u003eCool, so is fine-tuning a panacea with no tradeoffs? Unfortunately not. There are some very good reasons why you should probably start with prompting.\u003c/div\u003e\u003col\u003e\u003cli\u003eFine-tuning specializes a model on a specific shape of input. But if you’re just starting off, you probably don’t know exactly what your input shape will look like! You need actual users using your system to see what inputs they will bring, so you can specialize on that.\u003c/li\u003e\u003cli\u003eFine-tuning does take some time and money (even if it’s minimal, as we’ll see below!). So it doesn’t make sense to reach for it until you’ve exhausted the limits of easier approaches like prompt engineering.\u003c/li\u003e\u003c/ol\u003e\u003cdiv\u003eThe typical flow we see come up frequently is to prompt engineer first, and then fine-tune only when you can’t wring more gains out of prompting.\u003c/div\u003e\u003col\u003e\u003cli\u003ePrototype Quickly with GPT-4: When exploring an idea or seeking product-market fit, using an off-the-shelf model like GPT-4 makes sense. You can iterate rapidly without worrying about custom infrastructure.\u003c/li\u003e\u003cli\u003eScale with Fine-Tuning: Once you’ve identified your core use case and are ready to scale, fine-tuning becomes valuable. A fine-tuned model can be:\u003c/li\u003e\u003c/ol\u003e\u003cdiv\u003e\u003cstrong\u003eCheaper\u003c/strong\u003e: Optimized for your specific tasks, reducing overhead.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003eFaster\u003c/strong\u003e: Streamlined responses improve speed.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003eMore Consistent\u003c/strong\u003e: Less variance in output, enhancing predictability.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003eMore Controllable:\u003c/strong\u003e You can define exactly how your AI responds, making it a better fit for your users.\u003c/div\u003e\u003cimg src=\"https://ph-files.imgix.net/c28420db-e719-4774-ada1-5c37621b0207.webp?auto=compress\u0026amp;codec=mozjpeg\u0026amp;cs=strip\u0026amp;auto=format\" alt=\"\" /\u003e\u003cbr /\u003e\u003ch2\u003eHow to Fine-Tune\u003c/h2\u003e\u003cdiv\u003eFine-tuning might seem daunting, but it can be broken down into four high-level steps:\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003e1. Prepare Your Data\u003c/strong\u003e: Start by saving interactions from your application—these could be customer support queries, user feedback, or prompts and responses from prototyping. This data forms the foundation of your fine-tuning dataset. Tools like \u003ca href=\"https://openpipe.ai/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eOpenPipe\u003c/a\u003e or observability providers like \u003ca href=\"https://www.producthunt.com/products/helicone-ai\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eHelicone\u003c/a\u003e and \u003ca href=\"https://www.producthunt.com/products/ai-investments-credits-finder\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003ePortkey\u003c/a\u003e can assist with data collection.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003e2. Train Your Model: \u003c/strong\u003eYou can use open-source tools (e.g. \u003ca href=\"https://www.producthunt.com/products/unsloth\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eUnsloth\u003c/a\u003e, \u003ca href=\"https://www.producthunt.com/products/axolotl\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eAxolotl\u003c/a\u003e or \u003ca href=\"https://github.com/hiyouga/LLaMA-Factory\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eLLaMA-Factory\u003c/a\u003e) for self-hosted setups, or opt for hosted platforms like \u003ca href=\"https://www.producthunt.com/products/openpipe\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eOpenPipe\u003c/a\u003e, \u003ca href=\"https://www.producthunt.com/products/together-ai\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eTogether\u003c/a\u003e, or \u003ca href=\"https://www.producthunt.com/products/fireworks\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eFireworks\u003c/a\u003e for a more managed experience.\u003c/div\u003e\u003cdiv\u003e\u003cstrong\u003e3. Evaluate Performance\u003c/strong\u003e: Evaluation occurs in two loops:\u003c/div\u003e\u003cul\u003e\u003cli\u003e\u003cstrong\u003eInner Loop: Ra\u003c/strong\u003epid, iterative evaluations using a “golden dataset” or having an LLM act as a judge.\u003c/li\u003e\u003cli\u003e\u003cstrong\u003eOuter Loop\u003c/strong\u003e: Business metrics—how well is the fine-tuned model performing in terms of user satisfaction and task success?\u003c/li\u003e\u003c/ul\u003e\u003cdiv\u003e\u003cstrong\u003e4. Deploy:\u003c/strong\u003e Depending on your technical capabilities, you can either self-host your fine-tuned model (using tools like \u003ca href=\"https://github.com/vllm-project/vllm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003evLLM\u003c/a\u003e or \u003ca href=\"https://github.com/NVIDIA/TensorRT-LLM\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eTensorRT-LLM\u003c/a\u003e) or use hosted options like OpenPipe, \u003ca href=\"https://aws.amazon.com/bedrock/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eAWS Bedrock\u003c/a\u003e, Together or Fireworks.\u003c/div\u003e\u003cdiv\u003eAll of these are achievable by a reasonably competent software engineer with no specific training in data science or machine learning. We’ve seen organizations go from a prompt to a fine-tuned model with less than an hour of engineering time, if they were already collecting their data!\u003c/div\u003e\u003ch2\u003eIs Fine-Tuning Right for You?\u003c/h2\u003e\u003cdiv\u003eIf you’ve reached the limits of prompt engineering and your AI-powered feature could still be improved by lower costs, higher reliability or lower latency, fine-tuning may be able to help a lot!\u003c/div\u003e","description":"","headerImageUuid":"2cd80df4-e3ff-43dd-8885-ad4a6b499b80.webp","publishedAt":"2024-10-11T09:33:04-07:00","requiresLogin":false,"slug":"a-founder-s-guide-to-ai-fine-tuning","title":"A Founder’s Guide to AI Fine-Tuning","url":"https://www.producthunt.com/stories/a-founder-s-guide-to-ai-fine-tuning","authorName":"","authorUrl":"","author":{"__typename":"User","id":"970351","name":"Kyle Corbitt","username":"corbt","avatarUrl":"https://ph-avatars.imgix.net/970351/original.jpeg"},"productMentions":[],"moreStories":[{"__typename":"AnthologiesStory","id":"13927","title":"Why you should build tiny viral apps","slug":"building-tiny-viral-apps","headerImageUuid":"c3256824-b334-47b5-b998-a831fee5f4f7.png","minsToRead":5,"category":{"__typename":"Category","name":"How To","slug":"how_to"},"author":{"__typename":"User","id":"6157400","name":"Zubin Koticha","username":"zubin_koticha2"},"authorName":"","authorUrl":""},{"__typename":"AnthologiesStory","id":"13894","title":"The personal software revolution: Our interview with Replit CEO Amjad Masad","slug":"the-personal-software-revolution-2","headerImageUuid":"0e8916b2-ee26-4103-9f9c-d464764285a1.jpeg","minsToRead":15,"category":{"__typename":"Category","name":"Interviews","slug":"interviews"},"author":{"__typename":"User","id":"7512242","name":"Sanjana Friedman","username":"sanjanaf"},"authorName":"","authorUrl":""},{"__typename":"AnthologiesStory","id":"13861","title":"How we launch at Supabase","slug":"how-we-launch-at-supabase","headerImageUuid":"c4870826-3c62-402d-b133-6b7bf3ff9b8c.webp","minsToRead":15,"category":{"__typename":"Category","name":"How To","slug":"how_to"},"author":{"__typename":"User","id":"1401177","name":"Ant Wilson","username":"antwilson"},"authorName":"","authorUrl":""},{"__typename":"AnthologiesStory","id":"13828","title":"How to Ace a Product Demo","slug":"test-718bab32-fd3c-41a3-8cd6-4216295f3311","headerImageUuid":"db620624-fc84-4149-87ae-25918aa2b40a.jpeg","minsToRead":10,"category":{"__typename":"Category","name":"News","slug":"news"},"author":{"__typename":"User","id":"7512242","name":"Sanjana Friedman","username":"sanjanaf"},"authorName":"","authorUrl":""},{"__typename":"AnthologiesStory","id":"13762","title":"The ultimate guide to willingness-to-pay","slug":"the-ultimate-guide-to-willingness-to-pay","headerImageUuid":"ef5cdea8-582a-4ace-8c3b-3d4cdee5c17b.png","minsToRead":15,"category":{"__typename":"Category","name":"How To","slug":"how_to"},"author":{"__typename":"User","id":"478540","name":"Lenny Rachitsky","username":"lenny_rachitsky"},"authorName":"","authorUrl":""},{"__typename":"AnthologiesStory","id":"13729","title":"How to Improve Your AI Agent: A Guide for Founders","slug":"how-to-improve-your-ai-agent-a-guide-for-founders","headerImageUuid":"bac80123-0177-4c45-8123-6e5fa1713bb7.png","minsToRead":6,"category":{"__typename":"Category","name":"How To","slug":"how_to"},"author":{"__typename":"User","id":"7725267","name":"Pranav Raja","username":"pranav_raja"},"authorName":"","authorUrl":""},{"__typename":"AnthologiesStory","id":"13663","title":"How to Detect AI Content with Keystroke Tracking","slug":"how-to-detect-ai-content-with-keystroke-tracking","headerImageUuid":"3bc04edd-4ce9-4ae3-8ce1-f7a795fb326d.png","minsToRead":3,"category":{"__typename":"Category","name":"How To","slug":"how_to"},"author":{"__typename":"User","id":"5149485","name":"matt hardy","username":"mdahardy"},"authorName":"Mathew Hardy","authorUrl":""},{"__typename":"AnthologiesStory","id":"13630","title":"An Initially Failed PH Launch Turned Around to Get Us 850+ Paid Subscribers","slug":"initially-failed-ph-launch-turned-around-to-get-us-850-paid-subscribers","headerImageUuid":"3c43ae0c-75e2-45b7-8e83-977c67ab4c92.webp","minsToRead":3,"category":{"__typename":"Category","name":"Makers","slug":"makers"},"author":{"__typename":"User","id":"2713059","name":"Anton Osika","username":"antonosika"},"authorName":"","authorUrl":""}]}}}},{"type":"complete","id":"3"}]})</script></head><body class="theme-mirror bg-primary"><div id="root-container" class="light"><div class="theme-mirror"><header class="w-full border-b-2 border-gray-200 bg-primary dark:border-gray-800 sticky top-0 z-20 " data-sentry-component="DesktopHeader" data-sentry-source-file="index.tsx"><div class="mx-auto grid max-w-layout grid-cols-[1fr_2fr_1fr] items-center gap-2 bg-primary px-6 py-5 sm:grid-cols-[auto_1fr_auto] lg:px-0"><div class="flex flex-row items-center gap-6 md:gap-8"><a aria-label="Product Hunt Logo" data-sentry-element="Link" data-sentry-source-file="index.tsx" href="/"><img loading="lazy" srcSet="https://ph-static.imgix.net/golden-kitty/2024/PHLogoDark.png?auto=compress&amp;codec=mozjpeg&amp;cs=strip&amp;auto=format&amp;w=40&amp;h=40&amp;fit=max&amp;frame=1&amp;dpr=1 1x, https://ph-static.imgix.net/golden-kitty/2024/PHLogoDark.png?auto=compress&amp;codec=mozjpeg&amp;cs=strip&amp;auto=format&amp;w=40&amp;h=40&amp;fit=max&amp;frame=1&amp;dpr=2 2x, https://ph-static.imgix.net/golden-kitty/2024/PHLogoDark.png?auto=compress&amp;codec=mozjpeg&amp;cs=strip&amp;auto=format&amp;w=40&amp;h=40&amp;fit=max&amp;frame=1&amp;dpr=3 3x" src="https://ph-static.imgix.net/golden-kitty/2024/PHLogoDark.png?auto=compress&amp;codec=mozjpeg&amp;cs=strip&amp;auto=format&amp;w=40&amp;h=40&amp;fit=max&amp;frame=1" style="width:40px;height:40px" alt="Product Hunt logo dark" class="hidden dark:block"/><svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40" class="size-10 dark:hidden" data-sentry-element="Logo" data-sentry-source-file="index.tsx"><g fill="none" fill-rule="evenodd"><path fill="#FF6154" d="M40 20c0 11.046-8.954 20-20 20S0 31.046 0 20 8.954 0 20 0s20 8.954 20 20"></path><path fill="#FFF" d="M22.667 20H17v-6h5.667a3 3 0 0 1 0 6m0-10H13v20h4v-6h5.667a7 7 0 1 0 0-14"></path></g></svg></a><div class="text-14 font-normal text-dark-gray relative" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" class="absolute left-4 top-3 size-4" data-sentry-element="SearchIcon" data-sentry-source-file="index.tsx"><path fill="#4B587C" d="M7 14c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7M7 2C4.243 2 2 4.243 2 7s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5m8.707 12.293L13.314 11.9a8 8 0 0 1-1.414 1.414l2.393 2.393a.997.997 0 0 0 1.414 0 1 1 0 0 0 0-1.414" opacity="0.5"></path></svg><input readOnly="" data-hj-allow="true" data-test="header-search-input" autoComplete="off" class="input box-border h-10 w-full min-w-[164px] max-w-full appearance-none rounded-full border-0 border-white bg-gray-100 px-10 pl-[40px] text-light-gray placeholder:text-[#85888E] focus:outline-none sm:w-full sm:max-w-[216px] sm:text-base dark:bg-gray-dark-800 dark:text-tertiary" placeholder="Search" title="Search" name="q"/></div></div><nav aria-label="Main Navigation"><ul class="flex flex-row items-center justify-center gap-6 md:gap-7 lg:gap-8"><li class="group relative list-none" data-test="header-nav-link-launches" data-sentry-component="HeaderLink" data-sentry-source-file="index.tsx"><a class="cursor-pointer text-16 group flex flex-row items-center gap-1 font-semibold text-secondary transition-all duration-300 group-hover:text-brand-500" href="/leaderboard/daily/2025/2/17?ref=header_nav">Launches<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 14 14" class="size-4 stroke-gray-500 transition-all duration-300 group-hover:-rotate-90 group-hover:stroke-brand-500"><path d="M3.5 6.25 7 9.75l3.5-3.5"></path></svg></a><div class="absolute top-4 z-100 hidden w-[350px] translate-y-2 opacity-0 transition-all duration-300 group-hover:block group-hover:translate-y-0 group-hover:opacity-100 left-0" data-sentry-component="HoverMenu" data-sentry-source-file="index.tsx"><div class="mt-6 overflow-hidden rounded-lg bg-primary shadow-lg dark:shadow-[0_2px_8px_rgba(0,0,0,0.3)]"><div class="z-100 px-4 py-2"><a data-sentry-element="Link" data-sentry-component="SubmenuItem" data-sentry-source-file="SubmenuItem.tsx" href="/coming-soon?ref=header_nav"><div class="my-2 flex flex-row gap-4 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-dark-800 dark:bg-gray-dark-900 dark:bg-[image:none] bg-[image:var(--submenu-item-background)] styles_container__K6Yj1" style="--submenu-item-background:linear-gradient(to right, rgba(213, 243, 221, 0.25) 50%, rgba(255, 255, 255, 0.3) 50%)"><div style="background-color:#d5f3dd" class="flex size-11 items-center justify-center rounded transition-all ease-out" data-sentry-component="MenuIcon" data-sentry-source-file="index.tsx"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" class="!size-6" data-sentry-element="Icon" data-sentry-source-file="index.tsx"><g stroke="#599D6B" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" clip-path="url(#ComingSoon_svg__a)"><path d="M12 21.25a8.25 8.25 0 1 0 0-16.5 8.25 8.25 0 0 0 0 16.5m-6.75-18-3 3m16.5-3 3 3"></path><path d="M12 7.75V13h5.25"></path></g><defs><clipPath id="ComingSoon_svg__a"><path fill="#fff" d="M0 0h24v24H0z"></path></clipPath></defs></svg></div><div class="flex flex-1 flex-col"><div class="text-14 font-normal text-dark-gray text-primary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Coming soon</div><div class="text-12 font-normal text-dark-gray text-secondary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Upcoming launches to watch</div></div></div></a><a data-sentry-element="Link" data-sentry-component="SubmenuItem" data-sentry-source-file="SubmenuItem.tsx" href="/leaderboard/daily/2025/2/17?ref=header_nav"><div class="my-2 flex flex-row gap-4 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-dark-800 dark:bg-gray-dark-900 dark:bg-[image:none] bg-[image:var(--submenu-item-background)] styles_container__K6Yj1" style="--submenu-item-background:linear-gradient(to right, rgba(255, 230, 228, 0.25) 50%, rgba(255, 255, 255, 0.3) 50%)"><div style="background-color:#ffe6e4" class="flex size-11 items-center justify-center rounded transition-all ease-out" data-sentry-component="MenuIcon" data-sentry-source-file="index.tsx"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" class="!size-6" data-sentry-element="Icon" data-sentry-source-file="index.tsx"><g stroke="#F86C60" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" clip-path="url(#LaunchArchive_svg__a)"><path d="M9 17.25s-.75 3-5.25 3c0-4.5 3-5.25 3-5.25m11.167-4.416c2.25-2.25 2.39-4.927 2.32-6.12a.75.75 0 0 0-.7-.7c-1.194-.071-3.869.068-6.12 2.32L7.5 12l4.5 4.5zM12.75 6.75H6.97a.75.75 0 0 0-.53.22l-3.22 3.22a.75.75 0 0 0 .425 1.272L7.5 12"></path><path d="M17.25 11.25v5.78a.75.75 0 0 1-.22.53l-3.22 3.22a.75.75 0 0 1-1.272-.425L12 16.5"></path></g><defs><clipPath id="LaunchArchive_svg__a"><path fill="#fff" d="M0 0h24v24H0z"></path></clipPath></defs></svg></div><div class="flex flex-1 flex-col"><div class="text-14 font-normal text-dark-gray text-primary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Launch archive</div><div class="text-12 font-normal text-dark-gray text-secondary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Most-loved launches by the community</div></div></div></a><a data-sentry-element="Link" data-sentry-component="SubmenuItem" data-sentry-source-file="SubmenuItem.tsx" href="/launch?ref=header_nav"><div class="my-2 flex flex-row gap-4 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-dark-800 dark:bg-gray-dark-900 dark:bg-[image:none] bg-[image:var(--submenu-item-background)] styles_container__K6Yj1" style="--submenu-item-background:linear-gradient(to right, rgba(229, 239, 255, 0.25) 50%, rgba(255, 255, 255, 0.3) 50%)"><div style="background-color:#e5efff" class="flex size-11 items-center justify-center rounded transition-all ease-out" data-sentry-component="MenuIcon" data-sentry-source-file="index.tsx"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" class="!size-6" data-sentry-element="Icon" data-sentry-source-file="index.tsx"><g stroke="#3979E3" stroke-width="1.5" clip-path="url(#LaunchGuide_svg__a)"><path stroke-miterlimit="10" d="M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z"></path><path stroke-linecap="round" stroke-linejoin="round" d="m16.5 7.5-6 3-3 6 6-3z"></path></g><defs><clipPath id="LaunchGuide_svg__a"><path fill="#fff" d="M0 0h24v24H0z"></path></clipPath></defs></svg></div><div class="flex flex-1 flex-col"><div class="text-14 font-normal text-dark-gray text-primary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Launch Guide</div><div class="text-12 font-normal text-dark-gray text-secondary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Checklists and pro tips for launching</div></div></div></a></div></div></div></li><li class="group relative" data-sentry-component="ProductsNavigation" data-sentry-source-file="index.tsx"><a class="group flex flex-row items-center gap-1 text-16 font-semibold text-secondary transition-all duration-300 group-hover:text-brand-500" data-sentry-element="Link" data-sentry-source-file="index.tsx" href="/categories?ref=header_nav">Products<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 14 14" class="size-4 stroke-gray-500 transition-all duration-300 group-hover:-rotate-90 group-hover:stroke-brand-500" data-sentry-element="ArrowDown" data-sentry-source-file="index.tsx"><path d="M3.5 6.25 7 9.75l3.5-3.5"></path></svg></a></li><li class="group relative list-none" data-test="header-nav-link-news" data-sentry-component="HeaderLink" data-sentry-source-file="index.tsx"><a class="cursor-pointer text-16 group flex flex-row items-center gap-1 font-semibold text-secondary transition-all duration-300 group-hover:text-brand-500" href="/newsletters?ref=header_nav">News<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 14 14" class="size-4 stroke-gray-500 transition-all duration-300 group-hover:-rotate-90 group-hover:stroke-brand-500"><path d="M3.5 6.25 7 9.75l3.5-3.5"></path></svg></a><div class="absolute top-4 z-100 hidden w-[350px] translate-y-2 opacity-0 transition-all duration-300 group-hover:block group-hover:translate-y-0 group-hover:opacity-100 left-0" data-sentry-component="HoverMenu" data-sentry-source-file="index.tsx"><div class="mt-6 overflow-hidden rounded-lg bg-primary shadow-lg dark:shadow-[0_2px_8px_rgba(0,0,0,0.3)]"><div class="z-100 px-4 py-2"><a data-sentry-element="Link" data-sentry-component="SubmenuItem" data-sentry-source-file="SubmenuItem.tsx" href="/newsletters?ref=header_nav"><div class="my-2 flex flex-row gap-4 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-dark-800 dark:bg-gray-dark-900 dark:bg-[image:none] bg-[image:var(--submenu-item-background)] styles_container__K6Yj1" style="--submenu-item-background:linear-gradient(to right, rgba(234, 233, 255, 0.25) 50%, rgba(255, 255, 255, 0.3) 50%)"><div style="background-color:#eae9ff" class="flex size-11 items-center justify-center rounded transition-all ease-out" data-sentry-component="MenuIcon" data-sentry-source-file="index.tsx"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" class="!size-6" data-sentry-element="Icon" data-sentry-source-file="index.tsx"><g stroke="#6D68D4" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" clip-path="url(#Newsletter_svg__a)"><path d="M3 5.25h18V18a.75.75 0 0 1-.75.75H3.75A.75.75 0 0 1 3 18z"></path><path d="m21 5.25-9 8.25-9-8.25"></path></g><defs><clipPath id="Newsletter_svg__a"><path fill="#fff" d="M0 0h24v24H0z"></path></clipPath></defs></svg></div><div class="flex flex-1 flex-col"><div class="text-14 font-normal text-dark-gray text-primary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Newsletter</div><div class="text-12 font-normal text-dark-gray text-secondary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">The best of Product Hunt, every day</div></div></div></a><a data-sentry-element="Link" data-sentry-component="SubmenuItem" data-sentry-source-file="SubmenuItem.tsx" href="/stories?ref=header_nav"><div class="my-2 flex flex-row gap-4 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-dark-800 dark:bg-gray-dark-900 dark:bg-[image:none] bg-[image:var(--submenu-item-background)] styles_container__K6Yj1" style="--submenu-item-background:linear-gradient(to right, rgba(255, 233, 244, 0.25) 50%, rgba(255, 255, 255, 0.3) 50%)"><div style="background-color:#ffe9f4" class="flex size-11 items-center justify-center rounded transition-all ease-out" data-sentry-component="MenuIcon" data-sentry-source-file="index.tsx"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" class="!size-6" data-sentry-element="Icon" data-sentry-source-file="index.tsx"><g stroke="#F468AC" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" clip-path="url(#Stories_svg__a)"><path d="M12 8.25a3 3 0 0 1 3-3h6a.75.75 0 0 1 .75.75v12a.75.75 0 0 1-.75.75h-6a3 3 0 0 0-3 3M2.25 18a.75.75 0 0 0 .75.75h6a3 3 0 0 1 3 3V8.25a3 3 0 0 0-3-3H3a.75.75 0 0 0-.75.75zM15 9h3.75M15 12h3.75M15 15h3.75"></path></g><defs><clipPath id="Stories_svg__a"><path fill="#fff" d="M0 0h24v24H0z"></path></clipPath></defs></svg></div><div class="flex flex-1 flex-col"><div class="text-14 font-normal text-dark-gray text-primary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Stories</div><div class="text-12 font-normal text-dark-gray text-secondary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Tech news, interviews, and tips from makers</div></div></div></a><a data-sentry-element="Link" data-sentry-component="SubmenuItem" data-sentry-source-file="SubmenuItem.tsx" href="/changes?ref=header_nav"><div class="my-2 flex flex-row gap-4 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-dark-800 dark:bg-gray-dark-900 dark:bg-[image:none] bg-[image:var(--submenu-item-background)] styles_container__K6Yj1" style="--submenu-item-background:linear-gradient(to right, rgba(207, 252, 219, 0.25) 50%, rgba(255, 255, 255, 0.3) 50%)"><div style="background-color:#cffcdb" class="flex size-11 items-center justify-center rounded transition-all ease-out" data-sentry-component="MenuIcon" data-sentry-source-file="index.tsx"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" class="!size-6" data-sentry-element="Icon" data-sentry-source-file="index.tsx"><g stroke="#579167" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" clip-path="url(#Changelog_svg__a)"><path d="M10.5 10.5h6m-6 3h6m3-9.75h-15a.75.75 0 0 0-.75.75v15c0 .414.336.75.75.75h15a.75.75 0 0 0 .75-.75v-15a.75.75 0 0 0-.75-.75m-12 0v16.5"></path></g><defs><clipPath id="Changelog_svg__a"><path fill="#fff" d="M0 0h24v24H0z"></path></clipPath></defs></svg></div><div class="flex flex-1 flex-col"><div class="text-14 font-normal text-dark-gray text-primary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Changelog</div><div class="text-12 font-normal text-dark-gray text-secondary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">New Product Hunt features and releases</div></div></div></a></div></div></div></li><li class="group relative list-none" data-test="header-nav-link-forums" data-sentry-component="HeaderLink" data-sentry-source-file="index.tsx"><a class="cursor-pointer text-16 group flex flex-row items-center gap-1 font-semibold text-secondary transition-all duration-300 group-hover:text-brand-500" href="/forums?ref=header_nav">Forums<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 14 14" class="size-4 stroke-gray-500 transition-all duration-300 group-hover:-rotate-90 group-hover:stroke-brand-500"><path d="M3.5 6.25 7 9.75l3.5-3.5"></path></svg></a><div class="absolute top-4 z-100 hidden w-[350px] translate-y-2 opacity-0 transition-all duration-300 group-hover:block group-hover:translate-y-0 group-hover:opacity-100 left-0" data-sentry-component="HoverMenu" data-sentry-source-file="index.tsx"><div class="mt-6 overflow-hidden rounded-lg bg-primary shadow-lg dark:shadow-[0_2px_8px_rgba(0,0,0,0.3)]"><div class="z-100 px-4 py-2"><a data-sentry-element="Link" data-sentry-component="SubmenuItem" data-sentry-source-file="SubmenuItem.tsx" href="/forums?ref=header_nav"><div class="my-2 flex flex-row gap-4 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-dark-800 dark:bg-gray-dark-900 dark:bg-[image:none] bg-[image:var(--submenu-item-background)] styles_container__K6Yj1" style="--submenu-item-background:linear-gradient(to right, rgba(255, 233, 248, 0.25) 50%, rgba(255, 255, 255, 0.3) 50%)"><div style="background-color:#ffe9f8" class="flex size-11 items-center justify-center rounded transition-all ease-out" data-sentry-component="MenuIcon" data-sentry-source-file="index.tsx"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" class="!size-6" data-sentry-element="Icon" data-sentry-source-file="index.tsx"><g stroke="#DE62B6" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" clip-path="url(#Discussions_svg__a)"><path d="M6.71 13.5 3 16.5v-12a.75.75 0 0 1 .75-.75h12a.75.75 0 0 1 .75.75v8.25a.75.75 0 0 1-.75.75z"></path><path d="M7.5 13.5v3.75a.75.75 0 0 0 .75.75h9.04L21 21V9a.75.75 0 0 0-.75-.75H16.5"></path></g><defs><clipPath id="Discussions_svg__a"><path fill="#fff" d="M0 0h24v24H0z"></path></clipPath></defs></svg></div><div class="flex flex-1 flex-col"><div class="text-14 font-normal text-dark-gray text-primary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Forums</div><div class="text-12 font-normal text-dark-gray text-secondary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Ask questions, find support, and connect</div></div></div></a><a data-sentry-element="Link" data-sentry-component="SubmenuItem" data-sentry-source-file="SubmenuItem.tsx" href="/visit-streaks?ref=header_nav"><div class="my-2 flex flex-row gap-4 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-dark-800 dark:bg-gray-dark-900 dark:bg-[image:none] bg-[image:var(--submenu-item-background)] styles_container__K6Yj1" style="--submenu-item-background:linear-gradient(to right, rgba(255, 228, 228, 0.25) 50%, rgba(255, 255, 255, 0.3) 50%)"><div style="background-color:#ffe4e4" class="flex size-11 items-center justify-center rounded transition-all ease-out" data-sentry-component="MenuIcon" data-sentry-source-file="index.tsx"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" class="!size-6" data-sentry-element="Icon" data-sentry-source-file="index.tsx"><g stroke="#F10202" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" clip-path="url(#Streaks_svg__a)"><path d="M12.75 18c1.875-.316 3.432-1.875 3.75-3.75"></path><path d="m10.5 9 2.463-6.75C14.987 3.93 19.5 8.264 19.5 13.5a7.5 7.5 0 0 1-15 0c0-2.866 1.352-5.462 2.906-7.5z"></path></g><defs><clipPath id="Streaks_svg__a"><path fill="#fff" d="M0 0h24v24H0z"></path></clipPath></defs></svg></div><div class="flex flex-1 flex-col"><div class="text-14 font-normal text-dark-gray text-primary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Streaks</div><div class="text-12 font-normal text-dark-gray text-secondary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">The most active community members</div></div></div></a><a href="https://lu.ma/producthunt" target="_blank" data-sentry-element="Link" data-sentry-component="SubmenuItem" data-sentry-source-file="SubmenuItem.tsx"><div class="my-2 flex flex-row gap-4 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-dark-800 dark:bg-gray-dark-900 dark:bg-[image:none] bg-[image:var(--submenu-item-background)] styles_container__K6Yj1" style="--submenu-item-background:linear-gradient(to right, rgba(207, 242, 216, 0.25) 50%, rgba(255, 255, 255, 0.3) 50%)"><div style="background-color:#cff2d8" class="flex size-11 items-center justify-center rounded transition-all ease-out" data-sentry-component="MenuIcon" data-sentry-source-file="index.tsx"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" class="!size-6" data-sentry-element="Icon" data-sentry-source-file="index.tsx"><g stroke="#3F9E58" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" clip-path="url(#Event_svg__a)"><path d="M19.5 3.75h-15a.75.75 0 0 0-.75.75v15c0 .414.336.75.75.75h15a.75.75 0 0 0 .75-.75v-15a.75.75 0 0 0-.75-.75m-3-1.5v3m-9-3v3m-3.75 3h16.5"></path><path d="m8.625 14.25 2.25 2.25 4.5-4.5"></path></g><defs><clipPath id="Event_svg__a"><path fill="#fff" d="M0 0h24v24H0z"></path></clipPath></defs></svg></div><div class="flex flex-1 flex-col"><div class="text-14 font-normal text-dark-gray text-primary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Events</div><div class="text-12 font-normal text-dark-gray text-secondary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">Meet others online and in-person</div></div></div></a></div></div></div></li><li class="group relative list-none hidden md:block" data-test="header-nav-link-advertise" data-sentry-component="HeaderLink" data-sentry-source-file="index.tsx"><a class="cursor-pointer text-16 group flex flex-row items-center gap-1 font-semibold text-secondary transition-all duration-300 group-hover:text-brand-500" href="/sponsor?ref=header_nav">Advertise</a></li></ul></nav><!--$--><div class="flex flex-row items-center justify-end gap-4" data-sentry-component="Fallback" data-sentry-source-file="UserSection.tsx"><a class="text-16 font-normal text-dark-gray flex h-10 items-center gap-1 rounded-full border-2 border-gray-200 px-4 align-middle text-16 font-semibold !text-secondary transition-all duration-300 hover:border-gray-300 hover:bg-gray-50 sm:px-3 md:px-4 dark:border-gray-dark-800 dark:hover:bg-gray-dark-800" data-test="header-nav-link-subscribe" href="/newsletters?ref=header_nav&amp;campaign=weekly_newsletter&amp;source=header_nav"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" viewBox="0 0 20 20" class="size-4" data-sentry-element="MailIcon" data-sentry-source-file="index.tsx"><path stroke="#344054" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.667" d="m11.453 2.195 6.274 4.077c.221.144.332.216.412.313a.8.8 0 0 1 .158.289c.036.12.036.252.036.516v6.11c0 1.4 0 2.1-.272 2.635a2.5 2.5 0 0 1-1.093 1.092c-.535.273-1.235.273-2.635.273H5.667c-1.4 0-2.1 0-2.635-.273a2.5 2.5 0 0 1-1.093-1.092c-.272-.535-.272-1.235-.272-2.635V7.39c0-.264 0-.396.036-.516a.8.8 0 0 1 .157-.29c.08-.096.192-.168.413-.312l6.274-4.077m2.906 0c-.526-.342-.789-.513-1.072-.58a1.7 1.7 0 0 0-.762 0c-.283.067-.546.238-1.072.58m2.906 0 5.16 3.354c.574.372.86.559.96.795a.83.83 0 0 1 0 .645c-.1.237-.386.423-.96.796l-5.16 3.354c-.526.342-.789.513-1.072.58a1.7 1.7 0 0 1-.762 0c-.283-.067-.546-.238-1.072-.58l-5.16-3.354c-.574-.373-.86-.56-.96-.796a.83.83 0 0 1 0-.645c.1-.236.386-.423.96-.795l5.16-3.354m9.37 13.638-5.536-5m-4.762 0-5.536 5"></path></svg>Subscribe</a><div class="text-16 font-semibold text-white flex h-10 cursor-pointer items-center gap-1 whitespace-nowrap rounded-full bg-brand-500 px-4" data-test="header-nav-link-sign-in" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" viewBox="0 0 20 20" class="size-4" data-sentry-element="SignInIcon" data-sentry-source-file="index.tsx"><g clip-path="url(#SignInIcon_svg__a)"><path stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.667" d="M2.782 5.833a8.333 8.333 0 1 1 0 8.333M10 13.334 13.333 10m0 0L10 6.667M13.333 10H1.667"></path></g><defs><clipPath id="SignInIcon_svg__a"><path fill="#fff" d="M0 0h20v20H0z"></path></clipPath></defs></svg>Sign in</div></div><!--/$--></div></header></div><div class="theme-mirror"></div><div class="mx-auto max-w-[864px] p-4 sm:p-8" data-sentry-component="Page" data-sentry-source-file="index.tsx"><div class="text-16 font-semibold text-brand-500">Stories</div><h1 class="mt-2 text-24 font-semibold text-gray-900">A Founder’s Guide to AI Fine-Tuning</h1><div class="mt-6 flex flex-row gap-1 sm:gap-2"><div class="flex-1"><div class="flex flex-row items-center gap-2.5"><a target="_blank" href="/@corbt"><div class=""><img loading="lazy" srcSet="https://ph-avatars.imgix.net/970351/original.jpeg?auto=compress&amp;codec=mozjpeg&amp;cs=strip&amp;auto=format&amp;w=32&amp;h=32&amp;fit=crop&amp;frame=1&amp;dpr=1 1x, https://ph-avatars.imgix.net/970351/original.jpeg?auto=compress&amp;codec=mozjpeg&amp;cs=strip&amp;auto=format&amp;w=32&amp;h=32&amp;fit=crop&amp;frame=1&amp;dpr=2 2x, https://ph-avatars.imgix.net/970351/original.jpeg?auto=compress&amp;codec=mozjpeg&amp;cs=strip&amp;auto=format&amp;w=32&amp;h=32&amp;fit=crop&amp;frame=1&amp;dpr=3 3x" src="https://ph-avatars.imgix.net/970351/original.jpeg?auto=compress&amp;codec=mozjpeg&amp;cs=strip&amp;auto=format&amp;w=32&amp;h=32&amp;fit=crop&amp;frame=1" style="width:32px;height:32px" alt="Kyle Corbitt" class="rounded-full"/></div></a><div><a class="inline-block h-5 text-14 font-semibold text-gray-700 sm:hover:underline" target="_blank" href="/@corbt">Kyle Corbitt</a><div class="text-12 text-gray-600">October 11th, 2024</div></div></div></div><div class="inline-block"><button class="inline-flex size-11 items-center justify-center rounded-full border-2 border-gray-200 transition-all duration-300 hover:border-gray-300 hover:bg-gray-100"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" viewBox="0 0 20 20" class="size-5" data-sentry-element="Icon" data-sentry-source-file="RoundButton.tsx"><rect width="17.5" height="17.5" x="1.875" y="1.25" fill="#000" rx="8.75"></rect><path fill="#fff" d="m11.457 9.33 3.258-3.705h-.772l-2.828 3.217-2.26-3.217H6.25l3.416 4.865-3.416 3.885h.772l2.987-3.397 2.386 3.397H15zM10.4 10.533l-.346-.485L7.3 6.194h1.186l2.222 3.11.346.485 2.89 4.043h-1.186z"></path></svg></button></div><div class="inline-block"><button class="inline-flex size-11 items-center justify-center rounded-full border-2 border-gray-200 transition-all duration-300 hover:border-gray-300 hover:bg-gray-100"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="24" fill="none" viewBox="0 0 25 24" class="size-5" data-sentry-element="Icon" data-sentry-source-file="RoundButton.tsx"><path fill="#0072b1" fill-rule="evenodd" d="M1.538 2.838A1.84 1.84 0 0 1 3.376 1h18.322a1.837 1.837 0 0 1 1.84 1.838V21.16A1.84 1.84 0 0 1 21.7 23H3.375a1.84 1.84 0 0 1-1.838-1.839V2.838Zm8.709 6.55h2.979v1.496c.43-.86 1.53-1.634 3.182-1.634 3.17 0 3.92 1.713 3.92 4.856v5.822h-3.206v-5.106c0-1.79-.43-2.8-1.522-2.8-1.515 0-2.146 1.089-2.146 2.8v5.106h-3.208V9.388Zm-5.5 10.403h3.207V9.25H4.746zM8.412 5.812a2.063 2.063 0 1 1-4.125.09 2.063 2.063 0 0 1 4.125-.09" clip-rule="evenodd"></path></svg></button></div><div class="inline-block"><button class="inline-flex size-11 items-center justify-center rounded-full border-2 border-gray-200 transition-all duration-300 hover:border-gray-300 hover:bg-gray-100"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" viewBox="0 0 20 20" class="size-5" data-sentry-element="Icon" data-sentry-source-file="RoundButton.tsx"><g clip-path="url(#copy_svg__a)"><path stroke="#344054" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M6.667 6.667V4.333c0-.933 0-1.4.181-1.756.16-.314.415-.569.729-.729.356-.181.823-.181 1.756-.181h6.334c.933 0 1.4 0 1.756.181.314.16.569.415.729.729.181.356.181.823.181 1.756v6.334c0 .933 0 1.4-.181 1.756-.16.314-.415.569-.729.729-.356.181-.823.181-1.756.181h-2.334m-9 5h6.334c.933 0 1.4 0 1.756-.181.314-.16.569-.415.729-.729.181-.356.181-.823.181-1.756V9.333c0-.933 0-1.4-.181-1.756a1.67 1.67 0 0 0-.729-.729c-.356-.181-.823-.181-1.756-.181H4.333c-.933 0-1.4 0-1.756.181-.314.16-.569.415-.729.729-.181.356-.181.823-.181 1.756v6.334c0 .933 0 1.4.181 1.756.16.314.415.569.729.729.356.181.823.181 1.756.181"></path></g><defs><clipPath id="copy_svg__a"><path fill="#fff" d="M0 0h20v20H0z"></path></clipPath></defs></svg></button></div></div><div class="mt-8"><video style="width:100%;height:auto" class="rounded-xl block" poster="https://ph-files.imgix.net/2cd80df4-e3ff-43dd-8885-ad4a6b499b80.webp?auto=compress&amp;codec=mozjpeg&amp;cs=strip&amp;fm=webp&amp;fit=max&amp;frame=1&amp;dpr=2" muted="" loop="" disableRemotePlayback="" disablePictureInPicture="" playsInline="" preload="auto"><source src="https://ph-files.imgix.net/2cd80df4-e3ff-43dd-8885-ad4a6b499b80.webp?fm=mp4&amp;crop=max#t=0.001" type="video/mp4"/><source src="https://ph-files.imgix.net/2cd80df4-e3ff-43dd-8885-ad4a6b499b80.webp?fm=webm&amp;crop=max#t=0.001" type="video/webm"/></video></div><div class="my-8 flex flex-col gap-8 sm:px-4"><div class="styles_body__tRExU" id="story-body"><h2>Introduction</h2><div><strong>About the Author:</strong> I’m <a href="https://x.com/corbtt" target="_blank" rel="nofollow noopener noreferrer">Kyle Corbitt</a>, the founder and CEO of <a href="https://openpipe.ai/" target="_blank" rel="nofollow noopener noreferrer">OpenPipe</a>. We make it easy to move from GPT-4 to a custom fine-tuned model that continuously improves based on your users’ feedback.</div><div><strong>Who this is for</strong>: You’re a busy founder or engineer building a GenAI-powered feature. You’ve heard about fine-tuning but don’t have deep ML expertise. You might already have a problem you think fine-tuning can solve (lower costs? higher quality?) or might just be getting ready for the future.</div><div><strong>What you’ll learn:</strong></div><ol><li>What is fine-tuning?</li><li>Why fine-tune? What problems does it solve?</li><li>When is the right time to think about fine-tuning?</li><li>What tools and expertise do I need to be successful?</li></ol><h2>What is AI Fine-Tuning?</h2><div>Fine-tuning is the process of steering model behavior by updating their actual weights, as opposed to prompting, which involves only rewriting the instructions or adding additional samples to the context. Compared to prompting, fine-tuning gives you much deeper and more nuanced control of a model’s behavior. On the other hand, when done incorrectly it can lead to conditions like “catastrophic forgetting” where the model actually gets much worse instead of better. Fine-tuning is a power tool!</div><h2>Why Fine-Tune?</h2><div>Modern frontier AI models are incredible. They can “zero-shot” many tasks like document classification, information extraction, chatbots and role-playing. However, they still have weaknesses. These include:</div><ol><li>Unreliable adherence to instructions. For example, if you ask an LLM to create a summary that is under 50 words, it might still produce a 60+ word summary 20% of the time. This becomes even more true with instructions that are nuanced and subjective.</li><li>High costs for operations at scale. Current frontier model costs are low enough that they usually can be justified for realtime user interactions. But for large operations like sifting through millions of documents or scraping large parts of the web, they can quickly become cost prohibitive.</li><li>Latency that is too high for certain applications. If your app requires multiple rounds of LLM calls in eg. an agentic workflow, or near-realtime responses for a text-to-voice stream, frontier models may not respond fast enough provide a good experience.</li></ol><div>Fine-tuning can help on all three of these dimensions simultaneously.</div><ol><li>A good dataset leads to far greater reliability because the model is strongly conditioned to create outputs that correspond to your needs.</li><li>Fine-tuned models are generally much smaller than generalist models. This leads to much lower inference costs (often a 10-100x improvement).</li><li>Since fine-tuned models are much smaller, they also can have much lower latency than large generalist models.</li></ol><div>This effect is well illustrated on the graph below. The cost vs quality Pareto frontier for fine-tuned models is significantly more attractive than the one for prompted models alone.</div><img src="https://ph-files.imgix.net/24de114e-398a-4a28-ace7-5fed5b6a6484.webp?auto=compress&amp;codec=mozjpeg&amp;cs=strip&amp;auto=format" alt="" /><br /><h2>When Should You Fine-Tune?</h2><div>Cool, so is fine-tuning a panacea with no tradeoffs? Unfortunately not. There are some very good reasons why you should probably start with prompting.</div><ol><li>Fine-tuning specializes a model on a specific shape of input. But if you’re just starting off, you probably don’t know exactly what your input shape will look like! You need actual users using your system to see what inputs they will bring, so you can specialize on that.</li><li>Fine-tuning does take some time and money (even if it’s minimal, as we’ll see below!). So it doesn’t make sense to reach for it until you’ve exhausted the limits of easier approaches like prompt engineering.</li></ol><div>The typical flow we see come up frequently is to prompt engineer first, and then fine-tune only when you can’t wring more gains out of prompting.</div><ol><li>Prototype Quickly with GPT-4: When exploring an idea or seeking product-market fit, using an off-the-shelf model like GPT-4 makes sense. You can iterate rapidly without worrying about custom infrastructure.</li><li>Scale with Fine-Tuning: Once you’ve identified your core use case and are ready to scale, fine-tuning becomes valuable. A fine-tuned model can be:</li></ol><div><strong>Cheaper</strong>: Optimized for your specific tasks, reducing overhead.</div><div><strong>Faster</strong>: Streamlined responses improve speed.</div><div><strong>More Consistent</strong>: Less variance in output, enhancing predictability.</div><div><strong>More Controllable:</strong> You can define exactly how your AI responds, making it a better fit for your users.</div><img src="https://ph-files.imgix.net/c28420db-e719-4774-ada1-5c37621b0207.webp?auto=compress&amp;codec=mozjpeg&amp;cs=strip&amp;auto=format" alt="" /><br /><h2>How to Fine-Tune</h2><div>Fine-tuning might seem daunting, but it can be broken down into four high-level steps:</div><div><strong>1. Prepare Your Data</strong>: Start by saving interactions from your application—these could be customer support queries, user feedback, or prompts and responses from prototyping. This data forms the foundation of your fine-tuning dataset. Tools like <a href="https://openpipe.ai/" target="_blank" rel="nofollow noopener noreferrer">OpenPipe</a> or observability providers like <a href="https://www.producthunt.com/products/helicone-ai" target="_blank" rel="nofollow noopener noreferrer">Helicone</a> and <a href="https://www.producthunt.com/products/ai-investments-credits-finder" target="_blank" rel="nofollow noopener noreferrer">Portkey</a> can assist with data collection.</div><div><strong>2. Train Your Model: </strong>You can use open-source tools (e.g. <a href="https://www.producthunt.com/products/unsloth" target="_blank" rel="nofollow noopener noreferrer">Unsloth</a>, <a href="https://www.producthunt.com/products/axolotl" target="_blank" rel="nofollow noopener noreferrer">Axolotl</a> or <a href="https://github.com/hiyouga/LLaMA-Factory" target="_blank" rel="nofollow noopener noreferrer">LLaMA-Factory</a>) for self-hosted setups, or opt for hosted platforms like <a href="https://www.producthunt.com/products/openpipe" target="_blank" rel="nofollow noopener noreferrer">OpenPipe</a>, <a href="https://www.producthunt.com/products/together-ai" target="_blank" rel="nofollow noopener noreferrer">Together</a>, or <a href="https://www.producthunt.com/products/fireworks" target="_blank" rel="nofollow noopener noreferrer">Fireworks</a> for a more managed experience.</div><div><strong>3. Evaluate Performance</strong>: Evaluation occurs in two loops:</div><ul><li><strong>Inner Loop: Ra</strong>pid, iterative evaluations using a “golden dataset” or having an LLM act as a judge.</li><li><strong>Outer Loop</strong>: Business metrics—how well is the fine-tuned model performing in terms of user satisfaction and task success?</li></ul><div><strong>4. Deploy:</strong> Depending on your technical capabilities, you can either self-host your fine-tuned model (using tools like <a href="https://github.com/vllm-project/vllm" target="_blank" rel="nofollow noopener noreferrer">vLLM</a> or <a href="https://github.com/NVIDIA/TensorRT-LLM" target="_blank" rel="nofollow noopener noreferrer">TensorRT-LLM</a>) or use hosted options like OpenPipe, <a href="https://aws.amazon.com/bedrock/" target="_blank" rel="nofollow noopener noreferrer">AWS Bedrock</a>, Together or Fireworks.</div><div>All of these are achievable by a reasonably competent software engineer with no specific training in data science or machine learning. We’ve seen organizations go from a prompt to a fine-tuned model with less than an hour of engineering time, if they were already collecting their data!</div><h2>Is Fine-Tuning Right for You?</h2><div>If you’ve reached the limits of prompt engineering and your AI-powered feature could still be improved by lower costs, higher reliability or lower latency, fine-tuning may be able to help a lot!</div></div></div><div class="mb-10 border-none" data-sentry-component="SidebarFooter" data-sentry-source-file="index.tsx"><ul class="m-0 flex flex-row flex-wrap gap-1 p-0"><li class="text-12 text-secondary hover:underline"><a href="/stories">Blog</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="/newsletters">Newsletter</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="/questions">Questions</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="/forums">Forums</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="/categories">Product Categories</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="/apps">Apps</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="/about">About</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="https://help.producthunt.com">FAQ</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="/legal#terms">Terms</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="/legal#privacy">Privacy and Cookies</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="https://x.com/ProductHunt" target="_blank" rel="nofollow noopener noreferrer">X.com</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="https://www.facebook.com/producthunt" target="_blank" rel="nofollow noopener noreferrer">Facebook</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="https://www.instagram.com/producthunt" target="_blank" rel="nofollow noopener noreferrer">Instagram</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="https://www.linkedin.com/company/producthunt" target="_blank" rel="nofollow noopener noreferrer">LinkedIn</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="https://www.youtube.com/channel/UCOtU18DT8csQVqHPT1wtYzw" target="_blank" rel="nofollow noopener noreferrer">YouTube</a></li><span class="relative -top-px text-12 text-light-gray opacity-45" data-sentry-component="DotSeparator" data-sentry-source-file="index.tsx">•</span><li class="text-12 text-secondary hover:underline"><a href="/sponsor?utm_content=sf">Advertise</a></li></ul><div class="text-10 font-normal text-dark-gray uppercase mt-2 text-secondary" data-sentry-element="Component" data-sentry-component="Text" data-sentry-source-file="index.tsx">© <!-- -->2025<!-- --> Product Hunt</div></div></div><script type="application/ld+json" data-sentry-component="StructuredData" data-sentry-source-file="structuredData.tsx">[{"@context":"https://schema.org","@type":"NewsArticle","mainEntityOfPage":{"@type":"WebPage","@id":"https://www.producthunt.com/stories/a-founder-s-guide-to-ai-fine-tuning"},"headline":"A Founder’s Guide to AI Fine-Tuning","image":["https://ph-files.imgix.net/2cd80df4-e3ff-43dd-8885-ad4a6b499b80.webp?auto=format&fit=crop&frame=1&h=512&w=1024"],"author":{"@type":"Person","name":"Kyle Corbitt","image":"https://ph-avatars.imgix.net/970351/original.jpeg?auto=format&fit=crop&crop=faces&w=100&h=100","url":"https://www.producthunt.com/@corbt"},"publisher":{"@type":"Organization","name":"Product Hunt","logo":{"@type":"ImageObject","url":"https://ph-static.imgix.net/ph-publisher-logo.png","width":220,"height":60}},"description":"","datePublished":"2024-10-11T09:33:04.000-07:00","dateModified":"2025-02-03T20:22:09.374-08:00"},{"@context":"http://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Stories","item":"https://www.producthunt.com/stories"},{"@type":"ListItem","position":2,"name":"A Founder’s Guide to AI Fine-Tuning","item":"https://www.producthunt.com/stories/a-founder-s-guide-to-ai-fine-tuning"}]}]</script><div class="theme-mirror"></div><!--$--><!--/$--></div><div id="root-portal"></div><script>(self.__next_s=self.__next_s||[]).push([0,{"data-sentry-element":"Script","data-sentry-source-file":"layout.tsx","children":"\n !function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error(\"Segment snippet included twice.\");else{analytics.invoked=!0;analytics.methods=[\"trackSubmit\",\"trackClick\",\"trackLink\",\"trackForm\",\"pageview\",\"identify\",\"reset\",\"group\",\"track\",\"ready\",\"alias\",\"debug\",\"page\",\"once\",\"off\",\"on\",\"addSourceMiddleware\",\"addIntegrationMiddleware\",\"setAnonymousId\",\"addDestinationMiddleware\"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement(\"script\");t.type=\"text/javascript\";t.defer=!0;t.src=\"https://segment-cdn.producthunt.com/\";var n=document.getElementsByTagName(\"script\")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey=\"dtyjquswuq\";analytics.SNIPPET_VERSION=\"4.15.2\";\n analytics.load(\"dtyjquswuq\");\n }}();\n","id":"segment"}])</script><script src="/_next/static/chunks/webpack-cfdef94efa45d47a.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/8f719edb11eed1a0.css\",\"style\"]\n2:HL[\"/_next/static/css/d5e9c100ec07c291.css\",\"style\"]\n3:HL[\"/_next/static/css/0bee508d3bad07c8.css\",\"style\"]\n4:HL[\"/_next/static/css/c99d6c2024146960.css\",\"style\"]\n5:HL[\"/_next/static/css/4afdd19ce6c2ffda.css\",\"style\"]\n6:HL[\"/_next/static/css/45be9f74b83be42e.css\",\"style\"]\n7:HL[\"/_next/static/css/bf9552dc979224e1.css\",\"style\"]\n8:HL[\"/_next/static/css/886a1217ff9fd009.css\",\"style\"]\n9:HL[\"/_next/static/css/6f0fd2191815f922.css\",\"style\"]\na:HL[\"/_next/static/css/b0e0dd11aa1ac818.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"b:I[14360,[],\"\"]\ne:I[69257,[],\"\"]\n10:I[14857,[],\"\"]\n11:I[47971,[\"95501\",\"static/chunks/c16f53c3-48451ac2b1dbb4cf.js\",\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"99791\",\"static/chunks/99791-029fefa2b88e709e.js\",\"83785\",\"static/chunks/83785-230f48b890d5c9aa.js\",\"99485\",\"static/chunks/99485-049f8877fe3fd326.js\",\"20750\",\"static/chunks/20750-a86c83808da2a59a.js\",\"27834\",\"static/chunks/27834-5c78f4880616ba54.js\",\"53261\",\"static/chunks/53261-f5a2bb4c2cf1c00e.js\",\"38997\",\"static/chunks/38997-3ec4d552be6df75b.js\",\"33531\",\"static/chunks/33531-acabdae7789b7d36.js\",\"47931\",\"static/chunks/47931-b395de54841771b6.js\",\"50125\",\"static/chunks/50125-e28270261385c894.js\",\"82970\",\"static/chunks/82970-a7daac786c5af3dc.js\",\"42822\",\"static/chunks/42822-99f6529dd3dcc810.js\",\"75588\",\"static/chunks/75588-faf4b8cce7f62b7c.js\",\"72369\",\"static/chunks/72369-1e7864e9cf595161.js\",\"73882\",\"static/chunks/73882-86d296e7924d8950.js\",\"3842\",\"static/chunks/3842-a8176129994dc984.js\",\"1574\",\"static/chunks/1574-767209b786dd9ea5.js\",\"4095\",\"static/chunks/app/(main)/layout-debac8568c4d5c24.js\"],\"default\",1]\n12:I[54123,[\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"99791\",\"static/chunks/99791-029fefa2b88e709e.js\",\"83785\",\"static/chunks/83785-230f48b890d5c9aa.js\",\"99485\",\"static/chunks/99485-049f8877fe3fd326.js\",\"20750\",\"static/chunks/20750-a86c83808da2a59a.js\",\"53261\",\"static/chunks/53261-f5a2bb4c2cf1c00e.js\",\"42551\",\"static/chunks/42551-a0fa86bb9d6d8fd7.js\",\"75588\",\"static/chunks/75588-faf4b8cce7f62b7c.js\",\"72369\",\"static/chunks/72369-1e7864e9cf595161.js\",\"86883\",\"static/chunks/app/(main)/not-found-fefe08edc4dfcd5c.js\"],\"default\"]\n13:I[59641,[\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"99791\",\"static/chunks/99791-029fefa2b88e709e.js\",\"83785\",\"static/chunks/83785-230f48b890d5c9aa.js\",\"99485\",\"static/chunks/99485-049f8877fe3fd326.js\",\"20750\",\"static/chunks/20750-a86c83808da2a59a.js\",\"27834\",\"static/chunks/27834-5c78f4880616ba54.js\",\"53261\",\"static/chunks/53261-f5a2bb4c2cf1c00e.js\",\"59793\",\"static/chunks/59793-66c731db89a93e2c.js\",\"53894\",\""])</script><script>self.__next_f.push([1,"static/chunks/53894-186a0b2de7ed77b4.js\",\"22429\",\"static/chunks/22429-69adeb18bda66f2d.js\",\"75588\",\"static/chunks/75588-faf4b8cce7f62b7c.js\",\"72369\",\"static/chunks/72369-1e7864e9cf595161.js\",\"63185\",\"static/chunks/app/layout-c29e892b2aebc046.js\"],\"AppRouter\"]\n14:I[56058,[\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"99791\",\"static/chunks/99791-029fefa2b88e709e.js\",\"83785\",\"static/chunks/83785-230f48b890d5c9aa.js\",\"99485\",\"static/chunks/99485-049f8877fe3fd326.js\",\"20750\",\"static/chunks/20750-a86c83808da2a59a.js\",\"27834\",\"static/chunks/27834-5c78f4880616ba54.js\",\"53261\",\"static/chunks/53261-f5a2bb4c2cf1c00e.js\",\"59793\",\"static/chunks/59793-66c731db89a93e2c.js\",\"53894\",\"static/chunks/53894-186a0b2de7ed77b4.js\",\"22429\",\"static/chunks/22429-69adeb18bda66f2d.js\",\"75588\",\"static/chunks/75588-faf4b8cce7f62b7c.js\",\"72369\",\"static/chunks/72369-1e7864e9cf595161.js\",\"63185\",\"static/chunks/app/layout-c29e892b2aebc046.js\"],\"UserAgentProvider\"]\n15:I[34480,[\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"99791\",\"static/chunks/99791-029fefa2b88e709e.js\",\"83785\",\"static/chunks/83785-230f48b890d5c9aa.js\",\"99485\",\"static/chunks/99485-049f8877fe3fd326.js\",\"20750\",\"static/chunks/20750-a86c83808da2a59a.js\",\"27834\",\"static/chunks/27834-5c78f4880616ba54.js\",\"53261\",\"static/chunks/53261-f5a2bb4c2cf1c00e.js\",\"59793\",\"static/chunks/59793-66c731db89a93e2c.js\",\"53894\",\"static/chunks/53894-186a0b2de7ed77b4.js\",\"22429\",\"static/chunks/22429-69adeb18bda66f2d.js\",\"75588\",\"static/chunks/75588-faf4b8cce7f62b7c.js\",\"72369\",\"static/chunks/72369-1e7864e9cf595161.js\",\"63185\",\"static/chunks/app/layout-c29e892b2aebc046.js\"],\"NavigationProgressProvider\"]\n16:I[87406,[\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"99791\",\"static/chunks/99791-029fefa2b88e709e.js\",\"83785\",\"static/chunks/83785-230f48b890d5c9aa.js\",\"99485\",\"static/chunks/99485-049f8877fe3fd326.js\",\"20750\",\"static/chunks/20750-a86c83808da2a59a.js\",\"27834\",\"static/chunks/27834-5c78f4880616ba54.js\",\"53261\",\"static/chunks/53261-f5a2bb4c2cf1c00e.js\",\"59793\",\"static/chunks/59793-66c731db89"])</script><script>self.__next_f.push([1,"a93e2c.js\",\"53894\",\"static/chunks/53894-186a0b2de7ed77b4.js\",\"22429\",\"static/chunks/22429-69adeb18bda66f2d.js\",\"75588\",\"static/chunks/75588-faf4b8cce7f62b7c.js\",\"72369\",\"static/chunks/72369-1e7864e9cf595161.js\",\"63185\",\"static/chunks/app/layout-c29e892b2aebc046.js\"],\"default\"]\n17:I[43079,[\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"27834\",\"static/chunks/27834-5c78f4880616ba54.js\",\"59793\",\"static/chunks/59793-66c731db89a93e2c.js\",\"53894\",\"static/chunks/53894-186a0b2de7ed77b4.js\",\"31462\",\"static/chunks/app/(cards)/layout-84f2033be3b366db.js\"],\"default\"]\n18:I[57851,[\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"99791\",\"static/chunks/99791-029fefa2b88e709e.js\",\"83785\",\"static/chunks/83785-230f48b890d5c9aa.js\",\"99485\",\"static/chunks/99485-049f8877fe3fd326.js\",\"20750\",\"static/chunks/20750-a86c83808da2a59a.js\",\"27834\",\"static/chunks/27834-5c78f4880616ba54.js\",\"53261\",\"static/chunks/53261-f5a2bb4c2cf1c00e.js\",\"59793\",\"static/chunks/59793-66c731db89a93e2c.js\",\"53894\",\"static/chunks/53894-186a0b2de7ed77b4.js\",\"22429\",\"static/chunks/22429-69adeb18bda66f2d.js\",\"75588\",\"static/chunks/75588-faf4b8cce7f62b7c.js\",\"72369\",\"static/chunks/72369-1e7864e9cf595161.js\",\"63185\",\"static/chunks/app/layout-c29e892b2aebc046.js\"],\"ErrorBoundary\"]\n19:I[87906,[\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"99791\",\"static/chunks/99791-029fefa2b88e709e.js\",\"83785\",\"static/chunks/83785-230f48b890d5c9aa.js\",\"99485\",\"static/chunks/99485-049f8877fe3fd326.js\",\"20750\",\"static/chunks/20750-a86c83808da2a59a.js\",\"27834\",\"static/chunks/27834-5c78f4880616ba54.js\",\"53261\",\"static/chunks/53261-f5a2bb4c2cf1c00e.js\",\"59793\",\"static/chunks/59793-66c731db89a93e2c.js\",\"53894\",\"static/chunks/53894-186a0b2de7ed77b4.js\",\"22429\",\"static/chunks/22429-69adeb18bda66f2d.js\",\"75588\",\"static/chunks/75588-faf4b8cce7f62b7c.js\",\"72369\",\"static/chunks/72369-1e7864e9cf595161.js\",\"63185\",\"static/chunks/app/layout-c29e892b2aebc046.js\"],\"default\"]\n1a:I[87512,[\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"99791\",\"static/chunks/99791-029fefa2b88e709e.js\",\"83785\""])</script><script>self.__next_f.push([1,",\"static/chunks/83785-230f48b890d5c9aa.js\",\"99485\",\"static/chunks/99485-049f8877fe3fd326.js\",\"20750\",\"static/chunks/20750-a86c83808da2a59a.js\",\"27834\",\"static/chunks/27834-5c78f4880616ba54.js\",\"53261\",\"static/chunks/53261-f5a2bb4c2cf1c00e.js\",\"59793\",\"static/chunks/59793-66c731db89a93e2c.js\",\"53894\",\"static/chunks/53894-186a0b2de7ed77b4.js\",\"22429\",\"static/chunks/22429-69adeb18bda66f2d.js\",\"75588\",\"static/chunks/75588-faf4b8cce7f62b7c.js\",\"72369\",\"static/chunks/72369-1e7864e9cf595161.js\",\"63185\",\"static/chunks/app/layout-c29e892b2aebc046.js\"],\"\"]\n1c:I[40779,[\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"99791\",\"static/chunks/99791-029fefa2b88e709e.js\",\"83785\",\"static/chunks/83785-230f48b890d5c9aa.js\",\"99485\",\"static/chunks/99485-049f8877fe3fd326.js\",\"20750\",\"static/chunks/20750-a86c83808da2a59a.js\",\"27834\",\"static/chunks/27834-5c78f4880616ba54.js\",\"53261\",\"static/chunks/53261-f5a2bb4c2cf1c00e.js\",\"59793\",\"static/chunks/59793-66c731db89a93e2c.js\",\"53894\",\"static/chunks/53894-186a0b2de7ed77b4.js\",\"22429\",\"static/chunks/22429-69adeb18bda66f2d.js\",\"75588\",\"static/chunks/75588-faf4b8cce7f62b7c.js\",\"72369\",\"static/chunks/72369-1e7864e9cf595161.js\",\"63185\",\"static/chunks/app/layout-c29e892b2aebc046.js\"],\"GoogleAnalytics\"]\n1d:I[31635,[\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"99791\",\"static/chunks/99791-029fefa2b88e709e.js\",\"83785\",\"static/chunks/83785-230f48b890d5c9aa.js\",\"99485\",\"static/chunks/99485-049f8877fe3fd326.js\",\"20750\",\"static/chunks/20750-a86c83808da2a59a.js\",\"27834\",\"static/chunks/27834-5c78f4880616ba54.js\",\"53261\",\"static/chunks/53261-f5a2bb4c2cf1c00e.js\",\"59793\",\"static/chunks/59793-66c731db89a93e2c.js\",\"53894\",\"static/chunks/53894-186a0b2de7ed77b4.js\",\"22429\",\"static/chunks/22429-69adeb18bda66f2d.js\",\"75588\",\"static/chunks/75588-faf4b8cce7f62b7c.js\",\"72369\",\"static/chunks/72369-1e7864e9cf595161.js\",\"63185\",\"static/chunks/app/layout-c29e892b2aebc046.js\"],\"GoogleTagManager\"]\n1f:I[25575,[\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"99791\",\"static/chunks/99791-029fefa2b88e709e.js\",\"83785\","])</script><script>self.__next_f.push([1,"\"static/chunks/83785-230f48b890d5c9aa.js\",\"99485\",\"static/chunks/99485-049f8877fe3fd326.js\",\"20750\",\"static/chunks/20750-a86c83808da2a59a.js\",\"53261\",\"static/chunks/53261-f5a2bb4c2cf1c00e.js\",\"12103\",\"static/chunks/12103-257c54f0017a6619.js\",\"75588\",\"static/chunks/75588-faf4b8cce7f62b7c.js\",\"72369\",\"static/chunks/72369-1e7864e9cf595161.js\",\"16470\",\"static/chunks/app/global-error-d77dd3563650f7c0.js\"],\"default\"]\nf:[\"slug\",\"a-founder-s-guide-to-ai-fine-tuning\",\"d\"]\n1b:T449,\n !function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console\u0026\u0026console.error\u0026\u0026console.error(\"Segment snippet included twice.\");else{analytics.invoked=!0;analytics.methods=[\"trackSubmit\",\"trackClick\",\"trackLink\",\"trackForm\",\"pageview\",\"identify\",\"reset\",\"group\",\"track\",\"ready\",\"alias\",\"debug\",\"page\",\"once\",\"off\",\"on\",\"addSourceMiddleware\",\"addIntegrationMiddleware\",\"setAnonymousId\",\"addDestinationMiddleware\"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e\u003canalytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement(\"script\");t.type=\"text/javascript\";t.defer=!0;t.src=\"https://segment-cdn.producthunt.com/\";var n=document.getElementsByTagName(\"script\")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey=\"dtyjquswuq\";analytics.SNIPPET_VERSION=\"4.15.2\";\n analytics.load(\"dtyjquswuq\");\n }}();\n20:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$Lb\",null,{\"buildId\":\"Rv_rxG9i8KJv-HSGu9Ccg\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"stories\",\"a-founder-s-guide-to-ai-fine-tuning\"],\"initialTree\":[\"\",{\"children\":[\"(main)\",{\"children\":[\"stories\",{\"children\":[[\"slug\",\"a-founder-s-guide-to-ai-fine-tuning\",\"d\"],{\"children\":[\"__PAGE__\",{}]}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"(main)\",{\"children\":[\"stories\",{\"children\":[[\"slug\",\"a-founder-s-guide-to-ai-fine-tuning\",\"d\"],{\"children\":[\"__PAGE__\",{},[[\"$Lc\",\"$Ld\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/6f0fd2191815f922.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/b0e0dd11aa1ac818.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]]],null],null]},[null,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"(main)\",\"children\",\"stories\",\"children\",\"$f\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[null,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"(main)\",\"children\",\"stories\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/4afdd19ce6c2ffda.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/45be9f74b83be42e.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/bf9552dc979224e1.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/886a1217ff9fd009.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L11\",null,{\"children\":[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"(main)\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$\",\"$L12\",null,{\"code\":404,\"data-sentry-element\":\"SystemError\",\"data-sentry-component\":\"NotFoundPage\",\"data-sentry-source-file\":\"not-found.tsx\"}],\"notFoundStyles\":[]}],\"params\":{}}]],null],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/8f719edb11eed1a0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/d5e9c100ec07c291.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/0bee508d3bad07c8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c99d6c2024146960.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"data-sentry-component\":\"RootLayout\",\"data-sentry-source-file\":\"layout.tsx\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"property\":\"fb:app_id\",\"content\":\"1467820943460899\",\"data-sentry-element\":\"meta\",\"data-sentry-source-file\":\"layout.tsx\"}],[\"$\",\"link\",null,{\"rel\":\"search\",\"type\":\"application/opensearchdescription+xml\",\"title\":\"ProductHunt\",\"href\":\"/osd.xml\"}]]}],[\"$\",\"body\",null,{\"className\":\"theme-mirror bg-primary\",\"children\":[[\"$\",\"div\",null,{\"id\":\"root-container\",\"className\":\"light\",\"children\":[\"$\",\"$L13\",null,{\"data-sentry-element\":\"AppRouter\",\"data-sentry-source-file\":\"layout.tsx\",\"children\":[\"$\",\"$L14\",null,{\"userAgent\":\"$undefined\",\"data-sentry-element\":\"UserAgentProvider\",\"data-sentry-source-file\":\"layout.tsx\",\"children\":[\"$\",\"$L15\",null,{\"data-sentry-element\":\"NavigationProgressProvider\",\"data-sentry-source-file\":\"layout.tsx\",\"children\":[\"$\",\"$L16\",null,{\"ApolloWrapper\":\"$17\",\"serverSideRendered\":true,\"data-sentry-element\":\"ClientApp\",\"data-sentry-source-file\":\"layout.tsx\",\"children\":[\"$\",\"$L18\",null,{\"data-sentry-element\":\"ErrorBoundary\",\"data-sentry-source-file\":\"layout.tsx\",\"children\":[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]}]}]}],[\"$\",\"div\",null,{\"id\":\"root-portal\"}],[[\"$\",\"$L19\",null,{}],[\"$\",\"$L1a\",null,{\"id\":\"segment\",\"strategy\":\"beforeInteractive\",\"dangerouslySetInnerHTML\":{\"__html\":\"$1b\"},\"data-sentry-element\":\"Script\",\"data-sentry-source-file\":\"layout.tsx\"}],false,[[\"$\",\"$L1c\",null,{\"gaId\":\"G-WZ46833KH9\"}],[\"$\",\"$L1d\",null,{\"gtmId\":\"G-WZ46833KH9\"}]]],false]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L1e\"],\"globalErrorComponent\":\"$1f\",\"missingSlots\":\"$W20\"}]\n"])</script><script>self.__next_f.push([1,"21:I[29235,[\"95501\",\"static/chunks/c16f53c3-48451ac2b1dbb4cf.js\",\"20921\",\"static/chunks/20921-7a96833f57c275e2.js\",\"99791\",\"static/chunks/99791-029fefa2b88e709e.js\",\"83785\",\"static/chunks/83785-230f48b890d5c9aa.js\",\"99485\",\"static/chunks/99485-049f8877fe3fd326.js\",\"20750\",\"static/chunks/20750-a86c83808da2a59a.js\",\"27834\",\"static/chunks/27834-5c78f4880616ba54.js\",\"53261\",\"static/chunks/53261-f5a2bb4c2cf1c00e.js\",\"38997\",\"static/chunks/38997-3ec4d552be6df75b.js\",\"33531\",\"static/chunks/33531-acabdae7789b7d36.js\",\"47931\",\"static/chunks/47931-b395de54841771b6.js\",\"16065\",\"static/chunks/16065-fb101c10cfdd889b.js\",\"49194\",\"static/chunks/49194-4af1f46f24e590e3.js\",\"31706\",\"static/chunks/31706-d405fcf06045e83c.js\",\"56679\",\"static/chunks/56679-6f28748363e55278.js\",\"61790\",\"static/chunks/61790-cd138e29ba47ce68.js\",\"67053\",\"static/chunks/67053-25d87194a55575d9.js\",\"75588\",\"static/chunks/75588-faf4b8cce7f62b7c.js\",\"3842\",\"static/chunks/3842-a8176129994dc984.js\",\"22999\",\"static/chunks/22999-9e3c57ac7a8e2d2f.js\",\"49813\",\"static/chunks/49813-723a643f50dbb004.js\",\"40254\",\"static/chunks/40254-471542b69a0524eb.js\",\"20188\",\"static/chunks/20188-d958b7cbebf14580.js\",\"59319\",\"static/chunks/59319-2c585d144328c810.js\",\"33294\",\"static/chunks/33294-fc2fe72393298da6.js\",\"11611\",\"static/chunks/app/(main)/stories/%5Bslug%5D/page-13e8763f4ccc6b87.js\"],\"default\"]\n22:T48f,[{\"@context\":\"https://schema.org\",\"@type\":\"NewsArticle\",\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.producthunt.com/stories/a-founder-s-guide-to-ai-fine-tuning\"},\"headline\":\"A Founder’s Guide to AI Fine-Tuning\",\"image\":[\"https://ph-files.imgix.net/2cd80df4-e3ff-43dd-8885-ad4a6b499b80.webp?auto=format\u0026fit=crop\u0026frame=1\u0026h=512\u0026w=1024\"],\"author\":{\"@type\":\"Person\",\"name\":\"Kyle Corbitt\",\"image\":\"https://ph-avatars.imgix.net/970351/original.jpeg?auto=format\u0026fit=crop\u0026crop=faces\u0026w=100\u0026h=100\",\"url\":\"https://www.producthunt.com/@corbt\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Product Hunt\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://ph-static.imgix.net/ph-publisher-logo"])</script><script>self.__next_f.push([1,".png\",\"width\":220,\"height\":60}},\"description\":\"\",\"datePublished\":\"2024-10-11T09:33:04.000-07:00\",\"dateModified\":\"2025-02-03T20:22:09.374-08:00\"},{\"@context\":\"http://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Stories\",\"item\":\"https://www.producthunt.com/stories\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Founder’s Guide to AI Fine-Tuning\",\"item\":\"https://www.producthunt.com/stories/a-founder-s-guide-to-ai-fine-tuning\"}]}]d:[[\"$\",\"$L21\",null,{\"params\":{\"slug\":\"a-founder-s-guide-to-ai-fine-tuning\"},\"searchParams\":{},\"data-sentry-element\":\"Component\",\"data-sentry-source-file\":\"withStructuredData.tsx\"}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$22\"},\"data-sentry-component\":\"StructuredData\",\"data-sentry-source-file\":\"structuredData.tsx\"}]]\n"])</script><script>self.__next_f.push([1,"1e:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, minimum-scale=1\"}],[\"$\",\"meta\",\"1\",{\"name\":\"theme-color\",\"content\":\"#ffffff\"}],[\"$\",\"meta\",\"2\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"3\",{\"children\":\" A Founder’s Guide to AI Fine-Tuning | Product Hunt\"}],[\"$\",\"meta\",\"4\",{\"name\":\"description\",\"content\":\"Product Hunt is a curation of the best new products, every day. Discover the latest mobile apps, websites, and technology products that everyone's talking about.\"}],[\"$\",\"link\",\"5\",{\"rel\":\"author\",\"href\":\"https://www.producthunt.com/@corbt\"}],[\"$\",\"meta\",\"6\",{\"name\":\"author\",\"content\":\"Kyle Corbitt\"}],[\"$\",\"link\",\"7\",{\"rel\":\"manifest\",\"href\":\"/manifest.json\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"8\",{\"name\":\"fb:app_id\",\"content\":\"1467820943460899\"}],[\"$\",\"link\",\"9\",{\"rel\":\"canonical\",\"href\":\"https://www.producthunt.com/stories/a-founder-s-guide-to-ai-fine-tuning\"}],[\"$\",\"link\",\"10\",{\"rel\":\"alternate\",\"type\":\"application/atom+xml\",\"title\":\"Product Hunt - All newest Products\",\"href\":\"https://www.producthunt.com/feed\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:title\",\"content\":\" A Founder’s Guide to AI Fine-Tuning | Product Hunt\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:description\",\"content\":\"Product Hunt is a curation of the best new products, every day. Discover the latest mobile apps, websites, and technology products that everyone's talking about.\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:url\",\"content\":\"https://www.producthunt.com/stories/a-founder-s-guide-to-ai-fine-tuning\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:site_name\",\"content\":\"Product Hunt\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image\",\"content\":\"https://ph-files.imgix.net/2cd80df4-e3ff-43dd-8885-ad4a6b499b80.webp?auto=format\u0026fit=crop\u0026frame=1\u0026h=512\u0026w=1024\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:site\",\"content\":\"@producthunt\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:creator\",\"content\":\"@corbt\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:title\",\"content\":\" A Founder’s Guide to AI Fine-Tuning | Product Hunt\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:description\",\"content\":\"Product Hunt is a curation of the best new products, every day. Discover the latest mobile apps, websites, and technology products that everyone's talking about.\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image\",\"content\":\"https://ph-files.imgix.net/2cd80df4-e3ff-43dd-8885-ad4a6b499b80.webp?auto=format\u0026fit=crop\u0026frame=1\u0026h=512\u0026w=1024\"}],[\"$\",\"link\",\"24\",{\"rel\":\"icon\",\"href\":\"https://ph-static.imgix.net/ph-favicon-brand-500.ico?auto=format\"}],[\"$\",\"link\",\"25\",{\"rel\":\"apple-touch-icon-precomposed\",\"href\":\"https://ph-static.imgix.net/ph-ios-icon.png?auto=format\"}],[\"$\",\"link\",\"26\",{\"rel\":\"chrome-webstore-item\",\"href\":\"https://producthunt.app.link/extension\"}]]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10