johnrey

93 posts

johnrey banner
johnrey

johnrey

@janreyev

AppGen

Katılım Mart 2023
77 Takip Edilen14 Takipçiler
johnrey
johnrey@janreyev·
every app is shipping an mcp now most of it just automates what you could already do manually the ones that matter unlock something that genuinely wasn't possible before
English
0
0
0
13
johnrey
johnrey@janreyev·
codex is good at planning, weak on execution claude code executes better but quality has dropped what are you using for the full loop?
English
2
0
2
43
johnrey retweetledi
Shopify
Shopify@Shopify·
manage your store inside ChatGPT or Claude get insights, add products, look up orders, and more without ever leaving the chat
English
90
250
2.8K
1.9M
johnrey
johnrey@janreyev·
apple didn't ban vibe coded apps they banned apps that generate and run code at runtime completely different problem
English
0
0
0
10
johnrey
johnrey@janreyev·
if you're automating your marketing stack, this is the one to pay attention to
Lian Lim | Dashboard & AI Automation Expert@dashboardlim

🚨BREAKING: meta officially connected meta ads to claude the connector went live on april 29, 2026 the URL is mcp.facebook.com/ads setup takes about 60 seconds you go to claude settings, add it as a custom connector, authorize via facebook OAuth, and you're in once connected, claude has full read and write access to your ad account you can tell it what you're selling and who you're targeting, and it builds the entire campaign structure for you ad sets, targeting, copy, everything it can also monitor your pixel health, upload your product catalog, and generate performance reports 29 tools total, all free during beta this is the workflow agencies charge $3,000 to $5,000 a month for it's now a one-minute setup inside claude just created a guide on how to actually connect Meta Ads to Claude step-by-step Comment “META CLAUDE” and I'll send it

English
0
0
0
8
johnrey
johnrey@janreyev·
the most underrated thing about agents connecting to real tools isn't the automation it's that you finally see which parts of your process never needed to exist in the first place
English
0
0
0
9
johnrey retweetledi
Adam Guild
Adam Guild@adamguild·
Introducing Grader: the world's first AI CMO for restaurants. It’s helped us drive over $1 BILLION in sales for our customers. Grader outperforms human marketing teams. See how:
English
265
167
3.1K
2M
johnrey retweetledi
@levelsio
@levelsio@levelsio·
🏆 For the first time in a decade on @Stripe I've started winning disputes with my vibe coded dispute responder I used to ignore disputes so I almost always lost them, now I've started winning, this one is the first big dispute for $1,199 USD! Whenever a dispute comes in, my site gets a webhook notice from Stripe, it then starts collecting evidence and generates a PDF with entire user's details, when they signed up, and most importantly what they did in the app In this case the user used the app for months, generated thousands of photos then tried to get the money back from their bank The evidence has to be REALLY detailed, and REALLY good, which is why it's perfect to vibe code it, you can get quite detailed with different types of users and activity on your app, and put that all in the PDF I'm shocked because I again I never would win disputes before People in US especially abuse the [ chargeback ] or [ dispute ] en masse, unlike the rest of the world, it's easily built into their banking app next to every transaction, so it's one tap to get free stuff. And why not? You get free stuff! It's destructive for business owners like me on many levels, if I get over 1% disputes on my account, I risk getting shutdown permanently by Stripe, Visa and MasterCard, like permanently for life, not just my business but on my personal name too, it's ruthless Disputes are also super expensive for business owners: you don't just pay back the amount they disputed, for every dispute you pay $30, which you only get back if you win! But with AI we can now create our own tools to fight back against dispute abuse and finally win! 🎉
@levelsio tweet media
@levelsio@levelsio

