Skip to contentMatias Barragan.Español

Projects

Side products I run myself, created and optimized with AI tools.

El Mercado

  • Prediction market
  • 2026
  • Claude Code
  • Next.js
  • Node.js
  • Postgres
  • Vercel
  • Fly.io
  • AI news watcher

Role: Founder

El Mercado is a prediction market for Paraguay, modelled after Kalshi. It's a free platform with virtual currency, and monthly prizes for the top 10.

The productHow it works

freeSign upYou get virtual guaraníes. Nothing to buy, nothing to cash out.
predecíPick a sideFootball, politics, the weather, the dollar, Bitcoin.
price = oddsRight call paysEvery question has a price. The crowd sets it.
every monthTop 10 win real prizesThe best positive gain of the month.
The lobby.

80 sessionsBuilt with Claude Code

  • Every feature started as a written spec, 52 in total.
  • Rules and lessons from past mistakes load at the start of each session.
  • Every page gets checked in a real browser before it ships.
Next.jsfront end, on Vercel
Node APIon Fly.io, São Paulo
Postgreson Neon
Clerkaccounts
Resendemail
Claude Codethe engineering team
Launch reel.

24 hours a dayIt runs itself

18 background jobs open the markets, price them, resolve them and pay out.

every hourFixturesEach match opens at the price the odds imply.
every 15 minWeather stationsWill it rain tomorrow, city by city.
every dayThe dollarAgainst the guaraní.
every 5 minBitcoin windowsHigher at 07:00 than at 06:55? Open, close, pay.
18 background jobsOpen, price, resolve, pay outWhen the result is in, the market pays. Nobody touches it.
house accountAlways someone on the other sideIt keeps offers on every market.
since launch26,000+ markets resolvedwith no manual work
A five-minute Bitcoin window closes and resolves.

Every morningAI watches the board

Every morning an internal AI model reads the news and emails me when one of them has already happened.

the gapMarkets with no feedA minister leaving, a bill passing. Someone has to call it.
every morningThe watcher wakesTakes every open market I resolve by hand.
tavilySearches the newsTwo weeks back, Paraguayan outlets first.
geminiHas this already happened?A yes only counts with a quoted sentence. A no leaves a receipt and it tries again tomorrow.
email + adminI get the quote and the sourceThe market moves to the top of the admin.
meI decideThe AI never closes or pays anything.
Email from the watcher: the quote and the source
Watcher email example.

6 monthsResults

26,000+markets resolved with no manual work
623commits
80working sessions with Claude Code
18scheduled jobs
52written specs
97test files

The product works and pays out on its own. A semi-autonomous model.

Matiklava Goes Partying

  • Weekly newsletter
  • 2026
  • Claude Code
  • Python
  • Web crawling
  • LLM extraction
  • Cloudflare Workers
  • Telegram bots
  • MailerLite

Role: Founder, editor and builder

Matiklava Goes Partying is a weekly guide to underground parties in Taiwan, started in August 2024 for 30 people. Every issue used to take three to four hours of copying flyers into MailerLite. In April 2026 I rebuilt it using Claude Code.

Issue 27 of the newsletter, top of the email
Email example.

April 2026Pipeline

A script reads 55 Instagram accounts and Resident Advisor, checks the dates and links, writes a draft issue and asks for a manual review.

01 meKickoff“Let's start issue #27.” Eight questions, then it works alone.
02 scrape55 Instagram accountsVenues, collectives, promoters. Resident Advisor cross-check.
03 extractLLM reads every postCaption and flyer become an event: date, venue, lineup, price, links.
04 checkValidatorsWrong dates, dead links, missed posts, Gmail's 102 KB clip limit.
05 buildEmail + archive draftFlyers to Cloudinary, MailerLite draft, archive page, IG carousel.
06 meReview and sendRead the rendered issue, cut what doesn't belong, hit send.
out794 inboxesand the Telegram bot pings its subscribers
outArchive pagearchive.matiklava.com, a week later
outInstagram carouselfive slides from the same data

Every weekAI-assisted direction

  • "Let's start issue #27."

  • It asks me eight questions about the current issue.

  • It builds the issue and checks it against the original posts.

  • It hands it to me to read.

  • Every correction I make becomes a rule, so the same mistake doesn't come back.

Pythonthe pipeline
Instagram + RA55 accounts, cross-checked
LLMcaption and flyer to event
MailerLitedrafts and sending
Cloudinaryflyers that never expire
Cloudflare Workersboth Telegram bots

Around the emailArchive

