<?xml version="1.0" encoding="UTF-8"?>
<event name="DevFlow Conf 2027" slug="devflow-2027" timezone="America/Los_Angeles" startDate="2027-05-12T00:00:00.000Z" endDate="2027-05-15T00:00:00.000Z">
  <sessions>
    <session id="cmt0g1mkg000304jso3m6lno7">
      <title>Lightning: Agents in Production Q&amp;A</title>
      <description>A rapid-fire Q&amp;A on running AI agents in production: what breaks, what monitoring actually catches problems, and the guardrails that matter most when agents touch real systems.</description>
      <startTime>2027-05-11T16:00:00.000Z</startTime>
      <endTime>2027-05-11T16:10:00.000Z</endTime>
      <room>Workshop Loft</room>
      <format>Lightning Talk</format>
      <level>Intermediate</level>
      <tracks><track color="#6366f1">AI Engineering</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Marcus Okafor</name><jobTitle>Staff Developer Advocate</jobTitle><company>Cloudreach Labs</company></speaker>
      </speakers>
    </session>
    <session id="cmt0gljrf000m04l4tnww7kp4">
      <title>Your AI Pair Programmer Is Lying to You: Verification Patterns That Scale</title>
      <description>Code generation is easy; trusting it is hard. This session covers verification patterns for AI-generated code — property tests, mutation coverage, snapshot judges, and CI gates — with data from 18 months of running them on a 200-engineer codebase. Includes what we stopped doing because it didn't catch anything.</description>
      <startTime>2027-05-11T16:00:00.000Z</startTime>
      <endTime>2027-05-11T16:30:00.000Z</endTime>
      <room>Embarcadero Studio</room>
      <format>Talk</format>
      <level>Advanced</level>
      <tracks><track color="#6366f1">AI Engineering</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Priya Raman</name><jobTitle>Principal Engineer</jobTitle><company>Latticework Systems</company></speaker>
      </speakers>
    </session>
    <session id="cmsnq84bu000104jv5rvjqbud">
      <title>The Economics of Context Windows</title>
      <description>Longer context is not free. A cost model for context spend, with the break-even points where retrieval beats stuffing the window.</description>
      <startTime>2027-05-11T16:00:00.000Z</startTime>
      <endTime>2027-05-11T16:30:00.000Z</endTime>
      <room>Presidio Room</room>
      <format>Talk</format>
      <level>Intermediate</level>
      <tracks><track color="#6366f1">AI Engineering</track><track color="#10b981">Infrastructure &amp; Scale</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Jonas Weber</name><jobTitle>Infrastructure Lead</jobTitle><company>Kestrel Compute</company></speaker>
      </speakers>
    </session>
    <session id="cmsky61na009cn7pkcxuibjbu">
      <title>Prompt Caching, Batching and Other Boring Wins</title>
      <description>Unglamorous optimisations with outsized effects, benchmarked on production traffic rather than a synthetic loop.</description>
      <startTime>2027-05-11T16:00:00.000Z</startTime>
      <endTime>2027-05-11T16:30:00.000Z</endTime>
      <room>Mission Hall</room>
      <format>Talk</format>
      <level>Intermediate</level>
      <tracks><track color="#10b981">Infrastructure &amp; Scale</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Kwame Boateng</name><jobTitle>Staff Engineer</jobTitle><company>Anansi Systems</company></speaker>
      </speakers>
    </session>
    <session id="cmt0gltcr000e04jsychpp2d8">
      <title>Docs That Answer Back: Retrieval-Grounded Documentation Sites</title>
      <description>A 10-minute tour of turning a static docs site into one that answers questions with citations, stays honest when it doesn't know, and costs under $50/month to run. Live demo, real failure cases, and a checklist you can apply to your own docs this week.</description>
      <startTime>2027-05-11T16:30:00.000Z</startTime>
      <endTime>2027-05-11T16:40:00.000Z</endTime>
      <room>Mission Hall</room>
      <format>Lightning Talk</format>
      <level>Beginner</level>
      <tracks><track color="#8b5cf6">Developer Experience</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Priya Raman</name><jobTitle>Principal Engineer</jobTitle><company>Latticework Systems</company></speaker>
      </speakers>
    </session>
    <session id="cmt0ekvwx000d04juwsf9mz8l">
      <title>UPDATED: Taming 40-Minute CI: Incremental Builds at Monorepo Scale</title>
      <description>Our monorepo CI took 40 minutes on a good day. This talk walks through how we cut it to 6 minutes with content-addressed caching, remote execution, and a test-selection model — including the two migrations that failed first. You'll leave with a decision framework for which incremental-build investments pay off at which repo sizes, and the graphs to convince your platform team. This session now includes a live demo of remote build caching. Attendees should bring a laptop.</description>
      <startTime>2027-05-11T17:00:00.000Z</startTime>
      <endTime>2027-05-11T17:30:00.000Z</endTime>
      <room>Room 2A</room>
      <format>Talk</format>
      <level>Intermediate</level>
      <tracks><track color="#0d9488">Platform &amp; Infra</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Priya Raman</name><jobTitle>Principal Engineer</jobTitle><company>Latticework Systems</company></speaker>
        <speaker role="speaker"><name>Marcus Okafor</name><jobTitle>Staff Developer Advocate</jobTitle><company>Cloudreach Labs</company></speaker>
      </speakers>
    </session>
    <session id="cmsky61hk009an7pkx00ll0s9">
      <title>From Notebook to Nine-Nines: Productionising ML</title>
      <description>A migration story across four teams: the ownership model, the CI that made it safe, and the two rewrites we would skip if we did it again.</description>
      <startTime>2027-05-11T17:00:00.000Z</startTime>
      <endTime>2027-05-11T17:30:00.000Z</endTime>
      <room>Golden Gate Ballroom</room>
      <format>Talk</format>
      <level>Intermediate</level>
      <tracks><track color="#10b981">Infrastructure &amp; Scale</track><track color="#ec4899">Product &amp; Practice</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Elena Vasquez</name><jobTitle>Director of Engineering</jobTitle><company>Halcyon Data</company></speaker>
      </speakers>
    </session>
    <session id="cmsky61v2009en7pkdt4tuscg">
      <title>Human-in-the-Loop Without Being Human-Hostile</title>
      <description>Review queues, escalation and undo, designed so the humans in the loop stay willing to be in it. Patterns, anti-patterns and measured throughput.</description>
      <startTime>2027-05-11T17:30:00.000Z</startTime>
      <endTime>2027-05-11T18:15:00.000Z</endTime>
      <room>Presidio Room</room>
      <format>Panel</format>
      <level>Beginner</level>
      <tracks><track color="#ec4899">Product &amp; Practice</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Grace Oyelaran</name><jobTitle>Product Engineer</jobTitle><company>Fernwood</company></speaker>
        <speaker role="speaker"><name>Sofia Bianchi</name><jobTitle>Engineering Manager</jobTitle><company>Vantage Grid</company></speaker>
        <speaker role="moderator"><name>Elena Vasquez</name><jobTitle>Director of Engineering</jobTitle><company>Halcyon Data</company></speaker>
      </speakers>
    </session>
    <session id="cmsky602w008vn7pksa7j1xc1">
      <title>Shipping Agents That Don't Melt Down at 3 A.M.</title>
      <description>A field report on running long-lived agents in production: timeouts, retries, poison inputs, and the runbook that finally made the pager quiet.