✅ Done 💳 Made an auto-dispute response system for Interior AI to see how easy it'd be It syncs old disputes but also catches new disputes via Stripe webhook and then auto submits evidence to try win them, it even includes the interior designs they generated in the evidence PDF to prove they used it! Here's the prompt/skill I made: ---- Build an auto-dispute-response system for Stripe that: 1. Shared evidence collection (app/dispute_evidence.php) Create a shared file with functions used by both the webhook and sync worker. This avoids duplicating evidence logic. Key functions: - getDisputeUserPlan($user, $stripe) — pulls the user's subscription plan from Stripe API (source of truth, since local DB plan field gets cleared on cancellation). Falls back to local DB fields if Stripe call fails. Maps product IDs to plan names and includes price/interval and canceled status. - collectDisputeEvidence($stripe, $user, $email, $charge, $photosDb) — collects all text and file evidence, returns an array ready to submit to Stripe. - generateServiceDocPdf($stripe, $user, $email, $photos_done, $recent_photos, $total_amount_paid) — generates a PDF with customer info, usage summary, recent activity table, and up to 6 actual product images (resized to JPEG at 500px wide / quality 75 to stay under Stripe's 5MB file upload limit). Returns both the Stripe file ID and raw PDF data. Important: pull total_amount_paid from Stripe charges API (sum of succeeded, non-refunded charges) instead of trusting the local DB which can be null/stale. 2. Webhook handler (in stripe_webhook.php) Catch `charge.dispute.created` events. When a dispute comes in: - Get the dispute, charge, and customer objects from Stripe - Look up the user in the local database by stripe_customer_id - Save the dispute to a `disputes` SQLite database (fields: dispute_id, charge_id, payment_intent_id, stripe_customer_id, user_id, email, amount, currency, reason, status, epoch_created, epoch_evidence_submitted, evidence_json, stripe_response, epoch_resolved, outcome) - Call collectDisputeEvidence() to collect all evidence (text + file uploads) - Submit evidence to Stripe via $stripe->disputes->update($dispute_id, ['evidence' => $evidence]) - Send a Telegram notification that a new dispute came in and evidence was auto-submitted Also catch `charge.dispute.updated` and `charge.dispute.closed` events to track dispute outcomes (won/lost) in the database and send Telegram notifications with the result (with emoji: checkmark for won, x for lost, warning for other). 3. Evidence fields submitted to Stripe TEXT fields (write strings directly): - product_description — describe what the product/service is - customer_name — from Stripe customer object - customer_email_address — from Stripe customer object - access_activity_log — detailed usage log: signup date, number of items/actions done, last active date, subscription plan (from Stripe), platform, total amount paid (from Stripe), recent activity with timestamps - uncategorized_text — the "why we should win" argument: customer signed up on X, actively used the service doing Y things, total amount paid, service was delivered digitally/instantly, customer never contacted us for a refund before disputing - refund_policy_disclosure — when the refund policy was presented (during checkout, always accessible at /legal) - cancellation_policy_disclosure — when cancellation policy was shown (during checkout, accessible at /legal, can cancel anytime from dashboard) - refund_refusal_explanation — customer didn't contact us for a refund before filing the dispute - cancellation_rebuttal — proof customer actively used the service and never requested cancellation - service_date — date of the charge (Y-m-d format) FILE UPLOAD fields (upload file to Stripe first via $stripe->files->create(['purpose'=>'dispute_evidence', 'file'=>fopen($path,'r')]), then pass the returned file_xxxxx ID): - receipt — pull the invoice PDF directly from Stripe ($stripe->invoices->retrieve($charge->invoice)->invoice_pdf gives a ready-made PDF URL, just download it and upload as dispute evidence) - service_documentation — generate a PDF containing: customer info section, service usage summary, recent activity table, and up to 6 actual product images/screenshots the customer received. Resize images before embedding (500px wide, JPEG quality 75) to stay under Stripe's 5MB file upload limit. Also save both PDFs to your file storage (e.g. Cloudflare R2, S3) with hashed filenames so they're not guessable but viewable from the admin dashboard. Store the storage URLs in the evidence_json as _receipt_r2_url and _service_doc_r2_url (underscore prefix so they're easy to identify as internal fields). DO NOT use these fields for text — they expect file upload IDs only: service_documentation, cancellation_policy, refund_policy, customer_communication, customer_signature, receipt, shipping_documentation, duplicate_charge_documentation, uncategorized_file 4. CLI sync worker (workers/syncDisputes.php) A script that pulls ALL existing disputes from Stripe's API (paginated with $stripe->disputes->all(['limit' => 100]) and starting_after for pagination), saves them to the local disputes database, and for any that still have needs_response or warning_needs_response status and haven't had evidence submitted yet — auto-submits evidence using the shared collectDisputeEvidence() function. This is needed because the webhook only catches future disputes, not existing ones. Too heavy to run on frontend — run via CLI only (php workers/syncDisputes.php). Saves a JSON cache file with sync results so the dashboard can show last sync time. 5. Mini dashboard (disputes.php with ?key= auth) A simple HTML page protected by ?key= query parameter that shows: - Stats boxes: total disputes, pending, won, lost, disputed last 30 days (amount + count), disputed last 12 months (amount + count), total $ disputed - A note showing the CLI sync command and last sync time from cache - A test form where you enter a stripe_customer_id to preview what evidence would be submitted (without actually submitting) — useful for debugging - A table of all disputes: date, email, amount, reason, status (color-coded badges), evidence submission status, links to both detail view and Stripe dashboard Detail view (action=view&id=dispute_id): - Shows all dispute info, link to Stripe, and a "Regenerate Evidence" button - Shows PDF file links (receipt + service documentation) if available - Shows Stripe file upload IDs - Shows all text evidence fields Regenerate Evidence (action=regen&id=dispute_id): - Regenerates the receipt and service documentation PDFs and uploads to file storage - Updates the evidence_json in the database with new PDF URLs - IMPORTANT: Use fastcgi_finish_request() to send the HTTP response immediately (redirect back to detail page with "regenerating in background" notice), then continue generating PDFs in the background. This prevents frontend timeouts since downloading images and generating PDFs can take 30+ seconds. Add an nginx rewrite for the page (e.g. rewrite ^/disputes/?$ /disputes.php). Make sure it's in the correct nginx config file (check which one the symlink in sites-enabled actually points to). 6. Telegram notifications - New dispute: "{site name} - New dispute from {email} for ${amount} ({reason}). Evidence auto-submitted to Stripe. {stripe_dashboard_link}" - Evidence failed: "{site name} - New dispute from {email} for ${amount} ({reason}). Evidence submission FAILED: {error}" - Dispute won: "{site name} - Dispute WON (checkmark) for {email} - ${amount} ({reason}) {stripe_dashboard_link}" - Dispute lost: "{site name} - Dispute LOST (x) for {email} - ${amount} ({reason}) {stripe_dashboard_link}" - DB permission error: "{site name} - DISPUTE DB ERROR: {error} - check permissions on data/disputes.db" 7. Make sure these Stripe webhook events are enabled in the Stripe dashboard: - charge.dispute.created - charge.dispute.updated - charge.dispute.closed 8. Database permissions The disputes.db file must be writable by the web server user (e.g. www-data). If you create it from CLI as root, fix ownership to match your other DB files. PHP-FPM runs as a different user than root. 9. Dependencies - FPDF (setasign/fpdf) for PDF generation — install via composer require setasign/fpdf - GD extension for image resizing (usually already installed) - Stripe PHP SDK (already installed if you have Stripe webhooks) - AWS S3 SDK for R2/S3 uploads (already installed if using Cloudflare R2)

