Demo, read only. All these clients are made up. You can click around but nothing saves.What this is

Max

max.ianmwright.com

Agency software for local SEO and website work. You onboard a client, connect whatever accounts they'll actually give you access to, and then ask for things in plain language instead of clicking through a bunch of forms. It turns that into reports, plans, daily tasks and handoffs.

This demo is read only and every client in it is made up. There are six of them at different stages so the screens aren't all showing the same happy path.

The part I actually care about

One of the demo clients has a deliberately broken Search Console connection. That's there on purpose. The whole reason I built it this way is that when the system can't verify something, it needs to say so instead of dropping a zero in and letting you think that's the real number. A report that quietly reports nothing as zero is worse than no report.

How it's put together

Client context, then evidence, then a diagnosis, then a plan, then approval, then the actual work, then verification. Anything that writes to a real provider needs explicit approval plus a live access check right before it runs. The failure mode I was worried about was it confidently doing something to a real client's Google listing.

Python and FastAPI, SQLAlchemy on Postgres, server rendered HTML. Slack and Google APIs, GitHub and Vercel adapters. Built with AI tools in the loop.

If you're poking through the code, app/report_builder.py and app/client_provider_verification.py are where the evidence and permission boundaries live.