
Oshan Shrestha / Backend Engineer
I design & build backend platforms that scale.
Backend engineer at Grepsr, based in Lalitpur. I designed and built the platform architecture of pline.ai — the API, auth, metering and billing behind a web data product. I like systems that are easy to reason about and hard to break.
- 5+ yrs
- building software
- ~200k
- requests/day on pline.ai
- ~2,500
- concurrent production crawlers
- AWS
- Solutions Architect – Associate
What I do
Backend systems, end to end.
Platform architecture
APIs, auth, metering and billing designed as one system.
Designed pline.ai's platform layer from the first commit.
Data pipelines
Event-driven pipelines and durable workflows that survive failure.
Moved usage metering from Flink to Temporal workers in Go.
Reliability & performance
Find where the time goes, then remove it.
Internal API p95 from 3–7 s to under 1 s.
Selected work
Systems I designed and built.
- 2026pline.ai platform architectureAPI, auth, metering and billing for a web data API at ~200k requests/day
- 2026Putting API Gateway in front of a scraping engineA private engine behind one gateway that authorises, meters and refuses early
- 2026Usage metering: from Flink to durable workers in GoPer-request pricing on durable Go workers, moved off Flink
- 2026LLM structured output: from customer feeds to an API featureSchema-shaped data from LLMs, from customer feeds to an API feature
Journey
From the interface to the systems underneath.
- 2020
Interfaces
React and Next.js product work at Burgeon Tech.
- 2023
Data pipelines
High-traffic Flink pipelines and Temporal workflows at Grepsr.
- 2024
Platform at scale
Backend for ~2,500 concurrent crawlers and 500+ GB of daily delivery.
- 2026
Architecture
Designed and built the platform architecture of pline.ai.
How I work
Principles I keep coming back to.
- 01
Cut round trips, not CPU
Measure where the time goes first. One page made 18 external database round trips; it now makes 2.
- 02
Make the failure visible
When a system refuses something, it says which rule refused it. Silent nulls become named errors.
- 03
State the rule once
A policy lives in one place. Every caller asks it instead of repeating it.
- 04
Durable by default
Work that must finish runs as a workflow with retries and heartbeats, not as a cron job and a hope.
- 05
Tests that prove the claim
A performance fix ships with a test that counts the queries, so the claim cannot quietly regress.
Contact
Let's talk.
Open to conversations about backend, platform and data roles.
oshan.shr22@gmail.com