Balqalam — Social

بالقلم — the school SaaS brand and its Facebook Page. The one face the school product publishes as, with the marketing strategy wired into calendar, draft, media and publish.

Balqalam — Social

بالقلم — مدرستك كلها في مكان واحد. Balqalam is the school management brand. The product used to be called Hogwarts; that name is retired from everything public, and the hogwarts brand in this Hub is hidden and carries no briefs. Every school post goes out as Balqalam, on the Bilqalam بالقلم Facebook Page.

The strategy behind this page is Balqalam Marketing Strategy v2 (2026-09-27). This page is the part of it the social pipeline executes: /calendar and the Monday seeder read the briefs in content/social/pillars.json, /draft reads this page for voice and claims, the media lane reads each brief's visual, and /publish delivers to the Page after a human approves.

Goal

Social is a trust asset for sales: a school owner checks the Page before a demo, and an active, calm, Arabic-first Page removes doubt. The company metric is active paying schools; the Page's own signal is messages from decision-makers (owners, principals, registrars, finance leads), not followers, likes or reach.

Positioning

  • Business model: SaaS, per-school subscription. B2B — the owner signs.
  • Language: Arabic first. Plain modern standard Arabic (rung 2); English is the mirror.
  • Message: your whole school in one place — admission, attendance, fees, results and family communication — in an Arabic system that starts from the data the school already has.
  • Markets: one Page, two tracks. Sudan is the proof track (the live pilot, the warm network); the Gulf (Saudi, UAE) is the cash track. Knowledge posts are written for any Arabic-speaking school; a post that talks price, payment or regulation names one country.

Audience

PersonaWantsFearsWhat the post says
School owner (signs)Control, financial visibilityCost, failure, the vendor vanishing, data lock-inThe whole school in front of you, and your data stays yours
General managerLess chaos across departmentsStaff pushback, disruption mid-yearWe start from your existing Excel file
Registrar / admissionsNo more retyping family dataErrors, lost follow-upsThe parent types it once
Finance leadDue, late and discounted fees at a glanceLost receipts, scattered ledgersFees, invoices and receipts in one record
IT / procurementIsolation, export, roles, hostingUnproven compliance promisesPrecise answers, no invented certificates

Teachers and parents read the Page too; knowledge posts reach them, but every post is written to one persona and every ask points at the decision-maker.

Channel mix

