Hey HN. I built this. Some context on the decisions:
Why bundled data instead of an API? I wanted zero runtime dependencies. No API keys, no rate limits, no service to keep running. Everything ships compiled into the npm package. Works offline. The tradeoff is data freshness, but World Cup data doesn't change much once it's set... and I'll push npm updates for the playoffs (March 26 & 31) and any schedule changes.
What "18 tools" actually means: Matches with timezone conversion, team profiles (coach, key players, playing style, qualifying record), city guides written for fans not tourists, head-to-head World Cup history with aggregate stats, fan zone locations, visa/entry requirements for all three host countries, venue distances for trip planning, and a smart briefing that auto-detects the tournament phase and surfaces what's relevant today.
The briefing tool is my favorite part. Say "brief me on the World Cup" with zero parameters. Right now it tells you: 120 days out, 6 playoff spots pending, here are the groups to watch. During the tournament it'll shift to today's matches, yesterday's results, standings implications.
Why MCP? I wanted structured, queryable data instead of web scraping guesses. MCP lets AI assistants call tools natively, so the AI decides which endpoint to hit based on your question. "When does the USA play?" hits get_matches with a team filter. "Do I need a visa for Mexico?" hits get_visa_info. No prompt engineering needed.
Non-MCP paths: Same data powers a ChatGPT GPT (live in the GPT Store) and a Telegram bot with slash commands. The REST API on Vercel wraps the same bundled data as serverless functions.
Tech: TypeScript, MCP SDK, Zod schemas. MIT licensed. The /try playground has 17 live demos if you want to see actual responses before installing.
Let me know if you have questions about the architecture, data approach, etc.
I’m the creator of TweetPerView. I give Andrew a ton of respect here. He really means it when he says he’s here to help ambitious entrepreneurs. He’s done a few tests on older shows, but really put it on the line by implementing TPV on a brand new interview - with Jason Fried, no less! The idea behind the whole project is to help grow an audience and engage viewers. We'll see what happens. Thanks Andrew.
I think the bottom line is, if it's something of interest, a tweet is a small price to pay. If it's not worth it, you'll move on. The hope is that the viral growth makes up for the drop-off. We shall see.
I'm using that public video just as an example. As someone pointed out above, at its current state it's pretty easy to find out the url and watch the video. 1) It's a convenience thing, many of us download music on iTunes even though we can pirate the mp3s. 2) we can't assume the behavior of the average web user based on our own behaviors.
No framework. Just hacking it all together. I'm a product/business guy who picked up PHP/MySQL and JSON to achieve a proof of concept. If there's a developer out there that wants to contribute, I'd be happy to chat.
Also, the idea is that if the video creator wants to make it exclusively available as a TweetPerView, they should mark the video as 'private' so it won't show on YouTube.com and make it available to be embedded.
Hi guys, thanks for the response and feedback so far.
A couple things:
* This puts the M in MVP. By rolling it live, I hope to prove (or disprove) the general concept.
* As I mentioned earlier, the next iteration will include an option for the video creator to add a 'dismiss' button to allow the viewer to bypass the tweet requirement and just play the video.
* The next thing I want to test is an 'in-stream' tweet requirement. Perhaps it shows 30-90 seconds of a video and then it prompts for a tweet.
* I'm working on other, less obtrusive social actions: FB like, follow, etc.
Thanks again for the feedback. Keep 'em coming. :)
That's next on the list. It's been the #1 request so far: a "just show me the video" link. Perhaps the publisher has an option of enabling in the setup process.
It would be cool if we could interact with the app via the tab. Example: I'm in another tab and can right click the pinned Pandora tab to pause the music.
What the writer is referring to is the "Click Through Rate". A "conversion" is when the user takes an action post click (submits info, downloads, purchases, etc.).
He also incorrectly calculate the CTR. The CTR on an email campaign is clicks divided by opens. He divided clicks over sends, which since fewer people opened the "Happy Holidays" email, fewer would have naturally clicked. "Merry Christmas" still performed better, but not at the rates he's suggesting.
Fanfare is a social media marketing platform that lets online content creators (bands, writers, video producers, etc.) promote their content and engage with their audience.
The secret sauce is that we provide an easy way for online publishers to distribute their content to users only after they take a social action. Publishers can log into our site and gain insight in who’s accessing their content, sort their fans by Klout score, export their info, and reengage.
Version 1 is live, let me know if you'd like to see a demo. We're currently working on Version 1.5. Thanks.
Why bundled data instead of an API? I wanted zero runtime dependencies. No API keys, no rate limits, no service to keep running. Everything ships compiled into the npm package. Works offline. The tradeoff is data freshness, but World Cup data doesn't change much once it's set... and I'll push npm updates for the playoffs (March 26 & 31) and any schedule changes.
What "18 tools" actually means: Matches with timezone conversion, team profiles (coach, key players, playing style, qualifying record), city guides written for fans not tourists, head-to-head World Cup history with aggregate stats, fan zone locations, visa/entry requirements for all three host countries, venue distances for trip planning, and a smart briefing that auto-detects the tournament phase and surfaces what's relevant today.
The briefing tool is my favorite part. Say "brief me on the World Cup" with zero parameters. Right now it tells you: 120 days out, 6 playoff spots pending, here are the groups to watch. During the tournament it'll shift to today's matches, yesterday's results, standings implications.
Why MCP? I wanted structured, queryable data instead of web scraping guesses. MCP lets AI assistants call tools natively, so the AI decides which endpoint to hit based on your question. "When does the USA play?" hits get_matches with a team filter. "Do I need a visa for Mexico?" hits get_visa_info. No prompt engineering needed.
Non-MCP paths: Same data powers a ChatGPT GPT (live in the GPT Store) and a Telegram bot with slash commands. The REST API on Vercel wraps the same bundled data as serverless functions.
Tech: TypeScript, MCP SDK, Zod schemas. MIT licensed. The /try playground has 17 live demos if you want to see actual responses before installing.
Let me know if you have questions about the architecture, data approach, etc.