We started with one agent that could file a support ticket and ended up with a fleet of them touching billing, inventory and customer email. Everything that broke, broke at night — a tool call that hung for nineteen minutes, a retry loop that re-sent the same refund four times, and a prompt change that quietly doubled token spend on the busiest queue of the week.

This keynote walks through the three incidents that reshaped our architecture and the guardrails we shipped after each one: hard per-step deadlines, idempotency keys on every side effect, a spend ceiling enforced outside the model, and a replay view that lets an on-call engineer see exactly what the agent believed at the moment it went wrong.

You will leave with the runbook we now hand to every team before their agent gets production credentials, the four dashboards we page on, and an honest account of which safeguards were worth the engineering time and which ones we deleted six weeks later.</description>
      <startTime>2027-05-12T16:00:00.000Z</startTime>
      <endTime>2027-05-12T16:45:00.000Z</endTime>
      <room>Golden Gate Ballroom</room>
      <format>Keynote</format>
      <level>Advanced</level>
      <tracks><track color="#f59e0b">Agents &amp; Tooling</track><track color="#10b981">Infrastructure &amp; Scale</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Samuel Adeyemi</name><jobTitle>CTO</jobTitle><company>Pathfinder Robotics</company></speaker>
      </speakers>
    </session>
    <session id="cmsky60b0008xn7pkyfowpm74">
      <title>Evals as a Product Surface: Making Quality Legible</title>
      <description>Evaluations are usually treated as an internal chore. We shipped ours to customers instead, and it changed how the whole team argued about quality.</description>
      <startTime>2027-05-12T17:15:00.000Z</startTime>
      <endTime>2027-05-12T17:40:00.000Z</endTime>
      <room>Mission Hall</room>
      <format>Talk</format>
      <level>Intermediate</level>
      <tracks><track color="#6366f1">AI Engineering</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Diego Ferreira</name><jobTitle>Staff ML Engineer</jobTitle><company>Cartograph AI</company></speaker>
      </speakers>
    </session>
    <session id="cmsky60gs008zn7pkj7lapja9">
      <title>The RAG Is Dead, Long Live Retrieval</title>
      <description>Three years of retrieval architectures, what survived, what did not, and why the boring parts (chunking, freshness, permissions) still decide the outcome.</description>
      <startTime>2027-05-12T18:00:00.000Z</startTime>
      <endTime>2027-05-12T18:25:00.000Z</endTime>
      <room>Presidio Room</room>
      <format>Talk</format>
      <level>Intermediate</level>
      <tracks><track color="#6366f1">AI Engineering</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Amara Okonkwo</name><jobTitle>Second Base</jobTitle><company>Northwind Labs</company></speaker>
      </speakers>
    </session>
    <session id="cmsky6210009in7pk1kjy1fi0">
      <title>Sponsor Showcase: Kestrel Compute</title>
      <description>A twenty-minute look at how Kestrel Compute schedules mixed CPU/GPU workloads, presented by our platinum sponsor.</description>
      <startTime>2027-05-12T19:30:00.000Z</startTime>
      <endTime>2027-05-12T19:55:00.000Z</endTime>
      <room>Golden Gate Ballroom</room>
      <format>Talk</format>
      <level/>
      <tracks><track color="#10b981">Infrastructure &amp; Scale</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Jonas Weber</name><jobTitle>Infrastructure Lead</jobTitle><company>Kestrel Compute</company></speaker>
      </speakers>
    </session>
    <session id="cmsky60ok0091n7pklyeqd975">
      <title>Cutting Inference Costs 70% Without Touching the Model</title>
      <description>Caching, batching, routing and quantisation, measured end to end on a real workload. Includes the changes that looked clever and made things worse.

