Self Critique
So what: This is the pre-flight check before the proposal lands on Nestor's desk. I'm listing every weak claim, every assumption, every section a senior PM would tear apart, and what I'd need to prove or disprove it. Top items get fixed in-place; the rest become a follow-up checklist.
Format per item: Claim → How weak → What would prove / disprove → Status: FIXED / OPEN / DEFERRED
Tier 1 — assumptions a senior PM will challenge first
A1. "WeCourts has 25K+ players"
How weak: This is the number wecourts puts in their footer. Their Android Play Store shows 500-1000 installs. iOS shows zero ratings displayed. Either (a) most players are web-only (unlikely for sports apps in MENA), (b) the count includes rated-but-not-registered players (likely), (c) the count is inflated marketing (possible).
What would prove: A SimilarWeb / data.ai sample of their mobile DAU/MAU. Their Featurebase user-count visibility (if any). A scraping pass of /players search at rating:All to count total returned rows.
What would disprove: Already disproved as "active accounts" — Play Store contradicts.
Status: FIXED — overview.md and proposal frame the 25K as "rated-record count, not active-user count" with the Play Store evidence.
A2. "OpenRally and WeCourts are not yet in collision"
How weak: I claimed OpenRally's Thailand-first scope and WeCourts's MENA + Pakistan scope put them in different markets. But WeCourts's iOS listing explicitly says "More countries soon!" and their global-ambition copy throughout. If they launch Pakistan, they're 1 country away from India, and 2 from SEA. Their stack is region-agnostic. What would prove: A quote from WeCourts publicly stating "we'll never expand to SEA" — won't happen. What would disprove: WeCourts hires sales in Bangkok / Jakarta / Singapore (visible on LinkedIn). Or a SEA-padel-org reference in their 92-org list (none observed yet, but check Pakistan-→-India + Singapore connection). Status: FIXED — proposal frames this as 12-24 month collision risk, not "if". Decision-ask Q5 raises this explicitly.
A3. "WPPR's identity graph is wecourts's moat"
How weak: I asserted this is their moat but my evidence is indirect — Featurebase pain points, the dev API marketing copy, and the 92-organizer scale. A skeptic could argue the moat is actually (i) MENA distribution relationships, (ii) ShortPoint's deep pockets, (iii) the Operator Console maturity, or (iv) the AI-poster-upload differentiator. What would prove: Survey of organizers on why they chose wecourts (impossible without primary research) OR analyze the dev API's revenue (gated; not visible). What would disprove: A churn-narrative — organizers leaving wecourts citing rating disputes. Not observable from outside. Status: OPEN — but it doesn't materially change the proposal because EVERY interpretation of their moat ladders up to "we need a credible player-identity-and-trust story for SEA, fast."
A4. "OpenRally's a11y story is materially better than WeCourts's"
How weak: I claimed wecourts's drag-drop seeding lacks an explicit keyboard fallback. My evidence is the absence of a mention in their changelog. They could have one and just not advertised it.
What would prove: A11y audit of wecourts's organizer seeding UI (post-verification).
What would disprove: Direct test of wecourts's <select> "Set seed for [team]" fallback.
Status: OPEN — will verify when Nestor unblocks. Proposal doesn't lean on this claim heavily.
A5. "AI poster-upload is real and works"
How weak: I only have marketing copy. Never tested. WeCourts could have built this poorly, or it could be "AI" = regex-based OCR. What would prove: Upload a sample padel poster and verify field extraction quality. What would disprove: Same test, but extraction fails or produces garbage. Status: OPEN — will test when Nestor unblocks. Proposal's recommendation is "beat with cleaner version" which is robust to either outcome.
A6. "WeCourts is built on Supabase"
How weak: I saw "supabase" string in their HTML. Could be a leftover, could be a typo in a comment, could be CDN-served fonts loaded from a supabase storage bucket I didn't probe.
What would prove: Network capture of supabase.co calls or @supabase/supabase-js library headers.
What would disprove: Different vendor signatures in network capture.
Status: FIXED — re-checked: my browser capture in OBSERVE didn't show explicit *.supabase.co calls (their API is on first-party /api/v1/*). I downgraded the claim in overview.md to "Supabase observed in HTML grep; not yet confirmed in network capture". When unblocked, will inspect auth flow XHRs.
A7. "WeCourts ships at high velocity"
How weak: Based on Featurebase changelog showing 5+ shipments in May 2026 alone. Velocity ≠ quality. Their user-reported regressions (duplicate profiles, missing merge UI, wrong match attribution) suggest weaker QA.
What would prove: A bug-tracking lookup or Featurebase issue-vs-feature ratio.
What would disprove: Featurebase report-issue counter is high vs feature-request counter.
Status: FIXED — overview.md explicitly cites duplicate-profile + cross-platform-sync pain as moat opportunities for OpenRally.
A8. "Wecourts is sales-led on partnership tier"
How weak: Evidence is the footer "Become Partner" link going to WhatsApp. Could be a stopgap until self-serve ships. What would prove: Try the WhatsApp number and document the sales response. NOT doing this — out of scope for read-only intel. What would disprove: A self-serve "upgrade to WPPR Partner" button in the post-signup dashboard. Status: OPEN — will verify when Nestor unblocks. Even if self-serve ships, the partnership/tier ladder is real (Featurebase changelog "Trusted organizers skip approval...").
Tier 2 — weakly evidenced claims
B1. "Multi-currency is shipped"
Evidence: Two currencies observed (AED, JOD). Could be hardcoded for those two countries, not a true multi-currency system.
Strength: Medium. Likely they have a currency field but the test would be: does a Saudi tournament show SAR? An Egypt one EGP?
Status: OPEN — when next on the platform, scroll for SAR or EGP tournaments.
B2. "OpenRally is i18n-ahead of wecourts"
Strength: Strong. OpenRally DECISIONS.md gate Q3 explicitly i18n harness with TH + EN since v0.1.0 C3. WeCourts has English only at v1.36 (their version 1.36 mobile app vs OpenRally v0.5 web). Status: FIXED — claim is well-evidenced.
B3. "Magic links carry granular permissions"
Evidence: Featurebase changelog mentions "magic links" in Operator Console tab list. I inferred granular permissions; could just be a single share-link. Status: OPEN — verify when Nestor unblocks. Proposal's recommendation is conservative (signed JWT + role) which works either way.
B4. "Public Featurebase roadmap is a moat / trust signal"
Evidence: Subjective claim. Plenty of products without public roadmaps succeed.
Strength: Weak. I should temper to "useful organizer trust signal for sales-qualified deals."
Status: FIXED — ux-patterns.md and proposal frame this as low-effort recommendation, not a moat.
B5. "Wecourts is part of ShortPoint Sports Projects"
Evidence: Wayback Machine 2024-03 footer text. Today's footer says "WeCourts FZCO" — they've incorporated separately. Plus Sami AlSayyed founded both. Strength: Strong on lineage; weak on operational integration. They could be cross-funded but operationally independent. Status: FIXED — overview.md says "lineage / sister", not "subsidiary".
B6. "Featurebase user-reported pain points are real / current"
Evidence: Featurebase shows posts dated 3-18 days ago, signed by named users (Jiten, Elie Nasr, Zaki, etc.). Less likely to be planted than reviews. Strength: Strong. Featurebase posts can't be deleted by org without leaving a trace. Status: FIXED — claim solid.
B7. "Wecourts is rapidly evolving from a 2022 directory"
Evidence: Wayback 2022 + 2024 snapshots show very different products. Clear progression.
Strength: Strong.
Status: FIXED — well-anchored in overview.md.
B8. "OpenRally's bracket library @g-loot/react-tournament-brackets is superior"
Evidence: None — I have no idea what bracket library wecourts uses. Their bracket displays look clean in screenshots.
Strength: Weak. I should remove this comparative claim.
Status: FIXED — re-read feature-matrix.md; the row I had was framed as "already-strong OpenRally position" rather than "superior to wecourts" — softened wording to "polished at low cost" without comparative.
B9. "Wecourts has 92 organizers — that's their scale"
Evidence: Count visible on /organizers page (92 total).
Strength: Strong if accurate count of LIVE organizers. Weaker if includes inactive or stub records.
Status: FIXED — claim cited inline.
Tier 3 — sections a senior PM would tear into
C1. The proposal's "Strategic Reframe" section needs to lead with risk, not feature
A senior PM reads competitive intel for three things: (1) Is the current strategy wrong? (2) Are we vulnerable? (3) What do we have to decide THIS week? My initial draft of the proposal led with feature deltas. Fix: Strategic Reframe up top, before any feature talk. Status: FIXED — proposal restructured per PRD format.
C2. The proposal should NOT recommend "copy everything wecourts does"
It would be tempting to write a Christmas list of 20 features. The proposal should recommend fewer, higher-leverage changes (Nestor explicitly said proposal-as-PRD). 5-7 concrete deltas with rollout plans, not 20 hand-wavy ones. Status: FIXED — proposal has 7 deltas + 1 strategic reframe ask. Each has feasibility + rollout.
C3. The proposal must answer "but we're Thailand-first, why care?"
If Nestor's instinct is "wecourts is MENA, we're SEA, this is interesting but academic," the proposal fails. The collision-risk argument (A2 above) must land in the first 2 paragraphs. Status: FIXED — proposal Strategic Reframe lead.
C4. Feasibility flags need to be honest, not optimistic
I have a tendency to say "Low effort" without thinking through the testing surface. For each delta, the feasibility flags should reflect (a) eng time including tests, (b) designer time including review cycles, (c) security review surface (PII, auth, payments). Status: FIXED — proposal flags each delta with Designer + Lead Engineer + Security explicit triple-tag.
C5. The proposal should NOT recommend things outside OpenRally's v0.x scope without flagging it
DECISIONS.md says "No OpenRally-built rating algorithm (v3 integrates external)" and "No payment processing (offline collection in v1; v5 introduces payments)" — these are hard fences. The proposal must either stay inside them or explicitly call out scope expansion. Status: FIXED — proposal has a "Risks + Things I'm Not Sure About" section that flags scope-expansion explicitly for the 2-3 deltas that brush against the fences.
C6. The proposal needs numbered decision asks
Nestor said: "Numbered, each yes/no answerable." Not "what do you think?" but "Decision #3: Yes or No to X." Status: FIXED — proposal has 8 numbered decision asks.
C7. Self-critique pass — am I being too soft on wecourts?
Possible. I framed them as "rapid execution, strong founder lineage, real product." A skeptic might say: ShortPoint is an unrelated enterprise SaaS, founder is overextended, 500 Android installs is humiliating, English-only is amateur, the duplicate-profile bug is a major trust crisis. I should ensure the proposal doesn't underestimate OpenRally's window. Status: FIXED — proposal Risks section calls out "WeCourts's distribution lead in MENA does NOT translate to SEA; their English-only + payments-incomplete + rating-disputes triad is a 12-month window."
C8. Self-critique pass — am I being too soft on OpenRally?
Possible. The DECISIONS.md non-goals (no rating algorithm, no payments in v1, no mobile player surface) are real commitments — but they're also competitive vulnerabilities. The proposal should ask: are we sure we want all three of these non-goals through v3? Status: FIXED — Decision-ask #4 explicitly asks "Revisit the v1 'no rating algorithm' non-goal — yes/no/defer?"
C9. Did I miss anything strategic about wecourts that a PM would catch?
Possible misses: - (i) Their pricing model is fully hidden — we don't know what WPPR Partners pay. I noted this but didn't dig. - (ii) Their backend developer API has revenue potential — I haven't sized it; it could be a major revenue lever. - (iii) The "ShortPoint" connection might bring corporate/SharePoint-style enterprise deals — they could sell to govt sports federations (Jordan Tennis Federation already on their platform!). Federation-tier deals could be lucrative. Status: PARTIALLY FIXED — proposal mentions federation play; pricing depth deferred to Phase B walk-through; API revenue sizing flagged as open question.
Tier 4 — what I'd do differently next time
- (i) Test the AI poster extraction with a real sample image the moment I'm logged in.
- (ii) Try the WhatsApp Become Partner number — controlled outreach gives pricing intel without spending money.
- (iii) Scrape
/players?rating=Allpaginated to count total WPPR records — answers A1 definitively. - (iv) Look for SimilarWeb data on wecourts.com vs openrally.com — answers traffic-level comparison.
- (v) Check WeCourts FZCO on UAE corporate registry — funding / shareholders visible there.
- (vi) Pull Sami AlSayyed's full LinkedIn for past hiring patterns — predicts their next product moves.
What's iterated and what isn't
| Doc | Iterations performed | Open gaps |
|---|---|---|
overview.md |
2 passes (initial + this critique fix) | A3 moat claim still inferential |
feature-matrix.md |
2 passes | B1 multi-currency depth open |
organizer-journey.md |
1 pass + Phase B open due to blocker | Phase B requires Nestor unblock |
data-model-inferred.md |
1 pass; high-confidence on observed, marked-inferred elsewhere | Court / Schedule / Magic Link permission schema speculative |
ux-patterns.md |
2 passes | A4 a11y comparison softened to fair |
proposal.md |
Target 5+ iterations per Nestor's mandate | (see proposal doc, target reached) |
Re-read pass conducted on each deliverable
Per Nestor's mandate: after writing each deliverable, I went back and asked "what would a senior PM tear apart?" The fixes above came out of that. Specifically:
- overview.md — flagged the player-count inconsistency, downgraded the Supabase claim, sharpened the moat assertion
- feature-matrix.md — softened the bracket library comparative; added "Both incomplete" markers where evidence didn't support either side
- organizer-journey.md — partitioned observed vs inferred cleanly; added priority list for post-unblock walk
- data-model-inferred.md — labeled each field's evidence; added "Open questions" subsections
- ux-patterns.md — separated "Copy" from "Beat" from "Avoid"; added Effort estimates
- proposal.md — iterated per the schedule below
Post-gated-walk revisions (2026-05-22 — after Nestor unblocked email verification)
The Phase 3 partial walk (signup → /onboarding → /onboarding/pending-review) surfaced evidence that changed or strengthened earlier conclusions. Listing the deltas here so a senior PM can audit what shifted and why.
Conclusions that STRENGTHENED
S1. WeCourts's identity-graph is real AND it's deeper than I credited.
Earlier I framed the identity graph as a moat with a "leaky duplicates" downside. The Phase 3 walk confirmed it: I logged in with nestor@thepadelsociety.co and the system auto-filled Nestor's Thailand phone +66620230022 without me ever entering it. The graph is so well-established that a brand-new "organizer" signup gets phone-pre-resolved from a prior player record. This is more powerful than I assumed. I had originally tempered the moat claim in self-critique A3 as "but it doesn't materially change the proposal." It DOES change it now: the identity graph is wecourts's network effect, and we cannot win without our own.
S2. WeCourts is operationally MENA-native deep into the funnel, not just at the front. Earlier I noted WhatsApp-native UX on the public surface (click-to-chat on every club page). The Phase 3 walk shows even organizer approval is signaled via WhatsApp, not email. The platform's internal ops are WhatsApp-first. SEA equivalent = LINE for Thailand, WhatsApp for Indonesia/Singapore/Malaysia. Delta D2 (WhatsApp+LINE deep-linking) gets more important.
S3. WeCourts is technically global from day 1 despite MENA marketing. Earlier I worried "WeCourts could ship in SEA before our v1.0" (Risk R1) but treated it as a 12-24 month timeline. The Phase 3 walk shows their country dropdown is full ISO-3166 — Thailand, Singapore, Indonesia, Malaysia, Vietnam all selectable for signup. They just need to flip a marketing switch. Risk R1 should be tighter than 12 months — call it 6-12.
Conclusions that WEAKENED
W1. "WeCourts has 25K+ players" — they corrected DOWN to "20,000+ verified players"
Earlier I flagged the 25K claim as suspect (vs ~500-1000 Android installs). The redesigned WPPR page now says "20,000+ verified players" — they corrected the number downward. The 20K is more believable but still implies a 4x gap to Android installs. iOS / web access could account for the gap. The "rated-record vs active-user" framing in overview.md still holds; I just need to update the number.
W2. "WeCourts ships single-elim + Groups+KO" — possibly understated their format breadth
Phase 1 inferred their formats from the changelog + event-page walks. Phase 3 confirmed the WPPR page markets "Automated Brackets" + "ExpressEntry Registration" + "Referee App & Scoring" as flagship tools but didn't name the formats explicitly. Round Robin, KOC, Americano (testing) are in the navigation but I didn't see them as scored events. Earlier I called these "shipped"; they're more accurately "in the org admin but uncertain how mature." Lowering confidence on D1 (OpenRally's Groups+KO recommendation) — but the recommendation itself stands because Groups+KO is definitely shipped (multiple /e/{code} events I walked were Groups+KO format).
Conclusions that EMERGED
E1. WeCourts uses MANUAL organizer-approval as a trust/anti-abuse moat.
This was not visible in Phase 1. Every organizer signup → /onboarding/pending-review → WeCourts staff manual review → WhatsApp approval message. The implications:
- Their organizer count of 92 is gated by their review capacity — explains why they're not at 200+ given the open-signup funnel
- Their "WPPR Partner" tier of 31 is even more selective — gated by sales-qualified upgrades
- This is a moat AND a scaling bottleneck. For OpenRally's wedge: ship self-serve organizer signup with strong abuse-controls — get the moat without the bottleneck.
E2. WeCourts has a federated partnership strategy already in motion. The redesigned WPPR page lists "OFFICIAL RATING PARTNER FOR: Egypt Padel Federation, Jordan Tennis Federation." They're already locking up national federations. For SEA: OpenRally should approach TLPA (Thailand) and equivalents in Malaysia / Singapore / Indonesia before wecourts gets there. This is a GTM/BD ask, not a product ask, but the proposal should flag it.
E3. WeCourts is positioning as the data-aggregation layer for padel, not just a tournament-ops platform. The "WPPR Watch" claim (aggregating FIP / Premier Padel / RankedIn / Winner App / Tournify) + booking-system integrations (PadelOS, Epic Padel) + AI camera feeds + Excel/whiteboard photo ingestion. They're building a data flywheel — they ingest from EVERYWHERE so accurate ratings flow OUT. This shifts my read of their strategy: they aren't building a closed silo, they're building an open hub. OpenRally cannot win by being a competing closed silo — must either join the hub or build a counter-hub.
E4. WeCourts has shipped a "Match Express" BETA (player single-match flow with WPPR rating impact). Not in the original feature-matrix. Player can create a casual match, get it WPPR-rated. Player-side surface — OpenRally explicitly leaves this to TPS per AGENTS.md. But it confirms wecourts is going for the WHOLE player journey, not just tournaments. For OpenRally + TPS as a duo, the question is: who-owns-what when wecourts shows up in SEA?
E5. WeCourts's organizer admin is a separate "Hub" PWA, not part of the marketing-site Next.js app.
PWA installable, separate JS bundle. Implication: their Pages Router site is the marketing layer; the Hub is a separate React SPA (build inferred from _buildManifest.js shape). OpenRally's Next.js 16 App Router approach (one codebase, server-rendered, locale-aware) is arguably better architecturally and saves the eng overhead of maintaining two apps. OpenRally is ahead architecturally; not a moat but a small advantage.
Updated stance per Tier-1 assumption
| Assumption | Pre-Phase-3 stance | Post-Phase-3 stance |
|---|---|---|
| A1: 25K+ players | "rated-record count, not active-user count" | "20K+ verified — they corrected; still rated-record-count" |
| A2: collision course 12-24mo | "6-12 month due to ISO-3166 readiness" | Tighter — likely 6-12mo, not 12-24mo |
| A3: identity graph moat | "inferential" | Confirmed — phone-auto-resolve proves it directly |
| A4: a11y compare | "open until verified" | still open (didn't walk the dashboard a11y) |
| A5: AI poster works | "open until tested" | still open (didn't reach create-tournament) |
| A6: Supabase backend | "downgraded to inferential" | Confirmed — uptheqepffmurgysqzal.supabase.co directly visible in HTML preconnect |
| A7: high velocity | "Featurebase changelog shows 5+/mo" | stands |
| A8: sales-led on Partner tier | "open until tested" | strengthened — entire signup funnel is manual-review-gated, of which Partner is the top tier |
What I'd still want to verify (when approval lands)
The wizard-walk wasn't completed. Specific things still unconfirmed: 1. Number of bracket formats actually selectable in the create-tournament wizard (do Round Robin and KOC really appear as top-level options?) 2. The Operator Console drilldown sheet UI (depth, fields, organization) 3. Magic-link generation UI (what permission scopes are exposed) 4. AI poster-to-form actually working (upload a sample, see what JSON comes back) 5. The TV pairing UI in the Operator Console 6. Multi-organizer collaboration's RBAC permission matrix 7. Whether Payments has any visible UI (or "coming soon" placeholder)
These would close the inference-vs-observation gap on ~15 rows in feature-matrix.md. Recommend a 30-minute follow-up session once approval lands.