Abiola Ayeni · Product Manager
Aberdeen, UK · Full right to work · Open to PM roles

I find the real cause, then ship the fix that sticks.

Product Manager with 4+ years across ecommerce marketplaces, B2B SaaS and payments. I take a vague request, find the real problem underneath it, and turn it into user stories, acceptance criteria and API requirements engineers can build from. Then I stay involved through testing and release.

B2B SaaSPaymentsEdTechiGamingEcommerceAI features
95%less manual onboarding effort, CharacterStrong
70%fewer failed transactions, PlayFooz
60%faster transaction times, PlayFooz
92job seekers surveyed before building ApplyFlow
The story so far

Every role, one habit: diagnose before you build

Dec 2021 – Jun 2022PlayFoozProduct Manager · iGaming, D2C

Players were losing deposits and nobody knew why

  • Owned the transaction experience end to end. Formed a hypothesis on a spike in payment failures and tested it with customer surveys and support ticket analysis.
  • Isolated the cause: a currency-conversion issue hitting users in specific regions, not the checkout UI everyone suspected.
  • Onboarded regional payment processors so local-currency payments skipped conversion entirely.
  • Translated gaming and payment regulations into backlog items, balancing player trust against licensing obligations.
−70% transaction failures−60% transaction time
Jun 2022 – May 2023CharacterStrongProduct Manager · Powerstation Software · B2B EdTech SaaS

Turning support-led onboarding into self-serve activation

  • Shaped strategy and roadmap with the founders, using market trends, competitor offerings, customer feedback and usage data.
  • Redesigned onboarding for 1,300 districts and 12,000 schools: a manual, support-run process became self-serve sign-up at the point of purchase.
  • Delivered multi-tenant user management. Users are identified by school email and given role-based access, so districts manage their own people.
  • Integrated QuickBooks to track paid, nearly due and overdue schools and send reminders by status, reducing overdue accounts.
−95% manual onboarding effortTime to onboard: weeks → immediate
Jun 2023 – Apr 2026BuySocial Inc.Product Manager · Live-selling ecommerce marketplace

Helping merchants sell live, and answer their own questions

  • Led an AI feature with engineering: ChatGPT in the upload flow writes a product description from the merchant's image and a few keywords.
  • Owned the buyer experience across order tracking, delivery and purchase history on web and mobile, cutting how often shoppers contacted support.
  • Designed the merchant knowledge base from scratch. It cut repeat tickets about onboarding and live shows and became the main self-serve reference for merchants and internal teams.
  • Turned support tickets and feature requests into a prioritised backlog with context, user impact and commercial value recorded for each.
  • Wrote release notes and docs for every merchant-facing launch, and joined sales and service calls as the product point of contact.
0→1 knowledge baseAI listing assistant
BuySocial knowledge basetrybuysocial.com/blog · merchant guides I designed and wrote
Oct 2025 – Jan 2026MakeTechFly / AvioNexusVolunteer Product Manager · Flight management app

Discovery and documentation for an aviation product

  • Supported discovery and user research, and documented epics, PRDs, user stories and acceptance criteria.
  • Reviewed and updated product documentation so internal teams and customers could be supported efficiently.
AvioNexusavionexus.com · passenger data and compliance platform for private aviation
Jul 2026 – Oct 2026SkilledUp LifeVolunteer Product Manager · 60-day placement

Quality, releases and team building at a talent-marketplace startup

  • Managed weekly sprints, reviewed sprint tickets and found friction to remove from the user journey.
  • Tested web and mobile features, logged and tracked bugs, and supported releases ahead of launch.
  • Interviewed candidates for QA, UI/UX, frontend and penetration testing roles, and helped onboard new volunteers.
  • Contributed to incident reports, engineering best-practice docs, CRM research and product planning.

"She contributed to product quality, operations and team development across SkilledUp Life."

Manoj Ranaweera, Founder & CEO, SkilledUp Life · letter of recommendation
SkilledUp Lifeskilledup.life · volunteer talent marketplace for tech startups
2026 · LiveApplyFlowFounder and builder · Personal product

