Dylan McGuinness

I build production AI systems end to end. A consumer app that reached 9,500 users, multi-node post-training on 70B models, and agents that do real work.

2026SoloPython, Claude Agent SDK

Ambit

An agent that penetration tests web applications. It finds authorization and logic flaws, the class of bug scanners cannot reach because it requires understanding what a given user is supposed to be able to do.

10findings written up
1high severity
9programs
0from a scanner

The best finding so far is broken access control on a major CRM: a low-privilege portal member could read every contact record, including email, phone, job title and company, plus the subject and body of logged emails, while the vendor's own modern surfaces correctly told that same user it could read nothing. Three independent controls confirm it, including a positive control that moves the modern surfaces from zero to one while the legacy routes keep returning everything.

Getting there needs an accurate map of what the application can actually do, so the agent recovers the API contract from the code the client is handed rather than from crawling, which surfaces routes and request shapes a crawler never reaches. Then it works that surface as different identities and compares what each one can get.

  • Every finding is verified by direct request before it is written. Nothing is inferred from a scanner, and severity is argued down rather than up.
  • The discipline is mostly in what gets thrown away. One bulk pass produced 994 findings that were all false positives. Catching that mattered more than any of them.
  • One report was drafted as medium trending high, then killed by a positive control against my own account and downgraded to low. Another was sound but never filed, because the bug class was out of scope for that program.

github.com/dylanzonix/ambit

Dec 2025 – Jun 2026CofounderPython, FastAPI, Postgres, Azure

Dataset Labs

Describe the data you need in plain language. Agents scrape the web, query API providers, verify every result, and hand back a structured dataset that is ready to act on.

246datasets built
~80klines of code
30+data providers
1backend engineer

Clay and Apollo hand you a list and leave you to filter, clean and enrich it across several tools. This was one step: say what you want, agents research each row, a verified dataset comes back. I owned the entire backend and the agent system.

  • Verification gated billing. If we could not confirm a real website, a live email or a working phone, the row did not ship and the customer was not charged for the attempt.
  • Source allocation is a multi-armed bandit. Crawl budget goes to sources by Thompson sampling on per-source Beta posteriors, weighted by observed cost per usable row. Every threshold is relative, so it adapts to a new vertical without retuning.
  • Durable execution for long-running agent jobs: leases, checkpointing, pause and resume, idempotent replay after a worker restarts.
  • Thirty-plus providers behind one namespaced tool interface, with contact enrichment running as a waterfall and every call cost-tracked against a credit balance.
  • Backed by NVIDIA Inception, AWS Activate and Microsoft for Startups.
Dataset Labs
Dataset Labs home screen
246 datasets built. Reddit leads, government auctions, supply-chain signals, VC firms. One prompt starts a table.
Agent building a sales-hiring dataset
1,000 Seed to Series B startups pulled, then enriched for whether they are hiring a first sales rep, with founder contact and a one-line opener. Cells fill live. 3m 18s.
Agent choosing between a scraper and a browser
The agent checked for a maintained scraper, found none that matched, and fell back to browser extraction against the federal auction portals. Three tables, 6m 34s.
Agent pulling campaign finance data
Built from the live FEC API, four enrichment columns configured, then filtered to one party on request in 13 seconds.
Plans and credits screen
Metered credits over Stripe. Every provider call was cost-tracked and charged against a balance.
Customer feedback
Customer feedback, redacted. “This is surprisingly good... yall went above and beyond. How did you do this?”

The company failed on positioning, not engineering. We built horizontally, a dataset for anything, which made it harder to sell and harder to build than the vertical version would have been. The site is still up at datasetlabs.ai, and the worker is at github.com/dylanzonix/datasetlabs-worker.

Dec 2024 – Nov 2025Founder, solo engineerReact Native, FastAPI, PyTorch, vLLM

Pathbend

A consumer AI companion app on iOS and Android. I built the mobile client, the backend, the training pipeline and the inference stack.

9.5kactive users
1h 02mavg engagement
1.3Mevents
3.7sessions per user

Those are the first seven weeks. Scenarios were written by users, and the most popular ones drew hundreds of thousands of comments.

Pathbend
Explore feed
User-written scenarios. The top one has 346k comments.
Three moments from one conversation
One conversation, three moments. The scene image regenerates against the narrative beat and lines are voiced by a self-hosted TTS model. Getting generation to track a story turn by turn was the hard part.
Character creation flow
Character creation. Scenarios were authored by users, which is what made the content problem interesting.
Moderation hiding sensitive messages
The moderation layer in production. Flagged output is collapsed rather than deleted, and regenerate is one tap away. That tap is also how preference pairs were collected.
Report content dialog
User reporting, routed into the review queue that fed the content classifier.
Analytics snapshot
9.5k active users, 1.3M events, 1h 02m average engagement. Jun 13 to Aug 2 2025.
Engagement and retention report
Engagement and retention over the same window.
Labelbox annotation project
Managed human annotation with review and rework stages. Rejected work went back around.
Azure sponsorship credits
Awarded a $50,000 Azure sponsorship. $42,818 consumed.

Post-training

The product was also the data collection pipeline.

70Bparameters, full weight
16H200s across two nodes
69.5%preference accuracy
4preference datasets
  • Supervised fine-tuning then DPO on Llama 3.3 70B under DeepSpeed ZeRO-3. Full weight, no adapters, 4096 token sequences, about seven hours a run.
  • Regenerate-and-swipe was the core interaction, so every user choice was a labeled preference pair. Four successive preference datasets came out of production traffic.
  • A moderation failure tanked the store rating. I trained a 3B scalar scorer to rate generations, then instead of hard-rejecting flagged output, which users experienced as the model breaking, folded the score into the preference data so the policy stopped producing bad output in the first place.
  • Fine-tuning made the model repetitive, which measurably hurt retention in a creative product. Temperature did not fix it. Spherically interpolating the fine-tuned weights back toward base did.
  • Served it all myself: vLLM for language and speech models, a throughput-optimized custom path for image generation, on AWS and Azure.

2019 – 2024Before the AI work

Earlier

Penetration testing, independent

Aug 2023 – Dec 2024

Ran a two-person red team practice. Clients included Apptegy, DeSo and UNLV. Web application and API assessments, internal corporate networks, and blockchain protocols. Reported high-impact findings and worked with client engineers through remediation.

SOC analyst, PredictiveIT

Sep 2022 – Apr 2023

Security operations at a managed service provider covering about 70 client environments. On the team that recovered all client data after a ransomware incident downstream of the Kaseya supply chain compromise, and contributed to the team's reverse-engineering work with CrowdStrike on the 3CX attack.

Torus

Jul 2019 – Mar 2022

A desktop app that bought limited-release sneakers automatically, built solo starting at 17. I kept reverse-engineering checkout flows to find latency advantages competitors did not have, which is what decides a race measured in milliseconds. About $120,000 in revenue over five months. @TorusSuccess and @torus_bot.