PriorityChannelRole
NowFacebook — the Balqalam PageThe only publishing channel. Every approved piece lands here
NowWhatsAppFollow-up only: a manual copy-out variant a person forwards to a school that already replied. Never broadcast
LaterLinkedInWhen the Gulf track has a live conversation
ParkedInstagram, TikTokInstagram returns once linked to the brand Page (today's handle is personal); TikTok when someone can make two videos a week without slowing the rest

Content pillars

PillarSharePurposeExamples
school-operations35%The owner recognises the problemAbsence, fee chaos, admission season, one staff member holding everything
product-proof30%Show it works — real screens onlyScreen captures, workflows, Arabic interfaces
learning-science20%Authority, a quality audienceRetrieval practice, spacing, feedback — evidence labelled
trust15%Remove fears, explain the offerData ownership, the pilot, a fair comparison

Cadence and calendar — the editorial queue

Balqalam does not use the weekly seeder. Its posts come from an editorial queue: ninety numbered, undated drafts written ahead of time from the product itself, loaded into /social/publish in order. The team takes the next one whenever it posts — daily, or with gaps; nothing is dated, so nothing slips.

PieceWhere
The drafts (001–090, Arabic first, English sibling)content/social/queue/balqalam/NNN-<slug>.md
The plan — 13 themed weeks × 7 slots, each tied to a featurecontent/social/queue/balqalam/plan.json
The drafting contractcontent/social/queue/balqalam/SPEC.md
The product facts each draft came fromhogwarts <feature dir>/SPOTLIGHT.md (named in each draft's frontmatter)
Loader (strict craft gate, idempotent)node scripts/social-drafts.mjs queue --brand balqalam [--dry]

The seven-slot rhythm, repeated: a school-day pain · a product proof · one persona's view · learning science (evidence labelled) · trust · a short how-to · a question to owners and principals. Evenings (19:00–23:00 local) are the window.

To write the next ninety: add rows to plan.json, write 091-… onward against SPEC.md, run the loader with --dry, then without. Replace or extend the set at a quarterly review rather than let it repeat unexamined.

Voice

  • Arabic is written, never translated. A concrete school scene before any abstraction (content/social/scenes.json → balqalam).
  • Intelligent, direct, calm. No hype words (ثورة، يغيّر كل شيء، الأول بلا منافس), no corporate filler, no emoji beyond one.
  • One persona, one idea, one ask per post.
  • The ask has no link. Close by inviting a message to the Page (راسلونا على الصفحة) — copy.mdx check 6: "if there is no link, say what to do instead". One ask, last.
  • Evidence posts separate three layers and never blend them: what the study found · what it may mean for a school · what Balqalam actually does. Label evidence strong, promising, preliminary or unsupported. No brain imagery, no dopamine, no learning styles, no correlation as causation.

Claims

The canonical registry is hogwarts/content/docs-en/marketing-brief.mdx. A draft that needs a number, result or feature not listed as allowed there is refused, not softened.

Allowed: about 28 capability areas and about 60 features · Arabic is the default (2,247 Arabic strings) · King Fahad Schools, Khartoum, as the one live pilot — no results, no quotes without recorded approval · Free up to 100 students and 10 teachers · Excel import with Arabic headers · opens in the browser and installs to the home screen · data exports as CSV or JSON · built for slow connections · the MENA-10 pilot: three months free, then an annual contract.

Never: the Hogwarts name or wordmark · hours or money saved, percentages, uptime · "paying customers" or any school count beyond the one pilot · offline · native or store app · advanced analytics · payment gateways by count · automatic submission to ADEK or any regulator · compliance with PDPL, GDPR or FERPA · a student's face without written consent.

Media

  • Idea posts carry a visual in their brief (plate or lifestyle): calm school settings, desks, rooms, hands — no faces of children. The media lane compiles it against the brand kit (content/media/brand-kit.json → balqalam); the mark is the quill, never the Hogwarts wordmark.
  • Proof posts carry no generated visual on purpose. They attach a real Arabic screenshot of the shipped screen — the hogwarts repo root holds *-ar.png captures, and /record makes fresh ones — never a mocked or generated interface.
  • Text-bearing cards (lists, carousels) render on the template lane (/carousel), not as images.

Measure and kill

/measure reads each post at 24 hours, 7 days and 30 days. Record who engaged (owner, teacher, parent, student), not just how many. Four weeks without a single message from a decision-maker means change the angle, not the volume. Boost nothing until the week-8 review shows which posts bring decision-makers.

Wiring

PieceValue
Product idbalqalam (env suffix BALQALAM)
Facebook PageBilqalam بالقلم — profile.php?id=61592684345321
Graph Page id1218016808068580 — not the 61592684345321 in the profile URL, which is the profile number and returns error_subcode: 33 from Graph
EnvFACEBOOK_PAGE_ID_BALQALAM, FACEBOOK_PAGE_ACCESS_TOKEN_BALQALAM
Meta appGabriel (874547138717755) — the same Business app that carries the other Pages; renamed from "Hogwarts Social" 2026-08-19 so the app name is brand-neutral across four Pages
Domain / UTMbalqalam.com

The Page token is minted the same way as the others: a user grant on the Business app with the Balqalam Page ticked in Meta's granular-consent dialog, exchanged for a long-lived user token, then /me/accounts for the Page token — which must come back with expires_at: 0. A permission grant made before this Page existed does not cover it: the granular scopes name page ids explicitly, and clicking Generate Access Token in the Graph API Explorer silently re-issues the old grant rather than offering the new Page. The step that actually adds it is Edit settings → Select all → Continue → Save in the login dialog. Do not revoke the app to force a fresh dialog — that would invalidate the three working permanent Page tokens.

Wired and verified 2026-08-19: checkFacebookHealth("balqalam") returns Bilqalam بالقلم, and the hogwarts / mkan / databayt tokens survived the re-consent unchanged.