Researching, specifying and shipping my own product end to end

  • Ran the user research, wrote the PRD, designed the prototype and built the app with Next.js and Supabase. The full story is below.
Case study

ApplyFlow: a job tracker that saves applications for you

From survey to shipped product

Job hunting myself, I kept losing track of where I had applied. I wanted to know whether that was a me problem or a market problem, so I asked 92 job seekers.

  1. ResearchGoogle Forms survey, 92 responses, July 2026.
  2. Scope the MVPBrowser extension that auto-saves on submission across Greenhouse, Lever, Workday, LinkedIn Easy Apply and iCIMS, plus a manual save fallback. Email inbox access deferred to cut privacy risk and build time.
  3. DesignWireframes to a high-fidelity clickable prototype: dashboard analytics, Kanban board, archive, reminders, light and dark mode.
  4. Build and launchNext.js, Supabase Auth and database, Resend reminder emails on a cron schedule. Specs drafted with Claude, code written with Claude Code.
  5. Run it in productionFixed live bugs myself, including a silent cron failure that stopped reminders and a URL deduplication issue that created duplicate cards. Live and in use.
Try ApplyFlow ↗apply-flow-xi.vercel.app
What the survey said
Want auto-save, reminders and interview prep in one tool73.9%
Have lost track of an application59.8%
Have no way to follow up48.9%
Have forgotten an interview17.4%
n = 92 · bars drawn on a 0–100% scale Stack
Next.jsSupabaseResendChrome extensionClaude Code
ApplyFlow dashboard showing application, interview, offer and rejection counts, a weekly bar chart of applications sent and a table of recent applications
Dashboard: totals, applications sent per week and the latest applications at a glance.
ApplyFlow Kanban board with Wishlist, Applied, Assessment and Interview columns
Board: drag applications through Wishlist, Applied, Assessment and Interview.
ApplyFlow add application form with company, job title, URL, location, salary, status and date fields
Manual save: the fallback for sites the extension misses.
Real data

These screens are from my own account. I use ApplyFlow for my own job search, so the bugs I hit are the bugs I fix.

How I write it down

Requirements, user stories and acceptance criteria

Pick a feature. Each one shows the requirement set, the user story and the acceptance criteria the team built and tested against.

AF-EXT-01 · Browser extension · MVP

Auto-save an application when it is submitted

Problem: 59.8% of surveyed job seekers have lost track of an application, mostly because logging it is a separate, forgettable step.

USER STORY

As a job seeker applying on several job sites, I want each application saved automatically when I submit it, so that my tracker stays complete without me logging anything.

REQUIREMENTS
  • FR-1The extension detects a submission by matching success signals on the page, such as "application submitted" or "thank you for applying", on Greenhouse, Lever, Workday, LinkedIn Easy Apply and iCIMS.
  • FR-2On detection, it captures company, job title, location, salary range (if shown), job URL, date applied, and the CV and cover letter used.
  • FR-3The application is created in the Applied column of the Kanban board within 5 seconds.
  • FR-4A manual Save button is always available for sites or flows the detector misses.
  • FR-5The same job URL is never saved twice for one user.
  • NFR-1Only the job page is read. No inbox, form field values or browsing history are collected.
ACCEPTANCE
AC-1 · Happy path

GIVEN I am signed in to the extension and applying for a role on Greenhouse

WHEN the confirmation page shows "Thank you for applying"

THEN a card with the company, title and today's date appears in Applied, and I see a "Saved to ApplyFlow" toast

AC-2 · Missing fields

GIVEN the job page does not list a salary

WHEN the application is auto-saved

THEN the salary field is left blank and marked "Not listed", and the save still succeeds

AC-3 · Detector misses

GIVEN I submit on a site with no recognised success text

WHEN I click Save in the extension

THEN the captured fields are shown for me to confirm or edit before saving

AC-4 · Duplicate

GIVEN this job URL is already in my tracker

