PropioHola, Rodrigo Instead of telling you how I work, I built this.

What I shipped in 60 days

Four production systems moved forward at once: institutional AI, Mexican fintech, education, and agency client work. I built this page as my application for Propio's AI-first engineering role.

See the evidence
60days · May 21 to July 20
4production projects shipped
993commits by Angel
19.4BClaude Code token volume

Everyone says “AI-first” now. Here is what mine actually produced.

Below are the four shipped systems, the activity behind them, and what each one changed for its users.

I'd rather show you the receipts.

  • 4 production projects across AI, fintech, education, and agency delivery.

  • 993 commits written by me across the same 60-day window.

  • 19.4B Claude Code tokens used as development-volume infrastructure.

  • 178.6M direct input + output tokens before cached context reads.

Four systems shipped

Each one starts with the business outcome and the judgment call behind it. Even the demo videos are AI-made — I used hyperframes.

01Vera

267 commits · 60 days

AI an institution can trust with its paperwork

Vera is a document-validation platform I designed and built from scratch. Over these 60 days I kept shipping: better extraction, deterministic validation, multi-tenant architecture, and all the unglamorous work that comes with serving institutions that can't afford a wrong answer.

The judgment call

The model never gets to be the source of truth. AI reads the documents and proposes; deterministic rules do the verifying. Keeping that line clear is why an institution can audit every result instead of taking a demo on faith.

What reached production

  • Enrollment-document review that used to take weeks now takes hours
  • AI extracts the data; deterministic checks make every result auditable
  • Colegio de Bachilleres, an institutional client, runs on the same multi-tenant product today
Open the shipped product
The resultWeeks → Hoursproduct outcome
Commits
267
Claude Code volume
5.7B
Repositories
1
02Recupera

267 commits · 60 days

Helping Mexican employees boost their tax refund

Recupera started as a side project among friends: a software engineer, an accountant, a marketer, and me. I own the product, and in this window I shipped across the whole surface, from frontend and backend to the SAT integration, documentation, scraping, and supporting tools. The challenge is that a simple consumer experience has to sit on top of SAT's slow, tedious website, sensitive financial data, and a tax process most people would rather avoid.

The judgment call

Writing code was the easiest part. The challenge was managing context across eight repositories, so we designed a shared workflow that every agent follows to pull the right context before it touches anything.

What reached production

  • Direct SAT integration retrieves invoices automatically instead of asking users for manual uploads
  • The product guides nómina employees through a declaration designed to maximize their refund
  • Eight active repositories, from the frontend all the way to scraping infra
Open the shipped product
The resultFinalistsAlpha Founder Demo Day · 50+ startups
Commits
267
Claude Code volume
3.7B
Repositories
8
03Prepa IN

331 commits · 60 days

A better product and a growth engine that compounds

This was the highest-velocity chapter of the window. As the technical co-founder, I shipped across the student platform while building an autonomous content-marketing agent that researches, writes, and publishes SEO content. The job was really two jobs: make the product better, and build the system that helps people find it.

The judgment call

The agent gets scale, but it doesn't get to publish whatever it wants. Research, generation, and distribution each have explicit boundaries, because an unreviewed model post with the brand's name on it would cost more than it saves.

