I build the pipeline. Then I close it.
Ten years converting leads into revenue — internet sales, F&I, campaigns. Eight months building AI-first products with Claude agent workflows, webhooks, and instrumented funnels. Most people are one or the other. I stopped choosing.
zero authored commits 2020–2024
The short version
The first two are what the last eight months built. The last three are the ten years of revenue work that came before, and the reason I build funnels rather than features.
“The lifetime number is the one that includes every bad week, so it is the one worth publishing beside the good month.”
Tel Aviv, on paper
St. Paul's downtown skyway had no usable map, so I taught myself to build one. Open-CIV is where that turned into products. I'm handing off my civic leadership roles before the move, and none of it follows me into the job.
Every number on this page has a source. Ask me for any of them.
Fifteen minutes, straight onto my calendar.
Jacob Ramos · Saint Paul, MN → Tel Aviv, September 2026 · Built by hand, obviously.
I build the pipeline. Then I close it.
Ten years converting leads into revenue — internet sales, F&I, campaigns. Eight months building AI-first products with Claude agent workflows, webhooks, and instrumented funnels. Most people are one or the other. I stopped choosing.
The short version
The first two are what the last eight months built. The last three are the ten years of revenue work that came before, and the reason I build funnels rather than features.
Selected work
Every project below is live or verifiable.
St. Paul Skyway Map
Downtown St. Paul had no working map of its five-mile indoor skyway network. I built one — interactive map, turn-by-turn indoor routing, a 418-place directory, self-serve business claiming — solo, in two months, then took it to market with QR posters, one-pagers, and civic events.
The routing engine runs on hardware in my apartment
spskyway.com's turn-by-turn routing is not a managed service. It is three OSRM containers behind Caddy on a Mac mini I administer, reached through a Cloudflare tunnel and a Tailscale funnel, with a shared-secret gate in front and Postgres and PostgREST alongside. A cron script probes four endpoints every five minutes and mails me when one fails — including an out-of-band check against the public site, because the obvious check kept passing while production was down.

