Product Strategy & Requirements
Working out what to build
Turning what the business wants into something a developer can build, and saying out loud what is not worth building.

Photo: ha11ok / Pixabay 
Photo: Antranias / Pixabay
Selected work demonstrating this service.
-
A brand 200 times better known
Increased brand popularity by 200x through successful brand development across offline and online platforms.
-
Twice the engagement, from listening first
Drove brand engagement and loyalty by 100% through market trend analysis and consumer behavior insights.
-
Led a GIS map application to 10x revenue growth
Led the software development of a GIS map application, driving revenue growth by 10x and positioning the product as a primary data asset.
-
Optimized forecasting and investment strategies
Optimized forecasting and investment strategies for 11 electricity grid operators, driving operational efficiency through data‑driven GIS solutions.
-
Presented 200 UI/UX improvements
Presented 200 UI/UX improvements for the GIS map application, boosting revenue by 10x through enhanced software features.
-
Managed 5,000 hours of map development
Designed and managed 5,000 hours of map development, utilizing Agile methodologies such as Scrum and Jira for effective project management.
-
Gathered and analyzed business requirements
Gathered and analyzed business requirements to translate into actionable features and user stories aligned with data governance standards.
-
Developed a Data Analytics reporting system
Developed a Data Analytics reporting system, increasing quarterly software revenue by 400% through Python‑based PDF reports.
-
Designed the product's UI and UX end to end
Designed the product's UI and UX end to end — directory grids, dual card/table views, live requirement validators and breadcrumb navigation.
-
Designed a time‑management and reporting system
Designed a time‑management and reporting system that remained in production use for years without significant modification.
-
Built Stripe and in‑app purchase entitlements
Built the payments and entitlements layer — Stripe alongside Apple and Google in‑app purchase — gating the directory, search and export through an 11‑table access model checked on the server.
-
Built the operator back‑office for the platform
Built the operator back‑office — around 40 admin routes and 128 components covering claims, moderation, feature flags, cache and diagnostics — so the platform can be run without database access.
-
Built company ownership claims and adjudication
Built company ownership claims end to end — a user claims a company, an administrator adjudicates, and an approval rewrites the authorization graph that decides who is allowed to edit what.
-
Built a loyalty wallet, leagues and badges
Built the loyalty and reputation system — 67 functions over a 31‑table ledger, with leagues, badges and a redemption shop — taking a row lock on the balance to close the double‑spend window.
-
Built the social layer: posts, feed and groups
Built the platform's social layer — posts, feed, groups, mentions, a follower graph and an occasions digest — on the same function‑first data layer as the rest of the product.
-
Built the hiring and seafarer career workspaces
Built the hiring marketplace and the seafarer career workspace — 151 stored functions across 48 tables — covering vacancies, applications, certificates, rank progression and verified sea time.
-
Built a 22‑linter commit gate
Built a commit gate of 22 one‑line linters plus five that earn a paragraph, with no warning tier and no inline suppressions permitted, covering HTML, CSS, JavaScript, Python, YAML, Markdown, shell, links, spelling, secrets and typography.
-
Ran development as 51 written initiatives
Ran the site's development as 51 written initiatives across 54 plan documents, each carrying its open boxes, its measurements and the decisions it declined — including six of eight agent‑readiness findings refused with the reason recorded.
-
Rewrote error messages to stop blaming users
Rewrote the application's error messages against a written tone standard after a refused sign‑in blamed the user for mistyping when the provider actually required an app‑specific password, and covered it with a test that names the provider.
If this is the work you need done, the next step is a conversation.
Tell us the problem and we will tell you honestly whether we are the right people.