WHEN a success signal is detected again

THEN no new card is created and the toast reads "Already in your tracker"

AF-APP-04 · Web app · MVP

Follow-up and interview reminders

Problem: 48.9% have no way to follow up and 17.4% have forgotten an interview. Email access was cut from the MVP, so status changes are manual and reminders do the nudging.

USER STORY

As a job seeker with many applications open, I want to be reminded when an application has gone quiet or an interview is coming up, so that I follow up on time and never miss an interview.

REQUIREMENTS
  • FR-1Applications in Applied with no status change for 7 days generate a follow-up reminder. The interval can be changed per user (3, 7 or 14 days).
  • FR-2Moving a card to Interview prompts for date and time, and schedules reminders 24 hours and 2 hours before.
  • FR-3Reminders appear under the notification bell and are emailed via Resend.
  • FR-4Each reminder offers Snooze (2 days), Mark as followed up, or Update status.
  • FR-5Archived applications never trigger reminders.
ACCEPTANCE
AC-1 · Quiet application

GIVEN an application has been in Applied for 7 days with no change

WHEN the daily reminder job runs

THEN the bell shows a "Follow up with [company]" item and one email is sent

AC-2 · Interview scheduled

GIVEN I move a card to Interview and enter 14:00 tomorrow

WHEN the time reaches 12:00 tomorrow

THEN I receive the 2-hour reminder, having already had the 24-hour one

AC-3 · Archived

GIVEN I archive an application with a pending reminder

WHEN the reminder's time arrives

THEN nothing is sent and the reminder no longer shows under the bell

CS-ONB-02 · Activation

Self-serve school onboarding after purchase

Problem: every new district and school was set up by hand by support, including user accounts and password resets, which delayed time to first use.

USER STORY

As a school administrator whose district has just bought CharacterStrong, I want to set up my school and invite staff myself, so that we can start using the curriculum the same day without waiting on support.

REQUIREMENTS
  • FR-1A completed purchase triggers a welcome email to the named district admin with a single-use setup link valid for 7 days.
  • FR-2Users sign up with their school email. The email domain is matched to the purchasing district and school.
  • FR-3Access is granted by user type (district admin, school admin, teacher), each with its own permissions.
  • FR-4Password resets are self-serve by email link, with no support involvement.
  • FR-5Sign-ups from a domain with no active licence are blocked with a clear message and a route to contact sales.
ACCEPTANCE
AC-1 · Teacher joins

GIVEN my school has an active licence

WHEN I sign up with my school email address

THEN my account is created as a teacher in the right school and I land on the curriculum home

AC-2 · Unlicensed domain

GIVEN my email domain is not linked to any active district

WHEN I try to sign up

THEN no account is created and I see "Your school does not have a licence yet" with a link to contact sales

AC-3 · Password reset

GIVEN I have forgotten my password

WHEN I request a reset from the sign-in page

THEN I receive a reset link within 2 minutes and no support ticket is created

CS-INT-05 · QuickBooks integration

Payment status sync and renewal reminders

Problem: the team could not see in the product which schools had paid, which were nearly due and which were overdue, so chasing was manual and late.

USER STORY

As a customer success manager, I want each school's payment status pulled from QuickBooks and reminders sent automatically, so that I spend my time on at-risk accounts instead of chasing invoices.

REQUIREMENTS
  • FR-1Invoice status syncs from QuickBooks every 24 hours and maps to Paid, Due soon (within 30 days) or Overdue.
  • FR-2Status shows as a badge on each school in the admin view and can be filtered.
  • FR-3Due soon sends a reminder email to the billing contact. Overdue sends a reminder every 7 days until paid.
  • FR-4Reminders stop on the next sync after payment is recorded.
  • FR-5A failed sync alerts the internal team and leaves the last known status in place.
ACCEPTANCE
AC-1 · Overdue

GIVEN a school's invoice passed its due date yesterday

WHEN the nightly sync runs

THEN the school shows an Overdue badge and its billing contact gets the first overdue reminder

