Skip to content
JE

Jeremy
Eltho

Danville, CA · Open to 2027 software engineering internships in the Bay AreaAuthorized to work in the US without sponsorship

speed and longitudinal g, Sun Devil Motorsports log227,452 rows50 Hzpeak 102.8 km/h

About

I build backend services, AI systems, and data tooling. Most of it has no interface: it runs as an endpoint, a queue worker, or a script somebody runs between test days.

I started on ASU's Formula SAE team and still write the drivetrain group's analysis tooling, which is where the telemetry further down comes from. Four internships since, all backend or AI systems.

That tool reports vehicle speed and differential slip, and refuses to report cornering load. Only the two driven wheels are logged, so any cornering figure derived from them is wrong, and it leaves the number out rather than printing something the team might tune against.

Education

Arizona State University

B.S. Computer Science · Expected May 2028 · Tempe, AZ

  • GPA 3.9 · New American University Scholarship
  • Relevant coursework: Data Structures and Algorithms, Object-Oriented Programming

Experience

  1. Sun Devil MotorsportsOct 2024 to Present
  2. XceptionalMay to Aug 2025
  3. SedaiJun to Aug 2025 · May to Jun 2026
  4. Pop LifeJun to Aug 2026
Four internships across three companies, all before senior year. Each bar goes to its entry.
  1. Jun to Aug 2026Walnut Creek, CA

    Software Engineer Intern

    Pop Life Photo

    • Built and deployed a CRM and lead pipeline on HubSpot, Vercel, and Supabase Postgres, used daily by the sales and ops teams, cutting inbound lead response time from one to two days to under 15 minutes with AI-assisted drafting.
    • Shipped internal tools that let ops paste legacy lead records and auto-populate Monday.com boards and HubSpot, plus an MCP server giving the team backend access through Claude.
    • Built a Salesforce Trailblazer proof of concept for a Dreamforce client demo, which the company credited with landing a six-figure deal.
    • Made the pipeline fault-tolerant so leads still surface on Slack when HubSpot or email is down, and validated it through a five-week staged test rollout before go-live.
    Lead intakesimulated
    09:12:10intakelead_8f3aweb form
    09:12:11hubspotlead_8f3acontact created 201
    09:12:12emaillead_8f3asent
    09:12:13slacklead_8f3aposted #leads
    09:12:17intakelead_9c1dweb form
    09:12:18hubspotlead_9c1d503 service unavailable
    09:12:19slacklead_9c1dposted #leads, hubspot pending
    09:12:20emaillead_9c1dsent
    09:12:22retrylead_9c1dhubspot attempt=1 backoff=2s 503

    A simulated intake log, scripted so one cycle shows every path: a lead that lands everywhere, one that arrives while HubSpot is down, and one whose email hop times out. In both failures the Slack post still goes out and the failed write retries until it lands. Timestamps are the backoff intervals, not measured latency.

  2. May to Jun 2026Remote

    Software Engineer Intern (Returning)

    Sedai

    • Extended Headroom, an Apache-licensed LLM proxy, into an on-device token optimizer in Rust: a local axum server that proxies requests byte-for-byte and forwards server-sent events without buffering.
    • Parsed token usage from streaming events so every optimization was measured against a recorded baseline rather than estimated counts.
    • Designed provenance-based model routing that sends utility calls to smaller, faster models while leaving the main reasoning turn untouched.
    • Selected five-minute or one-hour Anthropic cache TTLs by measuring idle gaps between requests, and added a custom instructions file the proxy injects into any coding agent, not just one client.
    Model routingsimulated
    tool resulthaiku-4.5
    user turnopus-5
    tool resulthaiku-4.5
    title generationhaiku-4.5
    file summaryhaiku-4.5

    4 of 5 requests routed to haiku-4.5; the turn the user is waiting on stays on opus-5

    A simulated request stream showing the routing rule only. It reports no token or latency savings, because those would be benchmarks and none are published.

  3. Jun to Aug 2025Remote

    Software Engineer Intern

    Sedai

    • Built metric routing for an AI agent evaluation platform, dispatching across 21 DeepEval metrics covering faithfulness, hallucination detection, role adherence, and DAG-based decision trees.
    • Implemented FastAPI endpoints serving both single-metric and batch evaluation runs.
    • Built a unified LLM client normalizing calls across providers, removing per-provider handling from every downstream evaluation workflow.
  4. May to Aug 2025San Jose, CA

    Software Engineer Intern

    Xceptional Learning

    • Built the image pipeline for an AI speech therapy web app serving 50 pilot users, pulling media from Google Cloud Storage blobs and routing it through a locally hosted Hugging Face instance tuned to classify student facial expressions at under one-second latency.
    • Hardened that path with rate limiting and access controls on the endpoints handling student media.
    Access controlssimulated
    bucket0 / 10shedding
    13:35:10200/media/s_4471ok
    13:35:13200/media/s_4471ok
    13:35:15200/media/s_1180ok
    13:35:16200/media/s_1180ok
    13:35:17200/media/s_1180ok
    13:35:18429/media/s_1180bucket empty, retry-after 2s
    13:35:19429/media/s_1180ignored retry-after, delay 4s
    13:35:21429/media/s_1180delay 8s

    A simulated request log for the endpoints serving student media, scripted so one cycle shows every control: the token bucket draining, the first refusal, a delay imposed on a caller that ignored it, a file belonging to another student refused outright, a traversal attempt rejected on the path, an upload stopped at the cap, and the bucket refilling. Statuses and the bucket are the mechanism, not measured traffic.

  5. Oct 2024 to PresentTempe, AZ

    Drivetrain Team Member

    Sun Devil Motorsports, Formula SAE

    • Analyze over 100,000 rows of CSV wheel-speed telemetry in Pandas to surface mechanical inefficiencies, building Matplotlib visualizations that supported a differential tuning hypothesis.