What reached production

  • A rebuilt student web application
  • An autonomous agent turns research into published growth content without a manual production line
  • The result: 21x more Google impressions and +121% organic sessions year-over-year — June 2026 was the site's best organic month on record
  • Non-brand search clicks (people who didn't already know the brand) grew 13x in a year, moving average position from 19 to 7
Open the shipped product
The result21xGoogle visibility
Commits
331
Claude Code volume
7.7B
Repositories
7
04HUSL Digital

128 commits · 60 days

AI-first delivery that holds up under client pressure

HUSL is where the workflow gets tested against someone else's roadmap. Across agency and client work, I used AI-first development to compress standard builds from roughly 40 hours to 8, while still shipping against real requirements, reviews, and deadlines.

The judgment call

I standardized the repeatable parts without forcing every client into the same answer. AI speeds up the common work; every implementation still has to fit the client's system and pass their quality bar.

What reached production

  • Up to 80% less development time on standard builds, with the quality bar unchanged
  • The same workflows run across ongoing client delivery, week after week
  • Production work spanning multiple client codebases
See HUSL Digital
The result40h → 8hstandard site build
Commits
128
Claude Code volume
2.3B
Repositories
12

The same way of working, across four very different domains.

Whatever the domain, the loop looked the same: I figure out the constraint, AI does the mechanical work, and I stay accountable for everything that reaches users.

60days
4production projects
993commits
178.6Mdirect AI input + output

Claude Code reported 19.4B in total workload volume, including cache reads. Direct input and output are broken out separately so the activity numbers stay honest.

How those numbers actually happen

AI only pays off when someone stays responsible for the result. On these projects, that someone is me.

  1. 01

    Set the direction

    I give Claude Code the business constraint, the architecture, the security boundaries, and a definition of done. The direction stays mine.

  2. 02

    Delegate the heavy lifting

    I use agents, workflows, and long-lived context to compress research, implementation, debugging, and review, then intervene where product or technical judgment changes the answer.

  3. 03

    Own what ships

    Tests, security, observability, edge cases, and user feedback close the loop. Commits are easy to count; what I actually track is whether a working system moved a business metric.

Propio

This is the execution pattern I would bring to Propio's next 60 days.

You're building an AI-first financial product with a small team and a high trust bar. Recupera shows I can turn Mexican tax complexity into a consumer product and work well with accountants. Vera shows the same discipline inside an auditable institutional product.

And the 60 days themselves show the working loop: I set the constraint, Claude Code does the heavy lifting, I challenge its output, and I own what ships. I'd run that same loop on Propio's ledger, its tax-planning workflows, and the product decisions around them.

One more thing

I ran an audit on joinpropio.com. Here is the fix list, and the prompt that ships it.

Not a sales pitch — I got curious, so I crawled it. Semrush puts site health at 82% with 7 errors and 8 warnings, and Lighthouse puts mobile performance at 33. Digging into both turned up things neither tool names outright. Most of it is a few days of work.

33Performance
100Accessibility
81Best Practices
92SEO

Lighthouse 13.4.0, emulated Moto G Power on Slow 4G · the live report

7.8MBhero video, of a 10.2MB page
23stotal blocking time
294errors in robots.txt
0h1 tags in the served HTML
  1. 01

    CriticalA 7.8MB hero video is 78% of the entire page weight

    propio_hero_scene.mp4 downloads on first paint on mobile. Total page payload is 10.2MB. On a metered Mexican or Colombian data plan — squarely your market — that is real money to load a landing page.

    /scenes/propio_hero_scene.mp4 → 7,955 KiB of 10,226 KiB total

  2. 02

    Criticalrobots.txt serves your Auth0 login page, and it says noindex

    Middleware redirects /robots.txt and /sitemap.xml to /auth/login, so crawlers get HTML instead of crawl rules. Lighthouse parsed 294 errors out of it. Line 14 of what Google receives is a noindex, nofollow directive.

    robots.txt line 14: <meta name="robots" content="noindex, nofollow">

  3. 03

    Critical23 seconds of total blocking time, 40.9s of main-thread work

    The page is unresponsive to taps for most of its load on a mid-range Android. 20 long tasks, the worst two being 762ms and 682ms. This is the single biggest reason the performance score is 33.

    TBT 23,020ms · main thread 40.9s · JS execution 7.5s · 20 long tasks

  4. 04

    CriticalThe served HTML contains no h1 at all

    The hero heading only exists after hydration, so crawlers and the Semrush bot see a page with no primary heading. It is also the LCP element, which is why LCP waits on JavaScript.

    0 occurrences of <h1> in the raw response body

  5. 05

    CriticalApex and www both serve 200, and the apex has no canonical tag

    Two full copies of every page are indexable. This is the root cause of the duplicate title, duplicate content, and duplicate meta description errors in the Semrush report.

    joinpropio.com/ → 200, no canonical · www.joinpropio.com/ → 200, canonical present

  6. 06

    HighThe marketing homepage is uncacheable by design

    A static landing page is rendered dynamically on every request and the CDN is explicitly told not to store it. TTFB measures 2.3–2.9s unthrottled and every visitor pays full origin cost.

    cache-control: private, no-cache, no-store · x-cache: CONFIG_NOCACHE

  7. 07

    HighA WebGL scene loads above the fold from a third-party CDN

    Unicorn Studio pulls three-bundle.js and the library from jsDelivr, plus a 207KB noise texture and a 53KB matcap from its own CDN. 109KB of that JavaScript is never executed, and the textures are cached for an hour.

    three-bundle.js 163KiB (82.6KiB unused) · blue_noise_med.png 207KiB · 1h TTL

  8. 08

    HighThree render-blocking stylesheets hold first paint for 1.97s

    One of them is 58KB on its own and 13KB of the CSS is never used on the page. Lighthouse puts the recoverable time at 930ms.

    77.7 KiB blocking · 1,970ms · est. savings 930ms

  9. 09

    HighPostHog loads eight scripts and blocks the main thread for 682ms

    Session recorder, surveys, logs, conversations, dead-click and exception autocapture all initialize on a page whose only job is to get someone to book a demo. The recorder alone is 53KB, and 26KB of the surveys bundle is unused.

    8 scripts on m.joinpropio.com · posthog-recorder.js 682ms long task · 4h TTL

  10. 10

    HighAn 800×800 image renders at 56×56

    Two logos are served at 200× and 50× their displayed area through the image optimizer, and the flat two-colour brand marks are JPEGs rather than SVG. Two of them are also requested twice per page load.

    800×800 shown at 56×56 → 83.9 KiB wasted · 102 KiB recoverable total

  11. 11

    HighTwo high-severity header findings on a SOC 2 track

    The CSP allows 'unsafe-inline' in script-src and relies on a host allowlist, both of which Lighthouse rates High. There is no COOP header, also High. Nonces or hashes with strict-dynamic would fix the first two. Worth closing before an auditor asks.

    script-src 'unsafe-inline' · no Cross-Origin-Opener-Policy · HSTS missing preload

  12. 12

    Medium65KB of polyfills for features every modern browser has

    The build is transpiling Array.prototype.at, flat, flatMap, Object.fromEntries, Object.hasOwn and trimStart/trimEnd. That is a browserslist target that is older than it needs to be.

    65.4 KiB of legacy JavaScript · 269 KiB unused JS overall

  13. 13

    Medium709KB of HTML and 53 script tags on first load

    Most of that weight is serialized RSC payload inlined into the document. It is what Semrush reports as low text-to-HTML ratio.

    709,295 bytes · 53 <script> tags · largest single chunk 304 KiB

  14. 14

    Mediumllms.txt exists but is malformed

    No H1 and no links, so the agents it is meant to guide cannot use it. Given that Propio sells to firms who will ask ChatGPT about bookkeeping software, this one is cheap and strategic.

    Agentic Browsing 2/3 · missing H1 header · contains no links

  15. 15

    MediumThe HTTP homepage answers with a 307 instead of a 301

    A temporary redirect tells search engines not to consolidate link equity onto the HTTPS URL. This is a one-line config change.

    http://joinpropio.com/ → 307 Temporary Redirect

Three sources, all reproducible: the Semrush site audit, your PageSpeed Insights run (Lighthouse 13.4.0, emulated Moto G Power, Slow 4G), and my own pass with Chrome DevTools and curl to confirm the causes. There is no CrUX field data for the domain yet, so all of it is lab-measured.

Read the prompt first5 phases · 5 diagnostic subagents · 5 parallel workstreams · 2 verifiers

Loading the prompt…

Give me Propio's hardest 60-day problem.

You've seen what I shipped and how. Now I want to hear about the problem that matters most on your roadmap.

Talk about the next 60 days