{"id":14,"date":"2025-12-30T09:00:00","date_gmt":"2025-12-30T09:00:00","guid":{"rendered":"http:\/\/faker.local\/blog\/building-null-fake-open-source\/"},"modified":"2026-10-14T20:55:48","modified_gmt":"2026-10-14T20:55:48","slug":"building-null-fake-open-source","status":"publish","type":"post","link":"https:\/\/nullfake.com\/blog\/building-null-fake-open-source\/","title":{"rendered":"Building Null Fake: Why We Made It Free"},"content":{"rendered":"<p>We got burned by a fake review scam in 2023. Bought a &#8220;highly rated&#8221; kitchen appliance that broke after two weeks. The 4.8-star rating was built on fake reviews. That pissed us off enough to build something about it.<\/p>\n\n        <h2 class=\"text-2xl font-bold mt-8 mb-4\">Why Existing Tools Weren&#8217;t Good Enough<\/h2>\n        \n        <p>Fakespot and ReviewMeta exist. They&#8217;re decent. But they have problems: usage limits (can&#8217;t analyze more than 10 products per day on free tiers), no transparency (black box algorithms), and they miss sophisticated fakes.<\/p>\n        \n        <p>We wanted something unlimited, transparent, and more aggressive at catching manipulation. If that meant more false positives, fine. Better to warn about a good product than miss a scam.<\/p>\n        \n        <p>Also, we&#8217;re developers. Building stuff is what we do. This seemed like a good problem to solve.<\/p>\n\n        <h2 class=\"text-2xl font-bold mt-8 mb-4\">The Tech Stack<\/h2>\n        \n        <p>We chose Laravel (PHP framework) because we know it well. Fast development, good ecosystem, easy deployment.<\/p>\n        \n        <p>PostgreSQL for data storage. We need to store review data, analysis results, and cache responses. Postgres handles JSON well, which is useful for storing review metadata.<\/p>\n        \n        <p>Python with scikit-learn for machine learning. We run linguistic analysis on review text. Python&#8217;s NLP libraries are better than PHP&#8217;s.<\/p>\n        \n        <p>OpenAI API for advanced language analysis. Their models are good at detecting AI-generated text and analyzing sentiment. Costs money, but worth it for accuracy.<\/p>\n        \n        <p>The entire stack runs on a single VPS (for now). If we need to scale, we&#8217;ll add queue workers and load balancing. But 500 analyses per day fits on one server easily.<\/p>\n\n        <h2 class=\"text-2xl font-bold mt-8 mb-4\">The Scraping Challenge<\/h2>\n        \n        <p>Amazon doesn&#8217;t have an official API for reviews. We have to scrape their website. That&#8217;s technically allowed (public data) but practically difficult (they have bot detection).<\/p>\n        \n        <p>We use rotating proxies and randomized request timing. We also cache aggressively. Once we&#8217;ve analyzed a product, we cache the result for 24 hours. No need to scrape again if someone checks the same product twice.<\/p>\n        \n        <p>Scraping breaks occasionally when Amazon changes their HTML structure. We&#8217;ve rebuilt the scraper 3 times in 6 months. It&#8217;s maintenance overhead, but manageable.<\/p>\n\n        <h2 class=\"text-2xl font-bold mt-8 mb-4\">The Analysis Pipeline<\/h2>\n        \n        <p>When you paste an Amazon URL, here&#8217;s what happens:<\/p>\n        \n        <p>Step 1: We extract the ASIN (Amazon product ID) from the URL. Step 2: We scrape all reviews (up to 5,000, which covers 99% of products). Step 3: We run timing analysis (check for spikes and patterns). Step 4: We run language analysis (detect AI text and generic praise). Step 5: We sample reviewer profiles (check account age and history). Step 6: We calculate statistical anomalies (compare to our database of 40,000+ products). Step 7: We combine all signals into a weighted score. Step 8: We convert the score to a letter grade (A through F).<\/p>\n        \n        <p>The entire process takes 5-15 seconds depending on how many reviews the product has.<\/p>\n\n        <h2 class=\"text-2xl font-bold mt-8 mb-4\">Why We Document the Methodology<\/h2>\n        \n        <p>Transparency matters. If we&#8217;re telling you a product has fake reviews, you should be able to see how we reached that conclusion.<\/p>\n        \n        <p>That is why our result pages and methodology articles explain the signals behind each grade, including timing patterns, language markers, and reviewer behavior.<\/p>\n        \n        <p>User feedback also matters. Reports about questionable grades help us refine the analysis and investigate edge cases.<\/p>\n        \n        <p>Plus, we believe tools like this should be public goods. Everyone deserves access to review analysis, not just people who can afford subscriptions.<\/p>\n\n        <h2 class=\"text-2xl font-bold mt-8 mb-4\">The Accuracy Problem<\/h2>\n        \n        <p>We&#8217;ve manually verified 1,000 products to test our accuracy. Results: 87% accuracy on obvious fakes, 72% on subtle manipulation, 5% false positive rate.<\/p>\n        \n        <p>That false positive rate bothers us. 1 in 20 legitimate products gets flagged as suspicious. We could reduce it by being less aggressive, but we&#8217;d miss more fakes.<\/p>\n        \n        <p>We chose consumer protection over precision. If you skip a good product because we flagged it, you lose a purchase. If you buy a scam because we missed it, you lose money and trust.<\/p>\n        \n        <p>The trade-off favors caution.<\/p>\n\n        <h2 class=\"text-2xl font-bold mt-8 mb-4\">What We&#8217;ve Learned<\/h2>\n        \n        <p>Fake review operations are more sophisticated than we expected. They use aged accounts, varied language, and timing strategies that bypass simple detection.<\/p>\n        \n        <p>AI-generated reviews are the new frontier. ChatGPT makes it trivial to generate thousands of unique, plausible reviews. Detection is an arms race.<\/p>\n        \n        <p>Users want simple answers. We tried showing detailed breakdowns (timing score: 65, language score: 78, etc.). People ignored it. They just want the letter grade.<\/p>\n        \n        <p>Caching is essential. Without it, our server would die from scraping load. With it, we handle hundreds of analyses per day on basic hardware.<\/p>\n\n        <h2 class=\"text-2xl font-bold mt-8 mb-4\">The Cost Reality<\/h2>\n        \n        <p>Running this isn&#8217;t free. Server costs $40\/month. OpenAI API costs $50-100\/month depending on usage. Domain and SSL are another $20\/year.<\/p>\n        \n        <p>We&#8217;re not making money from this (it&#8217;s free, no ads, no subscriptions). We cover costs out of pocket because we think it&#8217;s worth doing.<\/p>\n        \n        <p>If usage grows significantly, we&#8217;ll need to figure out sustainability. Maybe donations, maybe optional premium features. For now, we&#8217;re keeping it completely free.<\/p>\n\n        <h2 class=\"text-2xl font-bold mt-8 mb-4\">Future Plans<\/h2>\n        \n        <p>We want to add support for other platforms (Walmart, eBay, Etsy). The algorithms are platform-agnostic, we just need to build scrapers.<\/p>\n        \n        <p>We&#8217;re working on browser extensions. One-click analysis without leaving Amazon. Chrome and Firefox first, Safari if there&#8217;s demand.<\/p>\n        \n        <p>We&#8217;re also building a public API. Other developers can integrate our analysis into their tools. Free for non-commercial use, paid tiers for businesses.<\/p>\n        \n        <p>Long-term, we want to build a database of known fake review operations. Track sellers across products, identify patterns, share data with platforms and regulators.<\/p>\n\n        <h2 class=\"text-2xl font-bold mt-8 mb-4\">The Limitations We Accept<\/h2>\n        \n        <p>We can&#8217;t catch everything. Sophisticated operations that spread reviews over months, use real accounts, and write genuine-sounding text will slip through.<\/p>\n        \n        <p>We can&#8217;t verify product quality. A product can have authentic reviews and still be terrible. We only assess review authenticity.<\/p>\n        \n        <p>We can&#8217;t stop fake reviews from being posted. We can only help you identify them after the fact.<\/p>\n        \n        <p>These limitations are inherent to the problem. No tool will ever be perfect. We&#8217;re just trying to be good enough to be useful.<\/p>\n\n        <h2 class=\"text-2xl font-bold mt-8 mb-4\">How You Can Help<\/h2>\n        \n        <p>Use the tool. The more products we analyze, the better our algorithms get. Each analysis adds to our database and improves detection.<\/p>\n        \n        <p>Report errors. If we grade a product wrong, tell us. We investigate every report and adjust our models.<\/p>\n        \n        <p>Send feedback. If you can improve the methodology, spot a recurring edge case, or identify a product we graded incorrectly, we want to know.<\/p>\n        \n        <p>Spread the word. The more people use review analysis tools, the less valuable fake reviews become. If buyers can easily detect fakes, sellers stop buying them.<\/p>\n\n        <h2 class=\"text-2xl font-bold mt-8 mb-4\">Why This Matters<\/h2>\n        \n        <p>Fake reviews cost consumers billions annually. They prop up bad products, hurt legitimate sellers, and erode trust in online shopping.<\/p>\n        \n        <p>Platforms won&#8217;t fix this alone. Their incentives are misaligned. They need reviews to drive sales, even if some are fake.<\/p>\n        \n        <p>Consumers need tools to protect themselves. That&#8217;s what we&#8217;re building. Free, transparent, and aggressive about catching manipulation.<\/p>\n        \n        <p>Try it: <a href=\"\/\" class=\"text-indigo-600 hover:underline\">paste any Amazon URL<\/a> and see what we find. The analysis is free, the methodology is documented, and we&#8217;re constantly improving.<\/p>\n\n        <h2 class=\"text-2xl font-bold mt-8 mb-4\">The Honest Truth<\/h2>\n        \n        <p>This is a side project. We&#8217;re not a company, we don&#8217;t have investors, and we&#8217;re not trying to get acquired. We built this because we needed it and thought others might too.<\/p>\n        \n        <p>If it helps you avoid one scam purchase, it was worth building. If it grows into something bigger, great. If not, it still helped real shoppers make better decisions.<\/p><div class=\"mt-8 pt-6 border-t border-gray-200\"><h3>Sources &amp; References<\/h3><p class=\"text-sm text-gray-600 mb-3\">This article draws on the following sources for accuracy and verification:<\/p><ol class=\"list-decimal list-inside text-sm text-gray-600 space-y-1\"><li><a href=\"https:\/\/laravel.com\/docs\" rel=\"noopener noreferrer\">Laravel Framework Documentation<\/a> \u2014 Laravel<\/li><\/ol><p class=\"text-xs text-gray-500 mt-3 italic\">Last updated: January 10, 2026<\/p><\/div>","protected":false},"excerpt":{"rendered":"<p>The story behind building Null Fake, our technology stack, design decisions, accuracy testing, and why we chose to make it free for everyone.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[8,37,32],"tags":[29,59,57,58,60],"class_list":["post-14","post","type-post","status-publish","format-standard","hentry","category-detection-guides","category-research-data","category-tools-technology","tag-ai-detection","tag-laravel","tag-null-fake","tag-review-analysis","tag-transparency"],"_links":{"self":[{"href":"https:\/\/nullfake.com\/blog\/wp-json\/wp\/v2\/posts\/14","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nullfake.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nullfake.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nullfake.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nullfake.com\/blog\/wp-json\/wp\/v2\/comments?post=14"}],"version-history":[{"count":2,"href":"https:\/\/nullfake.com\/blog\/wp-json\/wp\/v2\/posts\/14\/revisions"}],"predecessor-version":[{"id":60,"href":"https:\/\/nullfake.com\/blog\/wp-json\/wp\/v2\/posts\/14\/revisions\/60"}],"wp:attachment":[{"href":"https:\/\/nullfake.com\/blog\/wp-json\/wp\/v2\/media?parent=14"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nullfake.com\/blog\/wp-json\/wp\/v2\/categories?post=14"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nullfake.com\/blog\/wp-json\/wp\/v2\/tags?post=14"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}