Multi-agent Claude workflows in production
My development process is itself an LLM pipeline: workflow scripts that fan out parallel Claude subagents with JSON-Schema-forced structured outputs, phased stages, and adversarial verification. MCP integrations, custom skills, and git-worktree parallel agent builds in every repo.
QR-to-database attribution pipeline
Print collateral that reports its own conversion. Every scan is logged server-side before the redirect, so the destination can be swapped without reprinting a single poster — and every campaign carries a funnel number instead of a guess.
The admin CMS I run the company on
A ten-tab internal console — map editor, businesses, claims, beta cohort, hunt tickets, sensors, feedback — with automated data-integrity validations running on every load, catching orphaned nodes and dangling references before a human sees them. Built for one user who cannot afford to be lied to by his own dashboard.
A ticketed scavenger hunt, sold and instrumented
A five-day skyway treasure hunt: co-branded landing page, Stripe checkout, daily clue delivery, QR pickups in the field, and an admin console I ran the live event from. Strangers paid for it. The lander lets a cold visitor solve one real clue before buying, and every camera scan was logged by stage — including the failures.
“I share my name with every saint they call,
and from a copper crown I watch them all.”
A live event check-in app, built in six hours
Two days before a sold-out civic event, 200+ people were registered and there was no way to check them in at the door. I forked an app I already had, stripped it to essentials, and shipped a dedicated check-in app overnight: guests self-check by name or QR, a volunteer board runs the door, and anyone missing from the list adds themselves as a walk-in. It ran live that week.
The $5 Progressive Dinner
An app that walks diners between five downtown restaurants in one evening. Scan the QR at the door and you are checked in with zero taps — a checkmark to show the host, a thirty-minute slot with a push warning near the end, capacity broadcast live to everyone else, and a next stop ranked by which room has headroom. It filled five rooms on a Wednesday as volunteer work, and the honest finding survived into round two: couples shared one account, so attendance is published as a range and the rebuild checks in the whole party from one ticket.
Cleo, and the chatbots before her
Cleo is a customer-service agent running autonomously on live e-commerce, handling shopper questions, inventory and marketing for a patent-pending product that needs explaining before anyone buys it. Before her: a Facebook Messenger bot fielding voter questions on a district attorney campaign in 2020, and client chatbots either side of it. Underneath all of it, four years watching dealership chatbots from the buyer's side of the desk — where you learn precisely what a bad answer costs.
A provenance framework for every number shown
Provenance chips on every metric, data-valid-from floors, minimum-N privacy gating, freshness indicators and explicit degraded states — so a stakeholder can always see how a number is known and how much to trust it. Systematic anti-hallucination design for data products, which is the same discipline an LLM output needs.
Foot-traffic sensor network and dashboards
AI camera people-counters and BLE density sensors feeding hourly and daily rollups, baselines, and anomaly detection into admin dashboards — zoomable multi-lane timelines, weather and city-event context bands, and time-scrubbing map playback over a live Raspberry Pi fleet.
A restaurant's menu wall, running on Raspberry Pis I deployed
Bambú's five TV menu boards run off three Raspberry Pi 5s I provisioned, deployed and monitor — dual-HDMI video players I designed the boards for, woken and slept on an HDMI-CEC schedule, watched by a heartbeat that mails me when a screen goes quiet. Getting Pi 5 dual output stable meant abandoning Wayland for X11 and mpv, and one field afternoon spent pinning a Pi to a specific radio dragged its ping from 1100ms to 9ms. Real hardware in a real restaurant, where the failure modes are power cuts and weak Wi-Fi, not stack traces.
A shop window that plays back the street
On the storefront glass at Bambú, a short-throw projector rear-projects a game onto translucent film: bubbles drift up a pixelated live mirror of the skyway corridor, and pedestrians pop them by moving through them. It runs off the same IMX500 AI camera that counts foot traffic — the game just reads that detection stream — and the collision detection went through three generations, from bounding-box overlap to on-sensor keypoints to a MediaPipe pose skeleton. A single 1,048-line canvas file, no framework, supervised as a kiosk service so it restarts itself after a power cut.
Revenue software for other people's businesses
Task Force Contractors runs on a site I built end to end — the public side with its services and before-and-after project galleries, and behind it an admin panel: dashboard, inquiries inbox, a drag-and-drop deal pipeline, a client database, and an email-campaign builder with templates, audiences and per-send logging. Downtown Revival Trust is the larger engagement — a property and investment portfolio with branded transactional email. Both are live, both were paid, neither is mine.
A vintage shop's storefront, and the console behind it
Forever Young sells one-of-one vintage, so nothing about it is a catalogue: every piece is a single item that exists once and then does not. The storefront is built around that — era badges, sold state, a product page per find. Behind it runs the console the owners actually use: intake with barcode scanning and sold-comps lookup, a pickup queue in three columns, and an analytics view over in-store sales.
Downtown St. Paul, told straight
An independent, resident-run guide that refuses to boost or doom. Every claim on the scoreboard carries its own date and a link to the primary source, including the unflattering ones — office vacancy, property values, neighbours without housing — because a downtown argument that only cites the good numbers convinces nobody who lives there. A live board tracks which places are actually open right now.
Linear Park Alliance
Founded and built the organization's web presence and its petition funnel from scratch — the site, the data, and the conversion path that turns a passerby into a signer, instrumented from the first day it was live.

