Skip to main content
The web dashboards span two domains. guild.com.ng serves Job Seekers, traders, and employers. partners.guild.com.ng serves the financial-services partners — banks, microfinance institutions, insurers, credit fintechs — who read consent-gated snapshots and disburse over our rails. It’s also a fallback for any user who wants more detail than fits comfortably in a WhatsApp message.

Who uses web

The frontend is a Next.js application. The browser doesn’t talk to backend services directly — every API call goes through Next.js’s own server-side handlers, which sign outbound requests to core-api using @guild/svc-client. The session is an opaque ULID cookie.

Authentication

No password. Phone number + SMS OTP. Always. The flow:
1

Enter your phone number

On guild.com.ng/sign-in. We send a 6-digit code via OPay SMS.
2

Enter the code

Within 10 minutes. After that, request a new one.
3

Session established

httpOnly cookie with an opaque ULID. Scoped to the /api path. SameSite strict. Secure in production.
4

Use the dashboard

Every page reads from the session cookie. No re-auth needed for the session’s lifetime.
Why no password: passwords get phished, reused, leaked, forgotten. A phone-anchored OTP flow with rate limiting and short-lived codes is more secure for our threat model and friction-free for users who’ve already remembered their phone number. If you sign in from a new device, you get a new session. You can have multiple active sessions; manage them from guild.com.ng/settings.

The dashboard surfaces

Job Seeker dashboard

guild.com.ng/overview. Overview at the top — wallet balance, standing tier, recent applications. Below: tabs for jobs, earnings, standing, savings, and settings. The single most-viewed page for a Job Seeker is the standing-score page (/standing) — a chart of the tier history with the signals breakdown.

Trader dashboard

guild.com.ng/overview. Trader version of the overview — sales today, velocity trend, virtual account, recent inflows. Below: tabs for sales, inventory (if used), customers, advance offers (if eligible), and settings. The single most-viewed page for a trader is the sales-velocity page (/sales) — daily inflow chart, distinct-customer count, repeat-rate, and projection toward the next tier.

Employer dashboard

guild.com.ng/overview. Employer version — active jobs, applications awaiting approval, escrow balance, hiring spend. Below: tabs for jobs, applications, workforce reports, escrow management, and settings. The single most-viewed page is the job-detail page (/jobs/[jobId]) — applicants ranked by the matching model, with approve/reject buttons.

Partner Portal

partners.guild.com.ng. Separate sign-in for partner organisations (banks, microfinance institutions, insurers, credit fintechs). Pages for API key management, consent monitoring, webhook subscriptions, usage statistics. Details at Partner Portal.

The BFF (Backend-for-Frontend) pattern

The frontend doesn’t talk to core-api directly. It talks to its own Next.js API routes under /api/*, which sign outbound calls to core-api. Why the BFF:
  • The shared secret never reaches the browser. Only the BFF holds SERVICE_AUTH_SECRET.
  • The browser sees only opaque cookies. A compromised browser session can do only what its session permits.
  • API surface area is intentional. Only the routes the BFF explicitly exposes are callable from the browser. Internal endpoints stay internal.

Mobile-friendly

The web dashboard works on phone browsers as well as laptops. Most Job Seeker activity that does happen on web is on a smartphone browser, not a desktop. The design prioritises legibility on small screens. No tiny tap targets. No dense tables.

Real-time updates

Some surfaces (incoming applications for an employer, balance changes for a trader, standing tier moves) update in real time without a manual refresh. We use Server-Sent Events for the push side. A trader watching their dashboard sees a new inflow appear in the transaction list within a few seconds of the customer transfer landing.

What you can’t do on web

A few things you can do on voice or WhatsApp but not on web:
  • Voice signup. The Tola conversational onboarding is a voice rail, not a web flow. The web equivalent is the standard phone-OTP signup.
  • Receive job alerts inline. WhatsApp and SMS push job alerts. The web dashboard shows them as a notification badge; you click in to see.
Most other operations are available across all rails.

Browser support

Modern browsers — Chrome, Firefox, Safari, Edge, Brave, Opera. Mobile equivalents work too. We don’t actively support IE11 or browsers older than 2 major versions. The frontend uses modern JS and CSS features.

Privacy on web

Standard browser-side privacy practices:
  • No third-party tracking scripts. No Pixel, no GA, no Hotjar, no clarity.ms.
  • Cookies are first-party only. The session cookie is httpOnly and SameSite=strict.
  • Localstorage is minimal. A few UI preferences (last viewed tab, theme). No user identifiers.
  • Service worker is scoped narrowly. Used for offline caching of static assets, nothing more.

Where to read more

Inter-service communication

How the BFF signs every call.

KYC tiers

The phone-OTP signup baseline.