Booking it
gm legends. It’s Sunday.
This week: Spotify takes a page from Amazon, the most ridiculous projects in tech, three hard-learned tips for building an AI agent that calls APIs, and how to build a viable business around an app that’s meant to be deleted. Plus, 5 of the top products from this week's leaderboard.
Don’t delete this email, legend. Be like Spotify. Enjoy.
P.S. Launching soon? We’d love to hear about it → editorial@producthunt.co 🫶
Spotify learns to read

First music, then podcasts, now books—physical books.
US and UK Spotify users can now buy books directly from the streaming app (on Android; iOS is coming this week).
To prep for the addition and help out folks who switch between hard copies and audiobooks, it rolled out several audiobook features back in February:
- Page Match, which lets people snap a photo of a book page, then takes them to that point in the audiobook
- Audiobook Charts, a weekly leaderboard for the hottest reads (okay, listens)
- Audiobook Recaps, which help you get up to speed after a long pause in reading
Of course, books used to be Amazon’s territory, back before Amazon became Amazon. Spotify sees it as a way to profitability. But it’s not the only app looking to fill up your bookshelf. Here are five bookish products that have launched on Product Hunt since December:
- DreamBooks is a platform for your kids to find their next favorite read; it looks and feels like “the children’s corner of a library,” not a lifeless library website.
- Book Reading Habit is a habit training app designed to get you reading more.
- Obooko is a platform for finding and downloading free ebooks.
- Xteink X4 is like a Kindle but smaller; it’s an eReader with a magnet that sticks to your phone.
- Readever lets you join your own private book club with famous people — or, at least, their AI likenesses.
Building an AI agent that calls APIs? Read this first

The 3 hardest technical problems I hit building an AI agent that calls real APIs. I wish someone had written [these] down before I spent a month figuring them out:
1. LLMs send partial payloads on write operations.
You ask the agent to update a record. It sends only the fields you mentioned in the prompt. The PUT request goes through, returns 200, and you've silently wiped every field you didn't specify.
The fix: Before every write call, fetch the current resource state via the companion GET endpoint and deep-merge the LLM's payload on top. The LLM only needs to specify what's changing — the executor fills in the rest.
2. LLMs hallucinate success when API calls fail.
A tool returns a 404. The agent says, "Done, the record was updated!"
The fix: Explicitly prefix every error response with "Error:" and add one line to the system prompt — if a tool returns a message starting with Error:, report it directly. Do not assume success. Without this, the agent will confidently lie every time.
3. Query parameters break in subtle ways.
The LLM passes query params as a plain string instead of a dict. The request fires, looks fine in logs, returns nothing. No error. Just silence.
The fix: Coerce string inputs to dicts in the tool executor and be extremely explicit in the field description about the expected shape — including a concrete example.
None of this shows up in tutorials or documentation. You only find it by shipping something real and watching it break. If you're building anything that connects an LLM to a real API, what failure modes have you hit?
Your agents stopped answering and started doing
Your agents call tools, write to databases and move money, so a wrong answer is now a wrong action, which is a considerably worse meeting. Arcjet runs policy before every LLM call, tool call, query and API request: prompt injection, sensitive data, bots, rate limits, spend quotas, and your own rules in Rego on top. It reads the OpenTelemetry you already emit, so switching it on is one environment variable, no code changes and nothing to deploy. Each check also reads the earlier steps in the same workflow, so an agent's tenth action gets judged against the first nine and not on its own. JavaScript, Python and Go SDKs all at 1.0, agent framework guards included, free tier to start on.
How to succeed when your product can’t be sticky

By Mona Truong of Murror AI
There's something counterintuitive about building an AI product in the mental health and self-awareness space: if you're doing it right, your users should eventually need you less.
Most product teams optimize for stickiness. More sessions, more time in app, more daily returns. But at Murror, we've been wrestling with a different question — what if the goal of our product is to help someone build enough self-understanding that they don't need to open the app as often?
When someone uses Murror to process a difficult emotion or reflect on a pattern in their relationships, the ideal outcome isn't that they come back tomorrow to do the same thing. It's that they start recognizing those patterns on their own, in real time, without us.
This creates a genuinely hard product challenge. How do you build a sustainable business around a product that's designed to reduce its own usage?
How did this make money?

Dogecoin started as a joke and has a $14B market cap. Fidget spinners have made hundreds of millions and can be found in a landfill near you. The pet rock once earned money like The Rock.
All of these feel silly. Yet they’ve been very successful. So, Nika wants to know: “Which business idea do you think was so ridiculous that it feels absurd how much money it made?”
Leaderboard highlights