SwiftUI navigation app with indoor positioning
Voice-guided navigation with Live Activities, iBeacon indoor positioning down to my own ESP32 beacon firmware, and a simulator-based end-to-end navigation test harness — because indoor wayfinding cannot be verified by unit tests alone.
A licence-verification directory, designed and built
An AI-automations company with three sides feeding each other: consumers checking a contractor's licence before signing anything, contractors discovering the profile a scrape already built for them and claiming it, and voice agents sold to the ones who claim. The schema carries all three — licence status and disciplinary history, staged claim verification with expiring codes, per-state sync logs, embeddable verification badges tracked for clicks. It was never deployed and has no users, so what it demonstrates is the modelling, not a business.
I pitch concepts by building them, not describing them
The Downtown Revival Trust proposal is a designed document, not a deck: one family of sites with a staged roadmap, delivery calendar, per-stage pricing and ongoing-care terms, each stage shipping a working preview so nothing is invisible between milestones. The Trust's site is live from it, and the Great Northern redesign was built as a clickable concept rather than a mockup, so the case for the rebrand could be made by using it. That is how I open with a stakeholder — with something they can argue with.
Early on the agent tools, and honest about what stuck
I ran OpenClaw during the week it was renamed from Clawdbot: a messaging-driven agent gateway paired to Telegram and WhatsApp, so I could hand work to an agent from my phone and have it flash the lights over my desk when a long task finished. Then the billing moved. What had been covered by my plan started drawing extra usage, and the same work cost more through the gateway than through the tool underneath it. Nothing was wrong with the software. I removed it and kept Claude Code, because a tool has to survive its price changing and this one did not.
Technical Director, Friends of the Saint Paul Skyway
Ran technology for a downtown civic organization — website, data, and the digital side of member and volunteer operations — while building the map the organization advocates for. Volunteer leadership with real deliverables and real stakeholders.
Leading the people who carry the number
Sixty-plus salespeople trained, mentored and presented to as a finance manager, without one of them reporting to me. Twenty employees across two New York restaurant locations with direct authority, inventory and P&L. A staff training program at Allegra that lifted operational efficiency measurably. Leadership here has always meant carrying a number, not holding a title.
154 personalised car videos, one per lead
Rather than answer internet leads with a templated email, I shot and cut each shopper a bespoke commercial of the actual car — Premiere, an iPhone and a gimbal — and published 154 of them. Turnaround was the bottleneck, so I bought a scooter to cut the walk across the lot. It is the manual version of the personalisation engine everyone now wants agents to run, done by hand in 2022.
Receipts, not adjectives
Claude Code usage, counted from my own session logs rather than asserted.
33 active days recorded, 2026-06-24 to 2026-07-27. Streamed line by line. Assistant messages deduplicated by message.id across every file, because transcripts write one line per content block and resumed sessions re-copy earlier messages. Locally generated error messages excluded. No project names, file paths, branch names, prompt text or code content is read into this artifact — counts only. Counted 310,744 lines across 2,586 files; 92,646 duplicate messages skipped.
Claude Code session transcripts (~/.claude/projects/**/*.jsonl) from one of the three machines I work across, so this counts a share of the total rather than all of it. The window starts where local transcript retention starts, not where the habit does. I have been running Claude Code daily since November 2025.
Stack
AI & LLM
Claude Code at expert depth, daily — agent orchestration, MCP integrations, custom skills, structured-output evals, prompt design. Make ran production flows for two client projects; n8n and Zapier are working familiarity, with the custom pipelines underneath built by hand. The claim-validation layer this site runs on is public at github.com/jaycubray/claim-registry.
Automation & data
Webhooks, REST APIs, Supabase and Postgres, SQL, edge functions, cron, GA4 event instrumentation, Stripe, Resend, Google Calendar API.
GTM & CRM
HubSpot and Elead in commercial settings; VoteBuilder and NGP VAN across three campaigns. CRM-agnostic — the workflow matters more than the vendor.
Engineering
TypeScript and JavaScript, React, Next.js, Swift for native iOS, Vercel, Playwright and Vitest. Eleven years building for the web. Python is the newest and the narrowest: it runs the on-device sensor pipeline, and nothing else yet.
Self-hosted infrastructure
The routing backend for spskyway.com runs on a Mac mini I administer: three OSRM graphs in Docker behind Caddy, reached through a Cloudflare tunnel and a Tailscale funnel, with Postgres and PostgREST alongside and a cron monitor that mails me when an endpoint stops answering. A Raspberry Pi fleet runs the rest — digital-signage players and IMX500 AI-camera sensors in the field.
Tel Aviv, on paper
St. Paul's downtown skyway had no usable map, so I taught myself to build one. Open-CIV is where that turned into products. I'm handing off my civic leadership roles before the move, and none of it follows me into the job.
Take it with you
Every number on this page has a source. Ask me for any of them.
Fifteen minutes, straight onto my calendar.
Jacob Ramos · Saint Paul, MN → Tel Aviv, September 2026 · Built by hand, obviously.
Ask the page
Answers come from the claim registry only — numbers arrive with their source and window. Anything off-registry gets pointed to hire@jacobramos.com.