Airline scheduling for Indian carriers

Airline schedules that show their working.

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.

Rule pack
DGCA flight-duty limits
Status
In active development
Onboarding
Per airline, not self-serve
JOB 7F3A 01–07 OCT · 14 ROUTES · A320 FAMILY RUNNING
Illustrative run · hover an airport
Routes
14
Aircraft
—
Crew
—
Windows
—
Flights
—
Warnings
0
  1. Scope
  2. Readiness
  3. Chains
  4. Solve
  5. Validate
  6. Persist
Checked every run
  • 12 h minimum rest
  • 48 h weekly rest
  • Max 2 consecutive night duties
  • Rolling 7 · 28 · 90 · 365-day caps
  • FDP & landing limits
  • Type ratings
  • Licence & medical valid on the duty date
  • Maintenance due dates
  • Route approvals, e.g. ETOPS · RNP AR
  • Tail continuity
  • Crew continuity
  • Tenant isolation

01Why this exists

Duty rules got stricter. Most rosters are still built in spreadsheets.

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

Inputs live apart

Fleet, crew and routes sit in separate spreadsheets. Each planning cycle starts with reconciliation instead of planning.

B

Feasibility is assumed

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

Failures arrive without reasons

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

Six steps, and you can see every one of them.

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.

crew_roster_oct.xlsx212 rows · 2 need review
ROW 14P-1103V. MenonCaptainBOM

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.

  • Boeing 737 MAX 8737 MAX family
  • Boeing 737-800737 Next Generation
Use Boeing 737 MAX 8CorrectReject row

Raw value kept · catalog name stored · reviewer, time and reason recorded

03Where the AI stops

The planner proposes. The rulebook decides.

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

  • Decides how many aircraft and crew to bring, and which ones
  • Explains readiness, partial results and trade-offs
  • Chooses a response when a disruption is reported: replace, or delay
  • Explains why an imported aircraft type is ambiguous

The rule engine enforces

  • Flight-time, duty and landing caps per duty, and over rolling 7, 28, 90 and 365 days
  • Minimum rest and consecutive night duties
  • Type ratings, and licence and medical validity on the date of each duty
  • Maintenance status and next-check due dates
  • Aircraft–route approvals such as ETOPS 120 and RNP AR
  • Where every aircraft and crew member actually is

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

A shortfall goes back to the agent, then to you. It never gets silently patched.

  1. Planning agent

    Selecting 11 A320 captains for this route set.

  2. Coverage check

    Peak concurrency is 12 between 06:30 and 08:10. That's one short. Reconsider?

  3. Planning agent

    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.

  4. Result

    Shipped as chosen. Warning on the job: coverage shortfall · A320 captain · 1.

04The rulebook

DGCA's limits, written as code.

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

Be the planner for a minute.

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

  • Type rating
  • Location
  • 12 h rest
  • Duty limit
  • Night runs ≤ 2
  • Medical on duty date

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

It won't guess what “B737” means.

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.

  • Catalog names only. Aircraft types are stored as the catalog's name, so “737 MAX” and “B737-8” can't become two different fleets.
  • Variants aren't assumed interchangeable. A 737-800 stands in for a 737 MAX 8 only when a compatibility rule or your approval says so.
  • Routes state their requirements. Crew qualifications, aircraft approvals and equipment. Only resources that meet them are offered.
  • Every decision is recorded. Automatic matches and human calls are stored per airline, with the original value, reviewer, time and reason.
crew_roster_oct.xlsxImporting…
IDNameRoleBaseType ratingStatus
P-1042A. MehraCaptainDELAirbus A320neoMatched
P-1077R. IyerCaptainBLRBoeing 737-800Matched
P-1103V. MenonCaptainBOM“B737”Review
P-1189N. DasCaptainDELAirbus A320neoMatched
F-2214K. RaoFirst OfficerHYD“737 MAX”Review
C-3310M. FernandesCabin crewGOIAirbus A320neoMatched

Needs a decision · row 3