AC-2 · Paid

GIVEN an overdue invoice is marked paid in QuickBooks

WHEN the next sync runs

THEN the badge changes to Paid and no further reminders are sent

AC-3 · Sync fails

GIVEN QuickBooks is unreachable

WHEN the sync runs

THEN no statuses change, no reminders are sent, and the team receives a sync-failure alert

PF-PAY-07 · Payments

Route local-currency deposits to a regional processor

Problem: a large share of deposits failed. Analysis showed the failures clustered on payments that needed currency conversion at our existing processor.

USER STORY

As a player depositing in my local currency, I want my payment to go through first time, so that I can start playing without retrying or wondering where my money went.

REQUIREMENTS
  • FR-1Deposits in supported local currencies route to the regional processor with no conversion step.
  • FR-2Other currencies continue through the existing processor.
  • FR-3If the regional processor is unavailable, the deposit falls back to the existing processor and the event is logged.
  • FR-4Every transaction records processor, currency, outcome and duration for reporting.
  • NFR-1Success rate and median transaction time are reported weekly against the pre-launch baseline.
ACCEPTANCE
AC-1 · Local currency

GIVEN a player deposits in a supported local currency

WHEN they confirm the payment

THEN it is sent to the regional processor and their balance updates once it is approved

AC-2 · Fallback

GIVEN the regional processor returns an availability error

WHEN a player deposits

THEN the payment is retried once on the existing processor and the fallback is logged

AC-3 · Reporting

GIVEN routing has been live for a week

WHEN the weekly payments report is generated

THEN it shows success rate and median time by processor and currency against baseline

RESULT
−70% transaction failures−60% transaction time
BS-MER-03 · Merchant tools · AI

Generate a product description from an image

Problem: merchants were slow to list products and often left descriptions thin, which hurt discovery on the marketplace.

USER STORY

As a merchant adding a new product, I want a draft description written from my product photo, so that I can list faster and still have a description that sells.

REQUIREMENTS
  • FR-1After an image upload, the merchant can click Generate description, which sends the image and product title to the ChatGPT API.
  • FR-2The draft fills the description field and stays fully editable. Nothing publishes without the merchant saving.
  • FR-3Merchants can regenerate the draft up to 3 times per product.
  • FR-4If generation fails or takes over 15 seconds, the merchant sees an error and can keep typing their own description.
  • FR-5Use of the feature and whether drafts were edited are tracked for analysis.
ACCEPTANCE
AC-1 · Draft generated

GIVEN I have uploaded a product image and entered a title

WHEN I click Generate description

THEN an editable draft appears in the description field

AC-2 · Not auto-published

GIVEN a draft has been generated

WHEN I leave the page without saving

THEN the product is not published with the draft

AC-3 · Failure

GIVEN the AI service does not respond within 15 seconds

WHEN I click Generate description

THEN I see "Couldn't write a description right now. You can try again or write your own." and the field stays editable

These specs are written for this portfolio from features I shipped. They reflect the shape of the real work; internal details and exact thresholds have been simplified.

Toolkit

What I bring to a team

Product practice

  • Strategy and roadmapping
  • Customer discovery and research
  • PRDs, user stories, acceptance criteria
  • API and integration requirements (REST, auth, RBAC)
  • Intake, triage and prioritisation
  • Release readiness, testing and documentation
  • AI features and AI-assisted prototyping

Domains

  • Ecommerce and live-selling marketplaces
  • B2B SaaS onboarding and integrations
  • Payments
  • EdTech
  • iGaming

Tools and credentials

  • Jira, Confluence, Notion, Miro, ClickUp
  • Figma, Whimsical, Jam.dev
  • Mixpanel, Google Analytics, Salesforce
  • Claude, Claude Code, ChatGPT, GitHub, Supabase
  • Payment Product Manager, ProductDive (2025)
  • Product Management, ProductDive · BSc, KNUST
Contact

Hiring a PM who does the digging first?

abiolaayeniab@gmail.com
LinkedIn