Data, AI and the product around them.
We build data platforms, reports, AI agents and the web apps on top of them for operations and product teams in the US and India. Before you read about any of that, ask a question of 4.3 million public taxi trips.
Ask the data
Pick a question or type one. Every answer comes with its chart and the steps that produced it, because that is how every report we build should behave.
Between 5 and 8 pm. The 6 pm hour had 40,765 pickups across the Midtown zones, about 22 times the 4 am hour.
The chart draws with JavaScript. The 6 pm hour had 40,765 Midtown pickups; the 4 am hour had 1,803.
- Reading the June 2025 file: 4,322,960 rows.
- Dropping 275,815 rows with a negative fare, a drop-off before pickup or a pickup outside June.
- Joining 265 taxi zones on pickup location.
- Grouping pickups in the Midtown zones by hour.
We have not computed that one yet. Send it to us and we will run it on the same file and reply with the chart. Send the question.
Have a question about your own data? Send it with a row count and we reply with the chart.
Computed from the public NYC TLC file for June 2025 with DuckDB. The query is on the work page.
What we build
Six things, usually two or three at a time, always handed over running.
Data platforms
One place where the numbers agree, built to stay that way as the data grows. Bad rows are caught at the door and counted, and the bill stops when nothing is running.
Reports people trust
Reports that open in seconds and show the same number the finance team has. If a figure needs a footnote, the report carries it.
AI assistants and agents
Agents that do one defined job with a safety check in front, a person behind, and a record of every request. Tested against a written set of cases before they go live.
Workflows that run themselves
Scheduled jobs that check their own output and stop before they send a bad number. Quiet until something needs you.
Monitoring that reaches a person
An alert with a link to the failing run, not a red tile nobody looks at. Cost, usage and data quality on one page, and a runbook that says what to do at 3 am.
The product around it
Web apps with real sign-in, row-level permissions, deployment and documentation. The part most projects stop short of.
What 4.3 million rows say about yours
One vendor code carries 78% of the trips
Code 2 appears on 3,147,436 of the 4,047,145 rows left after the three checks in the demo above, 78%. The column does not name a taxi company. It names the company that built the meter. A chart titled revenue by vendor reads as market share, and it will be on the first page of the report unless someone reads the data dictionary first.
Have a column like this in your data? Send us the question and a row count.
The chart draws with JavaScript. Code 2: 3,147,436 of 4,047,145 clean rows.
Sunday is not the busiest day
Count pickups by weekday and Sunday wins with 617,325. June 2025 had five Sundays and four Thursdays. Per day, Thursday leads at 150,281 and Sunday drops to 123,465, second from the bottom. The first chart was not wrong. It answered a question nobody asked.
Have a weekly chart you are not sure about? Send us the question and a row count.
The chart draws with JavaScript. Thursday: 150,281 pickups per day; Sunday: 123,465.
The city has a nine-to-one day
The 6 pm hour saw 283,559 pickups across the city. The 5 am hour saw 32,028. Size anything on the daily average and it is wrong for most of the day. Your order queue, your support inbox and your cloud bill have the same shape.
Have a queue with a shape like this? Send us the question and a row count.
The chart draws with JavaScript. 283,559 pickups in the 6 pm hour against 32,028 at 5 am.
More of these, with the query that produced them, are in the lakehouse walkthrough.
Selected work
Public data, numbers you can check, the query shown.
A data platform that counts bad rows instead of deleting them
How we land, clean and serve the public NYC taxi records, 4.3 million rows a month, so a bad row is kept out of the report and still accounted for.
Read how the lakehouse was built
Five fixes that make a slow Power BI report fast
A report of this shape takes about 40 seconds to open, and nothing is wrong with its data. Everything is wrong with the model. Five changes, in order, on Microsoft's Contoso sample.
Read the five fixesHow we work
Scoping call
Thirty to forty-five minutes on what is slow, missing or risky. We ask more than we talk.
Written quote
One number for the whole scope, with what is in and what is out, before any work starts.
Weekly demos
Something running every week, in your environment, from the first week.
Handover
Documentation, a runbook, and a month of support after launch.
Why Octelion
- We hand over running systems, not notebooks.
- We put one number in writing for the whole scope before we start.
- We show our work on public data so you can check it.
- We build the safety and operations parts most prototypes skip.
One email is enough to start.
Tell us what is slow, missing or risky. We reply within one working day with questions, not a pitch.