A
Inputs live apart
Fleet, crew and routes sit in separate spreadsheets. Each planning cycle starts with reconciliation instead of planning.
Airline scheduling for Indian carriers
SkyOpsHub turns your fleet, crew and route network into a flight schedule. You choose the routes. An AI planner chooses the aircraft and crew to fly them. A deterministic rule engine then checks every duty and every aircraft against DGCA's flight-duty limits, and says exactly why anything fails.
01Why this exists
In January 2024 DGCA revised its flight-duty rules: weekly rest went from 36 to 48 hours, the night window widened to 00:00–06:00, and night duties were capped at two landings instead of six. Every roster now has to satisfy those limits while also agreeing with maintenance windows and route requirements that usually live in different files, owned by different teams.
A
Fleet, crew and routes sit in separate spreadsheets. Each planning cycle starts with reconciliation instead of planning.
B
Headcount looks fine on paper until you ask who's actually free at 07:00, which airframe can operate a high-altitude sector like Leh, and who has to finish the day back at base.
C
A plan fails, or comes back empty, and nobody can say which rule, which tail or which crew member caused it.
The hard part isn't producing a schedule. It's proving it's legal before anyone acts on it.
02From roster to schedule
No magic button. Each stage shows what it used, what it decided and what it's worried about, so a planner can check the work before anyone flies it.
aircraft_type_rating
“B737”
Matches two catalog entries. SkyOpsHub won't guess between them: pick one, correct the value or reject the row. Nothing is saved until you do.
Raw value kept · catalog name stored · reviewer, time and reason recorded
Auto mode sizes aircraft and crew for these routes. It never adds routes of its own.
The demand maths is evidence the agent reasons from, not a cap applied to its answer.
Ready, with warnings
Readiness is a forecast, not proof. Final legality is decided after generation.
Schedule saved
03Where the AI stops
SkyOpsHub is agentic where judgement helps and deterministic where the law applies. That boundary isn't a line in a policy document. It's written into the code.
The planning agent
The rule engine enforces
Rejects and explains.
Never quietly substitutes.
When the validator blocks an assignment, it names the rule, the person or the tail, and the time. It doesn't swap in a different pilot behind your back. And it doesn't pad or trim the agent's choices to make the numbers look tidy.
When the agent comes up short
Selecting 11 A320 captains for this route set.
Peak concurrency is 12 between 06:30 and 08:10. That's one short. Reconsider?
Holding at 11. The twelfth captain would only cover a 20-minute overlap on one morning. I'd rather report that gap than add a captain for it.
Shipped as chosen. Warning on the job: coverage shortfall · A320 captain · 1.
04The rulebook
The pilot rule pack encodes DGCA's CAR Section 7, Series J, Part III (Revision 1, January 2024), and cabin crew follow Part I. AMEs and ground crew get separate, configurable fatigue limits. These are the pilot numbers, and how the validator treats each one.
12h
Minimum rest before a flight duty, or as long as the previous duty if that was longer
Blocks
2
Consecutive night duties at most, where a night duty touches 00:00–06:00
Blocks
10h / 2
Maximum duty period and landings on a night duty, with 8 h of flying
Blocks
35h
Flight time in any 7 days, alongside 60 h of duty
Blocks
1,000h
Flight time in any 365 days, alongside 1,800 h of duty
Blocks
48h
Weekly rest, or 60 h after more than three night duties in 168 h
Flags a warning
“Blocks” means the assignment is rejected with the reason. “Flags” means the schedule is saved with a warning. SkyOpsHub is a planning tool: it isn't regulator-approved software and doesn't replace your compliance function.
Try it
Pick a captain for each A320 sector on Wed 07 Oct. A simplified slice of the rule pack runs in your browser and answers the way the product does: legal or rejected, with the reason.
0 of 4 sectors legally crewed
Select a captain for any flight to see the verdict.
The demo checks type rating, location, 12 h minimum rest, duty limits, consecutive nights and medical validity. Names, flights and tails are fictional.
05Master data
In a crew or fleet spreadsheet, “B737” could mean a Boeing 737-800 or a 737 MAX 8. SkyOpsHub keeps the raw value, maps exact matches to the aircraft catalog, and stops on anything ambiguous until a person decides. Then it records who decided, when and why.
Needs a decision · row 3
“B737” matches more than one catalog entry.
06Durable jobs
Generating a week of flying can take minutes. Every run is written to the database before it starts, reports its real phase and activity, and ends as completed, partial, failed or cancelled, with the reason attached.
07Who it's for
“Can we fly this route set with the aircraft and crew we actually have next week?”
“Where does the pairing break, and which qualification is missing?”
“Is anything being scheduled past a check that's due?”
“When a plan fails, can we see why?”
“Will this fit our data without becoming another spreadsheet?”
08Under the hood
Scheduling is a correctness problem before it's an AI problem, and the architecture reflects that. Models reason. Solvers search. Plain, tested code has the final say.
airline_id, enforced at the API, in the ORM and by PostgreSQL row-level security.09Build log
SkyOpsHub generates schedules end to end today, tested on realistic sample fleets, crews and routes. Parts of it are still being hardened, and this is exactly which parts.
A licence that lapses on day three can no longer be rostered on day five. Long jobs also stopped logging people out halfway through, and progress now reports real work units.
Code stopped topping up or trimming the agent's picks. Shortfalls go back to the agent once, then to your warnings.
Route scope made explicit in every request. A slow status refresh is no longer reported as a failed generation.
Ambiguous aircraft types pause for review. Eligibility comes from catalog references and airline rules instead of string matching.
Deterministic chain building, plus an opt-in solver-native mode where OR-Tools chooses the rotation and pairing variables.
FastAPI backend, PostgreSQL with row-level security, and the Flutter operations app.
10Straight answers
Something missing? Write to admin@skyopshub.in.
No. The agent decides the resource scope (how many aircraft and crew, and which) and explains readiness and results. Legality, maintenance, compatibility and continuity are decided by deterministic code. That code can reject an assignment, but it never quietly swaps in its own.
DGCA's flight-duty rules: CAR Section 7, Series J, Part III for pilots and Part I for cabin crew. That covers per-duty flight-time, duty and landing caps, rolling 7, 28, 90 and 365-day limits, minimum rest, consecutive night duties and weekly rest. Weekly rest is currently flagged as a warning rather than blocked. AMEs and ground crew get separate, configurable fatigue limits. SkyOpsHub isn't regulator-approved software.
Not self-serve. Each airline is onboarded under contract into its own isolated tenant, with its fleet, crew and routes loaded and reviewed. Request early access and we'll set up a walkthrough.
Not on day one, and we won't pretend otherwise. The sensible path is staged: one route group, one fleet family, one planning window, compared against how your team plans today.
Yes. Isolation is enforced in three places: tenant-scoped API routes, an airline_id on every business table, and PostgreSQL row-level security.
Partly. You can report a disruption against a schedule (a crew member unavailable, an aircraft out of service, a delayed route) and the planning agent chooses a response, such as a replacement or a delay, and applies it. Re-optimising the rest of the schedule around it is still being built.
Not yet, and we don't claim it. Security documentation and a formal compliance programme are on the roadmap ahead of any production go-live.
11A note from the founder
I work on agentic AI systems, and I've always had a soft spot for aviation. The closer I looked at how airlines actually plan, with crew rosters stitched together in spreadsheets, maintenance tracked somewhere else and rules changing faster than the tools, the more obvious the gap became.
The easy version of this product is a chatbot that writes schedules. I didn't want to build that. In aviation, a plan you can't explain is a plan you can't use. So SkyOpsHub lets AI do what it's good at, weighing options and explaining trade-offs, and leaves the law to code that can be read, tested and audited.
It's early, and I'll always be clear about what's finished and what isn't. If you plan flights, crew or maintenance at an Indian carrier, I'd love to learn how you work.
Aryan
12Early access
We're looking for a small number of Indian carriers and operators to build this with us. One route group, one fleet family and one planning window to start.