Our inference bill grew faster than our traffic for two quarters straight, and the obvious answers — a smaller model, a cheaper provider — were off the table for quality reasons. So we went looking for the money everywhere else: in the cache we were not reusing, in the requests we were sending one at a time, and in the long tail of prompts nobody had read since launch.

In this hands-on session we rebuild that programme from scratch against a live workload. You will add a prompt cache and measure the real hit rate rather than the hoped-for one, batch a stream of requests and watch the latency percentiles you just traded away, route by difficulty so the expensive path only handles the requests that need it, and trim context that has been dead weight since the second sprint.

We finish with the cost model we now review monthly — cost per resolved request rather than cost per token — plus the two optimisations we rolled back and the graphs that told us to. Bring a laptop; every exercise ships with a workload you can run locally.</description>
      <startTime>2027-05-12T20:30:00.000Z</startTime>
      <endTime>2027-05-12T22:00:00.000Z</endTime>
      <room>Workshop Loft</room>
      <format>Workshop</format>
      <level>Advanced</level>
      <tracks><track color="#10b981">Infrastructure &amp; Scale</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Jonas Weber</name><jobTitle>Infrastructure Lead</jobTitle><company>Kestrel Compute</company></speaker>
        <speaker role="speaker"><name>Priya Ramanathan</name><jobTitle>Head of Platform</jobTitle><company>Lumen Systems</company></speaker>
      </speakers>
    </session>
    <session id="cmsky60ue0094n7pkmu47qo1q">
      <title>Structured Output Is a Distributed Systems Problem</title>
      <description>Schema drift, partial responses and retries: why validating model output belongs in the same mental model as any other unreliable network call.</description>
      <startTime>2027-05-13T16:30:00.000Z</startTime>
      <endTime>2027-05-13T16:55:00.000Z</endTime>
      <room>Golden Gate Ballroom</room>
      <format>Talk</format>
      <level>Advanced</level>
      <tracks><track color="#6366f1">AI Engineering</track><track color="#f59e0b">Agents &amp; Tooling</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Mei-Lin Chao</name><jobTitle>Founding Engineer</jobTitle><company>Tessellate</company></speaker>
      </speakers>
    </session>
    <session id="cmsky61260096n7pkhsi1scsa">
      <title>Building a Tool-Calling Runtime in 300 Lines</title>
      <description>Live-coded from an empty file: a minimal, debuggable tool-calling loop with cancellation, tracing and a sandbox, and what each abstraction buys you.</description>
      <startTime>2027-05-13T18:00:00.000Z</startTime>
      <endTime>2027-05-13T19:30:00.000Z</endTime>
      <room>Embarcadero Studio</room>
      <format>Workshop</format>
      <level>Intermediate</level>
      <tracks><track color="#f59e0b">Agents &amp; Tooling</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Tobias Andersson</name><jobTitle>Developer Advocate</jobTitle><company>Rivergate OSS</company></speaker>
      </speakers>
    </session>
    <session id="cmsky618n0098n7pkih8yxv9z">
      <title>Observability for Nondeterministic Systems</title>
      <description>Traces, spans and sampling when the same input legitimately produces different output. What to log, what to redact, and how to make it searchable.</description>
      <startTime>2027-05-14T17:00:00.000Z</startTime>
      <endTime>2027-05-14T17:25:00.000Z</endTime>
      <room>Mission Hall</room>
      <format>Talk</format>
      <level>Advanced</level>
      <tracks><track color="#10b981">Infrastructure &amp; Scale</track></tracks>
      <speakers>
        <speaker role="speaker"><name>Yuki Tanaka</name><jobTitle>Applied Scientist</jobTitle><company>Orinoco Labs</company></speaker>
      </speakers>
    </session>
  </sessions>
</event>