Projects

Prompt Pilot

2026

A statusline for Claude Code, published to npm and installed about a thousand times at its peak. It surfaces live context usage, the rate-limit window, how many agents are running, the model, and the git branch, in one line that has to stay readable at any terminal width.

npm · Node.js · Git

Statuslinesimulated
opus-5mainctx34%4h57m left2 agents

The published statusline rebuilt for this page, stepping through a simulated session. Context climbs through a turn and drops when it compacts.

Formula SAE telemetry tooling: it turns rear wheel-speed and steering logs into drivetrain physics, then collapses the result into discrete launch, braking and wheelspin events the team can act on between test days.

It also refuses to compute lateral g. Only the two driven wheels are logged, so the left-right split is wheelspin through the differential, not chassis yaw. Deriving cornering load from it gives numbers above 3 g even after aggressive filtering, which is not possible, so the tool reports what the data supports and stops there.

Python · Pandas · NumPy · SciPy · Matplotlib

Wheel-speed telemetrymeasured
peak at
speed
long. g
diff slip
050100+1-100s25s50s75s100sSPEED km/hLONGITUDINAL g
227,452 logged rows, resampled to 50 Hz. This is 105s of the fastest run in a 599.7s session, drawn from the pipeline's own output. Replay runs at 8x; grabbing the chart takes over from playback, and arrow keys work once it has focus.

Pulls audio from Google Cloud Storage, transcribes it, then runs the transcript through three emotion classifiers and keeps the highest-confidence prediction. Gemini writes the summary. It runs end to end with no manual steps.

The three classifiers disagree by design: they were trained on different label sets, at 28, 11 and 7 emotions. A singleton cache loads all three once at startup, so the cost of a cold start is paid a single time rather than on every analysis.

Python · Transformers · PyTorch · GCS · Gemini

Pipeline stagessimulated
cache warmskips model load
load models
fetch gcs
transcribe
twitter-roberta
bert-go-emotion
distilroberta
gemini summary

Stage order for one analysis, read from the repository. The three classifiers run one after another, not concurrently. The first pass pays for loading all three models; later passes reuse the cache and skip that stage entirely. Relative shape only, not measured timings.

  • An offline iOS app that scans Pokémon cards with the Vision framework, fuzzy-matches them against a 4,400-name dictionary, and tracks inventory in SwiftData. No backend at all.

    Swift · SwiftUI · Vision · SwiftData

More on github.com/JeremyEltho.

Skills

Languages
JavaCC++
Frameworks
Flask
Infrastructure
Docker
Libraries and APIs

Lit keys go to where they were used on this page. Dim keys are coursework or tooling with no entry above.

Contact

I'm looking for a 2027 software engineering internship in the Bay Area, and I'm authorized to work in the US without sponsorship. Email is the fastest way to reach me.

github.com/JeremyEltholinkedin.com/in/jeremyeltho