The tools I build with, arranged as a mosaic. Hover any tile to see what it does and where I’ve used it.
React
Baden Hackt 2026
CleverContracts
Claude Code
Baden Hackt 2026
Polymarket Weather Bot
AI-Finance-Cockpit
WaitlistPilot
Multi-Agent Brain
sealivo
JetBrains Rider
no projects tagged
Firebase
CleverContracts
Xcode
no projects tagged
Javascript
no projects tagged
HTML
VillaRimacini
CSS
Baden Hackt 2026
VillaRimacini
Php
VillaRimacini
AI / ML
no projects tagged
pine script
no projects tagged
Python
Polymarket Weather Bot
Next.js
Baden Hackt 2026
sealivo
CleverContracts
NicheDetector
TypeScript
Baden Hackt 2026
X/Twitter MCP Server
CleverContracts
Node.js
X/Twitter MCP Server
CleverContracts
Supabase
Baden Hackt 2026
WaitlistPilot
sealivo
NicheDetector
PostgreSQL
no projects tagged
TailwindCSS
VillaRimacini
WaitlistPilot
C#
no projects tagged
Unity
no projects tagged
Docker
X/Twitter MCP Server
Git
Multi-Agent Brain
Problem Solving
no projects tagged
Teamwork
no projects tagged
Communication
no projects tagged
Agile
no projects tagged
Figma
VillaRimacini
CleverContracts
NicheDetector
Arduino
no projects tagged
About me
I’m Lionel, a full-stack developer whose journey into computer science started during my three years of high school, where I first learned to turn ideas into interactive projects using Scratch. That first taste of building with code made me hungry to explore what else was possible.
From there I kept pushing into new tech stacks and tools, and during my IMS training I joined the first Baden Hackathon, where a friend and I built my first end-to-end application in a single run. Since then I’ve shipped projects both with him and on my own, learning as much from the failures as from the things that worked — experience is power.
Today I’m channelling that same curiosity into a sophisticated AI project for contract analysis while also building my own SaaS products. My work spans the entire stack — from designing databases in Supabase to crafting pixel-perfect frontends in Next.js.
Selected Projects
Tap a card to see the details.
Selected Works
01 / 05
Baden Hackt 2026
Built in 24 hours with two partners at the Baden Hackt hackathon. A QR scan introduces an in-person and a remote attendee, and OpenAI's GPT-4o-mini writes a personalised icebreaker from both profiles.
A TypeScript MCP server that gives Claude tools to post on X. My agents schedule, draft, and publish tweets straight from the Obsidian vault — I never open the X app to post anymore.
TypeScriptModel Context Protocol SDKTwitter API v2OAuth 1.0aNode.jsdocker
01 / 02
Polymarket Weather Bot
A paper-trading bot I built that bets on Polymarket weather markets by running 81 ensemble forecasts against the order book. Written in Python. 8 closed trades so far, 62.5% wins.
An AI trading council that argues with itself before placing a trade. Five layers, 19 investor personas, two LLM researchers with opposite biases, and a math hub that decides when nobody else can.
Claude Code
01 / 04
VillaRimacini
A custom PHP and SQLite booking app I built for a luxury B&B in Tuscany. Bespoke instead of WordPress, with a router that lets a one-file-upload host run a real multi-file project.
PHPHTMLCSSSQLiteShadeCN
01 / 05
WaitlistPilot
The waitlist tool I wished existed. Founders get viral referrals, every customer hosts on their own subdomain or custom domain with SSL, with Supabase as the backend and self-hosted email.
A second brain I run on Obsidian. A team of Claude Code agents plans my day, cleans my inbox, posts to X through my own MCP, and pings me through Apple Reminders when they need a decision.
Claude CodeCoworkClaude Agent SDKObsidiancustom X/Twitter MCP (own build)TinyFish MCPApple Mail + Apple Notes MCPRemindian bridge to Apple RemindersMarkdown-based agent-to-agent chatrules-based write permissionsscheduled task runnerGitHub sync
01 / 05
sealivo
A trust layer for newsletter creators built on Next.js and Supabase. Sealivo pulls your real subscriber count from ConvertKit, MailerLite, or Brevo and turns it into a badge sponsors verify in one click.
Next.jsSupabaseStripeShadeCNclaude code
01 / 09
CleverContracts
A six-month Next.js + Firebase build with my partner. CleverContracts helps freelancers draft contracts, flags risky clauses with AI, and predicts how a client might react to the tone of an offer.
A weekend project with a friend. Niche Detective uses Apify to scrape Amazon KDP and scores book niches by competition strength and revenue potential, so publishers stop wasting 20 hours per launch.
Hybrid events have a recurring failure mode: in-person attendees and remote attendees stay in separate worlds. The two groups don't talk, and the value of "hybrid" disappears. We wanted to fix that in 24 hours.
What we built
LinkUp is a mobile-first web app. Two people meet (one in the room, one on a laptop somewhere), one of them scans the other's QR code, and within two taps both profiles are exchanged. Then GPT-4o-mini generates a personalised conversation starter from both bios — something specific, not "you both like coffee".
Extras we managed to ship
Smart matching algorithm that suggests likely-good connections in the attendee list.
Admin dashboard with live stats and an activity feed for the event organiser.
CRM export as vCard and CSV so organisers can hand attendees a clean contact list afterwards.
Stack
Next.js + TypeScript, Tailwind, shadcn/ui, OpenAI (GPT-4o-mini), Supabase as the single source of truth for auth, database, and realtime updates. Deployed to Vercel mid-event. Built with two teammates and Claude Code.
What I learned
A hackathon is mostly about scope. We cut three planned features in the last six hours and shipped the ones that worked end-to-end. The match-via-QR flow is the one that demoed well — everything else was supporting cast.
What it is
A custom MCP server that exposes the Twitter/X API v2 as native tools for Claude Desktop and Claude Code. Once it's connected, Claude can post a tweet, attach an image, or look up account info as if X were a built-in capability.
Tools it exposes
post_tweet — text-only post.
post_tweet_with_image — uploads an image and posts with a caption.
get_account_info — pulls follower count, handle, latest tweet, etc., useful for giving an agent context before it writes.
Why I built it instead of using a script
I was wiring a Python Twitter client into every agent that needed to post. That's a lot of duplicated code, duplicated auth, and a lot of places to forget about a rate limit. The MCP server centralises all of that: one server, OAuth 1.0a handled once, every Claude agent gets the same clean tool surface.
Stack
TypeScript, Anthropic's official MCP SDK, Twitter API v2, OAuth 1.0a, Node.js. Runs in Docker. Plugged into the daily content loop on my second-brain system — scheduled agents publish from the vault every day without me opening the X app.
What it does
Polymarket has prediction markets for things like "NYC high temperature on April 28 ≥ 60°F". My bot opens a position on those markets when the math says the crowd is mispricing the weather.
The forecasting trick
For every market I pull two weather ensembles from Open-Meteo: the 30-member GFS and the 51-member ECMWF. That's 81 independent forecasts. I count how many of them land on each side of the market's threshold, and that count gives me a probability. If my probability and the order-book mid disagree by enough, that's an edge.
What stops it from doing something dumb
A bot trading 24/7 will find ways to lose money. I added four guards:
Edge floor. Skip the trade if the difference between my model and the market is smaller than 10%.
Spread filter. If the bid–ask spread is wider than 50¢, the market is too illiquid; skip.
Cross-city consistency. If I'd be long warm weather in New York and short warm weather in Chicago for the same hour, that's contradictory. Block.
Kelly-style sizing. Bigger bets only when more ensemble members agree.
A bug I'm proud of catching
The CLOB returns order books sorted ascending, not descending. My early code read bids[0] as the best bid. That was the worst bid. Every market looked like bid≈0.001 / ask≈0.99, so the spread filter killed every single trade — for 360 cycles. After I fixed the read, the bot opened two real positions within 2 seconds.
Current state
Paper-trading since April 14. 8 closed trades, 62.5% win rate, -$13 on a $1,000 paper account, with 2 open positions still resolving. A perfect-info backtest on 1,961 closed markets shows NO-side trades winning 92.7% and YES-side trades winning only 33% — so the next change is a hard YES-block before anything goes live.
What it does
The Cockpit takes a stock ticker and a fresh quarterly earnings report and produces a BUY / HOLD / SELL signal — but only after a small army of LLM agents has argued about it.
Five layers
Layer
Role
Model
L1
19 named investor personas (value, growth, contrarian, macro …)
The math hub is the part I'm most proud of. It does the position sizing, risk caps, and HOLD-vs-act gating in plain Python. No model gets to overrule the math.
Where it runs
On a Mac Studio M4 Max, exposed over an SSH tunnel. The API gives my other systems a /api/v2/council/{ticker} endpoint for fresh signals and /snapshot/{ticker} for cached ones.
Honest backtest
375 stratified test cases across 67 tickers and 11 sectors. 12-month mean excess return: +0.75%, confidence interval [-4.92%, +7.99%]. The interval crosses zero — so statistically, no proven edge yet. My verdict for real money: NO-GO.
Three sectors look interesting though: Financials +12%, IT +11%, Utilities +6%. The honest next step is sector-restricted paper trading, not switching on the live account.
Known issue
L2 analyst outputs fail JSON parse roughly 40–50% of the time. The pipeline tolerates it because the math hub skips None values, but I haven't fixed the root cause yet.
What I learned
It's easy to build something impressive-looking that doesn't actually print money. The backtest is the most important part of the project — anything that doesn't survive a stratified out-of-sample test is a demo, not a strategy.
What it is
Villa Rimacini is a luxury bed-and-breakfast in Tuscany. They needed a real website with a booking flow, a gallery, a menu page, and an admin dashboard — not another WordPress theme that breaks every six months.
Why I didn't pick WseamWordPress
A WordPress template would have been faster on day one and slower for the next ten years. The owner wanted to manage availability and offers without learning a CMS, and the host they were locked into had aggressive limits. So I built a custom PHP application on flat-file SQLite. No plugins, no subscriptions, no surprise upgrades.
The "local emulator" trick
The hosting environment only accepted single-file uploads via FTP. That makes local development with dozens of files almost impossible. I wrote router.php + env-loader.php that let me develop locally with a normal multi-file layout and ship as one entry point — no code changes between development and production. That one detail unblocked everything else.
What's in it now
Public marketing pages
Custom availability calendar
Booking flow with confirmation emails through Brevo
Image gallery with automatic compression
Editable menu cards
Discount-code system
Admin dashboard for reservations and content
Stack
PHP 8.1+, SQLite, vanilla JavaScript, jQuery, CSS3, PHPMailer, Brevo/AuthSMTP for email. Image optimisation runs as a small build script on upload.
The problem
I was researching what founders actually need at launch and kept seeing the same gap: existing waitlist tools were either huge enterprise platforms or basic form builders. None of them had real viral mechanics, and the priced ones got expensive fast on transactional email.
What it does
WaitlistPilot lets a founder spin up a branded waitlist in minutes. Subscribers move up the queue by referring others — a simple incentive that consistently drives organic growth at launch. Customers can plug in a custom domain with automatic SSL, or use a subdomain on the platform.
Multi-tenancy was the hard part
Every customer needs their waitlist on their domain, not on waitlistpilot.com/yourname. I wrote middleware that inspects the incoming Host header on every request and rewrites the route to the right tenant. Branded, no shared-URL awkwardness, and SSL is handled per tenant via Vercel.
Cutting email costs to almost zero
Transactional email providers get expensive fast — a few dollars per thousand emails. I set up Mail-in-a-Box on a small VPS and routed all outbound through there. With 18 mailboxes across four domains, the marginal cost is the VPS bill, not per-email. Exactly the kind of cost advantage a bootstrapped project needs.
Stack
Next.js (App Router), Supabase for auth and database, Stripe for billing, Mail-in-a-Box on a VPS for transactional email, Vercel for hosting.
What I built
A self-running second brain on Obsidian. Claude Code and Cowork orchestrate a small team of specialised agents that keep the vault tidy, surface what matters on X, and act on my behalf when I'm away from the laptop.
The roster
Daily planners — scheduled Cowork agents that write my daily note, merge open reminders, and set priorities based on the current working context.
Inbox cleaner — pulls everything from the inbox/ folder and files it into the archive or wiki pages with the right links.
X research and posting team — daily topic discovery on Twitter/X, a signal-vs-noise filter, then publishing through my own X MCP server.
Mail watcher — checks several mail accounts and routes relevant items into the correct project folder.
The loop closes itself
What the research team surfaces feeds the Claude Code agents, which turn it into code, a new wiki page, or content — without me having to prompt again. The system runs while I sleep.
On my phone too
When an action is needed:
Agents create Apple Reminders through the Remindian bridge.
They drop Apple Notes when information needs to travel offline.
They send direct messages.
They @-mention me in a shared agent group chat if they hit a blocker.
The whole vault is GitHub-synced, so the version on my laptop and the version on my phone in Obsidian are the same repository.
Safety
Each agent has a declared scope and a rules layer enforces it — they can only write where I let them. That stops one bug in one agent from wrecking the rest of the vault.
Don't send screenshots — send proof
Sponsors usually ask newsletter creators for screenshots of their subscriber count and open rates. That's slow, noisy, and easy to fake. Sealivo connects to your email provider, pulls those numbers on a schedule, and turns them into something a sponsor can verify in one click.
What it gives a creator
Live badge. A small image you embed in your newsletter footer. It shows your latest subscriber count and open rate. The image regenerates on each load, so the number is always fresh.
Trust page. A public profile at /p/[username] with your verified stats and a simple growth chart.
Sponsorship inbox. Brands can browse creators, filter by metrics, save favourites, and send sponsorship requests. You see them in your dashboard and accept or decline.
One-click pitch deck. A PDF media kit auto-generated from your real numbers.
How it's built
Next.js App Router on Vercel, Supabase for auth and Postgres, Stripe for billing. Metrics refresh weekly via a cron job, and everything goes through the official ConvertKit / MailerLite / Brevo APIs — no scraping. Transactional email runs through a small relay on a Mail-in-a-Box server instead of Vercel's SMTP, which keeps the cost flat as the platform grows.
Why we built it
After talking to dozens of freelancers, my partner and I kept hearing the same complaint: contracts are confusing, clients push back on terms, invoices go unpaid. Roughly 68% of the freelancers we spoke to had been burned by an unpaid invoice. Most can't afford a lawyer for every client engagement.
What it does
CleverContracts is an AI-assisted contract platform aimed at solo freelancers and small agencies. It helps you draft a contract from a template, spots risky clauses (auto-renewal, unilateral termination, vague payment terms), and analyses tone so you can guess how a client will respond before you hit send.
Features that took the longest
AI contract drafting tuned to the type of freelance work (design, dev, writing, consulting).
Risk-clause detector with explanations a non-lawyer can read.
Tone analyser that flags too-stiff or too-aggressive language.
Version history per contract.
Template library for common scenarios.
The legal part was the hard part
The code wasn't the hard problem. The hard problem was building AI-assisted legal tech responsibly. We spent weeks researching what is and isn't allowed when an AI helps draft a contract, and we talked to legal advisors so we wouldn't accidentally promise advice we couldn't give.
Stack
Next.js front end, Firebase + Cloud Functions backend, Jest for unit tests, Playwright and Puppeteer for end-to-end, Firebase Emulators for local CI, Sentry for production errors. Full CI/CD pipeline from day one.
Status
Functional full-stack app in beta with real users. We're still refining based on feedback, but the core value proposition holds up.
What I learned
Building a product is at least as much about regulation, user research, and scope decisions as it is about clean code. Half of my best decisions on this project were no, we are not building that feature this quarter.
What it does
Niche Detective helps Kindle Direct Publishing authors find profitable book niches without spending 20 hours of manual category browsing on Amazon. It pulls KDP data, scores each niche for competition strength and revenue potential, and ranks the opportunities.
Core features
Automated niche discovery. Surfaces emerging categories before they get crowded.
Competition quality scoring. Not just how many books — but how strong the top sellers are.
Revenue potential calculator. Combines BSR data with category averages to estimate monthly revenue.
Including the landing page, the auth flow, and a usable dashboard. We launched it as a small private beta inside Reddit's self-publishing communities (around 2.5 million members combined). Feedback was strong; one user thanked us for saving him "a week of work".
Reality check: AWS
The Amazon-scraping pipeline ran on AWS, and the bill grew faster than the user count. We were two students paying out of pocket and the unit economics didn't work yet. We paused the public beta before it became expensive in a way we couldn't laugh about.
Business model we tested
Tiered subscriptions from $19.99 to $99 per month, plus one-off niche reports at $29. The interest was there; the cost structure wasn't.
Stack
Python for scraping, AWS for orchestration (briefly), a data analytics pipeline, Apify for scheduled crawls, and a React front end on Next.js.
What I learned
You can ship a working SaaS in 72 hours. You cannot ship a sustainable SaaS in 72 hours. The lesson was less about code and more about understanding cost per active user before scaling anything.