WINSKEL / THE PEOPLE

Our team.

We started Winskel because working with more AI coding systems was making development more fragmented, not less. We're building one place that can understand the work, decide when different models should work alone or together, and show the developer what actually happened.

01 / THE PEOPLETHREE CO-FOUNDERS
Portrait of Ahmed

Ahmed

Co-founder

Ahmed started building Winskel after constantly moving between AI coding systems while making his own software. He works across the product, its orchestration system, and the company, and spends a lot of time using Winskel himself and talking with developers about their work.

Portrait of Mohammed

Mohammed

Co-founder

Mohammed works across Winskel and stays especially close to the people using it. He spends time onboarding developers, running demos, seeing what works and what does not, and turning those lessons into changes across the company.

Portrait of Rakan

Rakan

Co-founder

Rakan works across Winskel and spends a lot of time in the developer communities where we expect the product to grow. He works with early users, university clubs, hackathons, events, and other builders, bringing what he learns back into how we build and distribute Winskel.

02 / WORKING NOTE / 001

The shape of the work changes the answer.

Take one coding objective: add an onboarding checklist. A stores progress, B builds its card, and C connects both in setup. A and B are independent; C depends on both. The diagrams compare schedules for that same dependency graph.

01 / SERIALA → B → C
Serial schedule for an onboarding checklistThe same owner stores progress as part A, builds the card as part B, then connects both to show progress as part C.A / STOREPersist progressB / BUILDChecklist cardC / CONNECTShow progressSTARTT = dA + dB + dC

One owner, one schedule.

A, then B, then C. The owner keeps all context, but B starts after A even though it does not need A’s output.

Tserial = dA + dB + dC

02 / PARALLELA ∥ B → C
Parallel schedule for the same onboarding checklistPart A stores progress and part B builds the card concurrently. Part C shows progress only after both finish.SPLITOne goalA / STOREPersist progressB / BUILDChecklist cardC / CONNECTWaits for A + BSTARTT = max(dA, dB) + dC + h

Two branches, one join.

A and B start together. C starts after the slower branch finishes. Planning, handoff, and integration add overhead h.

Tparallel = max(dA, dB) + dC + h

03 / THE BREAK-EVEN CONDITION

Parallelism has to pay for its own coordination.

Let dA, dB, and dC be the elapsed durations of the three parts. Let h be extra planning, handoff, and integration time. With these simplifying assumptions, the parallel schedule wins only if:

h < min(dA, dB)

The saved time is the shorter independent branch. If overhead reaches that duration, splitting stops helping. A task with no independent branch has no such saving.

Linear schedule comparisonThe serial schedule is constant as coordination overhead increases. The parallel schedule rises linearly with overhead. They intersect when overhead equals the shorter independent branch duration.elapsed time Th* = min(dA, dB)serialparallel0coordination overhead h →

Schematic linear model · axes are symbolic, not measured results.

WHAT WE WOULD MEASURE

Part durations · Coordination overhead · Successful checks and review findings

See the workflow

FIELD NOTES / HOW WE WORK

Culture.

We build close to the work. A routing decision that looks elegant on paper still has to survive a real repository, an interrupted session, a failed check, and a developer who needs to understand what happened.

We move quickly, then verify. We talk to users, inspect what the product actually did, and revise our assumptions. We use AI throughout the work, while staying skeptical of confident output without evidence.

We want the team to have room for technical curiosity and ownership. The details matter: the handoff a developer can follow, the error that tells the truth, the workflow that stays simple when simple works.

PRINCIPLES / WORKING RULES

Values.

01 / 07

The outcome is the point.

We care about the result, not which provider produced it. Model choice is a decision to test, not a team to join.

02 / 07

Show the work.

A system saying it succeeded is not proof. Make routes, changes, checks, and remaining uncertainty inspectable.

03 / 07

Keep the simple path.

One model should own the work when that is enough. Split only when the objective actually benefits.

04 / 07

Compose with purpose.

Different models and tools can bring different strengths. Coordinate them around one objective, with clear handoffs and dependencies.

05 / 07

Learn from real work.

Study outcomes, repairs, review findings, and user feedback. Change routing deliberately when the evidence warrants it.

06 / 07

Leave room for judgment.

A human question or approval can be the right step. Make it clear when the system needs one.

07 / 07

Care about the craft.

A useful system should be understandable, dependable, and precise in the small details people meet every day.

The question behind all of this is bigger than coding.

Read the manifesto