“B737” matches more than one catalog entry.

Use Boeing 737 MAX 8CorrectReject row

 

06Durable jobs

Close the tab. The job keeps its own record.

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.

JobWindowRoutesStatusOutcome
  • 01Status comes from the database, not from a worker's memory.
  • 02Cancel revokes the worker task instead of leaving it running.
  • 03Failed, partial and cancelled runs can be retried.
  • 04A slow refresh shows as delayed, never as failed.

07Who it's for

One operation, five points of view.

“Can we fly this route set with the aircraft and crew we actually have next week?”

  • Route-scoped generation that stays within the routes you chose
  • Aircraft–route fit from catalog and compatibility rules, not string matching
  • A readiness read-out before you commit a run

08Under the hood

Boring where it matters.

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.

SkyOpsHub architecture: the operations app calls a FastAPI backend; long work runs on Celery workers through Redis; the scheduling engine combines a planning agent, OR-Tools and a deterministic validator; everything is stored in PostgreSQL with row-level security. Operations appFlutter · web, desktoptenant-aware sessions FastAPIJWT · tenant resolutionrate limits · envelopesone router per domainairline_id on every call Planning agentscope · readiness · recoveryOpenRouter · embeddings JobsRedis · Celery workers Scheduling engineroute windows & chainsOR-Tools optimisationlocal priority scorerDeterministic validatorfinal gaterejects & explains PostgreSQL · row-level security on every airline table · job state persisted first
Tenancy
Every business table carries airline_id, enforced at the API, in the ORM and by PostgreSQL row-level security.
Engine
OR-Tools integer programming plus aircraft-rotation and crew-pairing chain building, with a deterministic validator as the last word.
Agents
Planner and scope selector run on hosted models through OpenRouter. Priority scoring runs locally.
Jobs
Redis and Celery for execution, PostgreSQL for truth. Job state is persisted before work is dispatched.
Access
A platform admin onboards each airline under contract and provisions its admins. There's no public sign-up.
Tests
350+ automated backend tests, over half of them on the scheduling engine and validator.

09Build log

In active development. Here's the flight 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.

SystemStatus
  • Fleet, crew & route data
  • Import quality review
  • Auto · guided · manual scope
  • Readiness checks
  • Durable generation jobs
  • DGCA duty & rest validation
  • Solver-native chains
  • Schedule editing
  • Disruption recovery
  • MEL & defect data
  • SSO · crew & MRO links
  1. Credentials checked against the duty, not the calendar

    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.

  2. Auto scope became agent-owned

    Code stopped topping up or trimming the agent's picks. Shortfalls go back to the agent once, then to your warnings.

  3. Honest job states

    Route scope made explicit in every request. A slow status refresh is no longer reported as a failed generation.

  4. Import quality gate and aircraft compatibility

    Ambiguous aircraft types pause for review. Eligibility comes from catalog references and airline rules instead of string matching.

  5. Rotations and pairings with continuity

    Deterministic chain building, plus an opt-in solver-native mode where OR-Tools chooses the rotation and pairing variables.

  6. Multi-tenant foundation

    FastAPI backend, PostgreSQL with row-level security, and the Flutter operations app.

10Straight answers

Questions airlines ask first.

Something missing? Write to admin@skyopshub.in.

Does the AI make the final call?

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.

Which regulations does it encode?

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.

Can we sign up and try it?

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.

Will it replace our ops-control stack?

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.

Is our data kept apart from other airlines?

Yes. Isolation is enforced in three places: tenant-scoped API routes, an airline_id on every business table, and PostgreSQL row-level security.

Does it handle disruptions?

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.

Is it SOC 2 or ISO 27001 certified?

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.

Aryan Chachra

Founder · builds agentic AI systems

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

Help shape it before it's finished.

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.

  1. 01We reply within 24–48 hours.
  2. 02A 30-minute walkthrough on sample data.
  3. 03If it fits, a scoped trial on your own routes.

Prefer email? admin@skyopshub.in