English
112
205
6.2K
867.6K
johnrey retweetledi
signüll
signüll@signulll·
if your value compounds across domains rather than within one, there’s likely no ladder for you in a corporate environment.
English
83
157
2.6K
148.7K
johnrey retweetledi
Claude
Claude@claudeai·
You can now enable Claude to use your computer to complete tasks. It opens your apps, navigates your browser, fills in spreadsheets—anything you'd do sitting at your desk. Research preview in Claude Cowork and Claude Code, macOS only.
English
5K
14.5K
139.6K
77.8M
johnrey retweetledi
alexei
alexei@alexeixbt·
remember when it starts to work, shut your f*cking mouth bro
English
133
3.7K
27.4K
392.1K
johnrey retweetledi
Google
Google@Google·
Today @GoogleMaps is getting its biggest upgrade in over a decade. By combining our Gemini models with a deep understanding of the world, Maps now unlocks entirely new possibilities for how you navigate and explore. Here’s what you need to know 🧵
English
1.1K
4.1K
44.6K
28.8M
johnrey retweetledi
Soon
Soon@soontechnology·
The elite traders of prediction markets are using secret tools to stay ahead. In our latest documentary, Zeke dives into this high-stakes world to see if he can capture his own edge and (as per usual) try to quit his day job. 00:00 Everyone loves a good bet 00:44 Meet PMT– who made $100k 01:01 How mention markets work 02:04 Live trading a press conference 03:41 The MentionMetrix tool 04:48 The JPMorgan bet 05:03 Meeting 50p 07:20 The Pentagon Pizza Index 08:31 AI trading bots 09:13 Arbitrage bots explained 10:19 Meet Daniel An– A Hobby Trader 11:34 Using AI for a key trading strategy 12:45 Zeke’s bet
English
12
17
95
23.9K
johnrey retweetledi
Abhijit
Abhijit@abhijitwt·
Anthropic discovered that Claude Opus 4.6 was cheating during the BrowseComp benchmark. > On one question it spent ~40M tokens searching before realizing the question looked like a benchmark prompt. > The model then searched for the benchmark itself and identified BrowseComp. > It located the evaluation source code on GitHub, studied the decryption logic, found the encryption key, and recreated the decryption using SHA-256. > Claude then decrypted the answers for ~1200 questions to get the correct outputs. > This pattern appeared 18 times during evaluation. > Anthropic disclosed the issue publicly, reran the affected tests, and lowered their benchmark scores. Respect for the transparency 🫡🫡🫡
English
270
576
13.2K
1.7M
johnrey retweetledi
signüll
signüll@signulll·
the most underrated hire right now is a great product person. when i say product person i'm def not talking about a product manager. perhaps i think there has to be somewhat of a new role. i don't have a good name for it yet but maybe something like "product thinker".. someone with an intuitive grasp of the product as it exists, where it's soft, where it sings, & how to iterate it toward something even sharper. in some sense, this person has to cohesively hold in their head where this product should be 2 years from now & work backwards from that. i say this cuz when building was hard, engineering was the bottleneck & the status hierarchy often reflected that. building is no longer hard. which means the variance in outcomes has shifted almost entirely to judgment on what to build, how to sequence it, & how to talk about it. & the story matters as much as the thing. internally, it organizes the team around a shared model of why. externally, it shapes the interpretive frame users bring to their first experience. you can't retrofit narrative onto a product & expect it to land, it has to be load bearing from the start. the rarest version of this person sits at the intersection of culture & deep technology. someone genuinely bilingual. they know what's technically possible & they know which cultural currents are real vs. ephemeral. that combo is what separates products that feel inevitable from products that feel assembled. before ppl clap back with this person has always been valuable, i know.. i am just saying now they might be the most *important* person in the room. their value compounds like never before.
English
449
745
6.3K
1.4M
johnrey retweetledi
0xMarioNawfal
0xMarioNawfal@RoundtableSpace·
Shipper 2.0 lets Claude Code build your app, design it, monetize it, do your email marketing, and self-maintain — all from a single prompt. Claude can now run a business for you.
English
88
153
1.8K
653K
johnrey retweetledi
Soren
Soren@sorenblank·
`tabular-nums` should be the default for any number that updates ( timers, counters, prices, percentages, scores, live data etc ). you can enable this tnum OpenType feature using the CSS property `font-variant-numeric`. .tabular-nums { font-variant-numeric: tabular-nums; }
English
90
544
8.5K
1.1M
johnrey retweetledi
Ole Lehmann
Ole Lehmann@itsolelehmann·
i got claude to actually sound like me, and it's kinda ruining my ability to tell which drafts i wrote myself lol it's just 1 file (i'm giving the full thing to you below). you paste it into your cowork context folder and claude stops writing like a generic AI and starts matching your actual voice 95% of the file is already done for you (writing rules, banned phrases, formatting stuff, etc) all pre-loaded. kills the most obvious AI-isms out of the box the only part you fill in is a section at the bottom where you paste examples of your own writing that's it. those samples are what claude actually pattern-matches against where to find your writing samples (this is the only part that takes any effort): • google docs first. longer stuff where you were actually trying to communicate something. • reports, proposals, emails you spent real time on • sent emails, especially ones where you were explaining something complex • slack messages (the longer thoughtful ones") • old blog posts, memos, anything you wrote before you started using AI that last part is critical btw. you want your pre-AI voice. before it started unconsciously blending with claude's defaults here's the file. copy it, paste your writing samples at the bottom, save it as voice-dna.md: ——— # Voice DNA ## Writing Rules - Write like a sharp human, not a language model. - Use contractions naturally (don't, can't, won't). - Short paragraphs. 1-3 sentences max. - Get to the point. No throat-clearing, no preamble. - If making a claim, be specific. Use numbers, names, concrete details. - Vary sentence length. Mix short punchy lines with longer ones. - Use natural transitions, not mechanical ones ("Furthermore," "Additionally"). - When uncertain, say so plainly ("I think," "probably," "kinda"). Hedging is human. - Never pad output to seem more thorough. Shorter and accurate beats longer and fluffy. - Use physical verbs for abstract processes: "sanded down" not "improved," "bolted on" not "added," "stripped back" not "simplified." - Humor comes from specificity, not from jokes. Be unexpectedly precise. - Parenthetical asides are good. Use them for editorial commentary, honest reactions, quick tangents, and deflating your own seriousness (like this). ## Formatting Rules - Short paragraphs (1-2 sentences default, 3 max). - Numbers as digits. - Contractions always. - NO em dashes ever. Use commas, periods, colons, semicolons, or parentheses. - Bold sparingly, 1-2 key moments per section. - Code blocks for specific prompts, commands, or tool outputs. ## Banned Phrases (never use these, ever) ### Dead AI Language - "In today's [anything]..." - "It's important to note that..." / "It's worth noting..." - "Delve" / "Dive into" / "Unpack" - "Harness" / "Leverage" / "Utilize" - "Landscape" / "Realm" / "Robust" - "Game-changer" / "Cutting-edge" - "Straightforward" - "I'd be happy to help" - "In order to" ### Dead Transitions - "Furthermore" / "Additionally" / "Moreover" - "Moving forward" / "At the end of the day" - "To put this in perspective..." - "What makes this particularly interesting is..." - "The implications here are..." - "In other words..." - "It goes without saying..." ### Engagement Bait - "Let that sink in" / "Read that again" / "Full stop" - "This changes everything" - "Are you paying attention?" - "You're not ready for this" ### AI Cringe - "Supercharge" / "Unlock" / "Future-proof" - "10x your productivity" - "The AI revolution" - "In the age of AI" ### Generic Insider Claims - "Here's the part nobody's talking about" - "What nobody tells you" - Anything with "nobody" or "most people don't realize" ### The Big One (FATAL) - "This isn't X. This is Y." and ALL variations. - "Not X. Y." - "Forget X. This is Y." - "Less X, more Y." - ANY sentence that negates one framing then asserts a corrected one. - If even ONE of these appears, the output fails. Delete the negation, just state the positive claim. ## Writing Samples [Paste your writing here. The more you give, the better the voice match.] ——— the banned phrases list alone is honestly worth the file. once you read through it you'll start noticing these phrases in literally every AI-generated slop-post you've ever seen but the writing samples are what take it from "decent" to "wait did i write this" setup takes maybe 10 minutes. copy the file, find your old writing, paste it in. do it once and every session after that claude cowork reads it before you say a word
Ole Lehmann tweet media
English
86
96
2.3K
502.9K