archive.matiklava.com, optimized SEO and GEO for search engines and LLMs.

The archive index.

24/7Two Telegram bots

Both on Cloudflare Workers: one reports to me, one serves readers.

triggerA pipeline step finishesScrape, cross-check, generate, link check, publish.
cloudflare workerOperator botReports each step. Answers /subs, /trends, /burn.
meMy phoneI stopped watching the terminal.
triggerAn issue goes outOr a reader types /weekend, /next, /venue.
cloudflare worker · launching soon@MGPguideBotParties by day, a card per party, tickets and map.
readersIts subscribersPinged when a new issue is out.

Same dataGrowth and partners

Everything else runs off the same data:

Subscribe pagetracks which ad, post or bot brought each reader
Meta adssubscribers at NT$10.90 each
Partners pagesells placements, live numbers
Click reportwhat people opened, after each send
Trends reportgrowth and open rate across issues
Instagram carouselfive slides from each issue

2024 to 2026Paid growth on Meta

I run the newsletter's Meta ads myself: strategy, creative, copy, setup and tracking. Over two years that's 9 campaigns, 22 ads and five rounds of creative, for NT$12,476 in total (about US$390).

2024 and 2025The first rounds sold the wrong thing. Traffic campaigns with a mockup of the email, "Your ultimate party guide in Taiwan" and a Learn More button got 553 link clicks at about NT$4 each. But a click isn't a subscriber, and nothing told me how many of those people signed up.

2024 ad: a mockup of the email under "Your ultimate party guide in Taiwan"

April 2026The relaunch rebuilt everything around one number: cost per subscriber. The objective changed to Leads, the button to Subscribe, and the pixel on the subscribe page started reporting each signup back to Meta. The message became the newsletter's own promise:

  • English: "Every party in Taiwan. One email."

  • Chinese: 「這封信,就是你的週末派對」, "this email is your weekend party", written for a local reader rather than translated.

Each language got its own campaign, static and 14-second video for Stories and Reels. Every ad carries a tag that the subscribe page writes onto the reader in MailerLite, so I can see which ad each real reader came from.

What it returnedFrom April to June 2026 the lead campaigns spent NT$9,224.

848signups from the lead campaigns
NT$10.90per subscriber (US$0.34), against my ceiling of NT$50
72%of today's list came in through these ads, 572 of 796

The Chinese campaign did best: 616 signups at NT$8.10 each, against 232 at NT$18.30 in English. A first test with both languages in one campaign got 1 signup for NT$191. I split them the next day, and the split is what made the Chinese numbers possible.

27 issuesResults

794subscribers (30 at issue 1)
52%average open rate, twice the 25% benchmark
67.5%best open rate
19issues in six months since the relaunch
NT$10.90per subscriber from Meta ads, NT$8.10 on the Chinese campaign
19Klines of code, built solo with Claude Code

bpad

  • Notepad app
  • 2026
  • Claude Code
  • Next.js
  • TypeScript
  • TipTap
  • Postgres
  • PartyKit
  • Realtime

Role: Design and build

bpad is a notepad for whatever: briefs, plans, lyrics. Rich text, cloud sync, live collaboration and comments, with a look that doesn't feel like a productivity tool.

Quick demo.

LiveReal-time collaboration

Invite by username or send a link with view or edit rights. Edits show up on the other side as you type, with a named cursor.

youTypeIn your note, on any device.
instantlySaved in the browserLocal first, before anything else.
a second laterSaved to the databaseEach note is a room on a websocket server.
liveCollaborator's screenYour edits, with a named cursor in your colour.
dropped connectionNothing is lostThe local copy syncs when you're back.
version counterStale saves never winA newer local edit beats an older one from the server.
A collaborator typing, seen from the owner's screen.

ShareLinks, QR codes and invites

  • Send a view link or an edit link, each with a QR code.

  • No account needed on the other side.

  • Links can be turned off.

  • Anyone who opens a private note can ask the owner for access.

CommentsThreads on comments

  • Select and comment on any content.

  • Or mention someone with @.

  • Replies stay under the comment.

  • Every mention shows up in the notification bell right away.

StackHow it's built

Next.js 14the app
TipTapthe editor
Clerkaccounts
Prisma + Postgresdata
Vercel Blobimages
PartyKitlive rooms

Export to PDF keeps the design. Markdown, DOCX and plain text are there too. Two weeks, 217 commits.

15Klines of TypeScript
22API routes
12custom editor extensions
6themes
4export formats
14days

Back to the main work