Decide what to build. Then build it properly.

I work with founders and small teams in two ways: helping you decide what to build, and building and shipping it. Most clients need to get the first one right, because they can't afford to get the second one wrong. That's exactly where I help.

Start a conversation Is this for me? Independent · remote or DC-metro

Technical Advisory

You have an idea, an inherited codebase, or a platform decision that feels wrong but is hard to articulate. I turn that ambiguity into a written, defensible plan your team can act on and hand to any developer.

Build & Ship

You know what you need and want it built right the first time, by someone who will still be accountable for it once it's running in front of real customers.

Let's start with your situation, and find the friction.

You don't need to know what to call the problem. If one of these sounds like your week, we should talk.

I have an idea, but I don't know what it actually takes to build.

You get a plain-language plan: what the system is, the pieces it needs, what it will realistically cost to build and run, and what to build first. Written so your team can discuss it together, and so a developer can start from it.

Advisory
We started building, and now the thing is fighting us.

An honest structural read on what you already have: where the ceilings are, what's a genuine risk versus a cosmetic complaint, and what it would take to move. Sometimes the answer is that you don't need to move.

Advisory
We want to add AI, but we can't tell what's real and what's hype.

A straight read on where it earns its place in your product, how to keep its behavior predictable enough to put in front of customers, and what it will actually cost per month once people are using it.

Advisory
We know what we need. We need someone who can build it.

One accountable person carrying the work from architecture through to a system running in production. I ship in increments, so the product works the whole way rather than at the end.

Build & ship
Why the two tracks are separate. Advisory work is often the most cost- and time-effective thing a client can buy, because a wrong direction costs you twice: once to build it, and again in the months spent undoing it. Some engagements start as advisory and become a build once the direction is settled, but that's a choice you make with evidence in hand, not a funnel. Advisory is priced and scoped to stand on its own, and it ends with artifacts you can hand to any developer, including one who isn't me.

Technical Advisory

The deliverable isn't a slide deck of recommendations. It's a set of documents your team can reason about together, and that survive the meeting they were presented in.

A map of what you're building
Your concept converted from prose into an explicit picture: what the user does, what runs underneath, and what each piece requires to exist. This is usually the first time a team sees whether the idea holds together as a system.
Platform and build-versus-buy calls
An assessment against the demands your system actually makes, not against general preference or what's currently fashionable. Including where buying something off the shelf is plainly the better deal.
An architecture your developers can start from
A layered design tied back to the system map, plus an annotated project structure so every component has a traceable home at handoff.
An honest read on AI
Where language models earn their place in your product, how to bound them so behavior stays explainable, and what it will actually cost to run at your usage.
Decision records
The reasoning behind each significant choice, including the options I rejected and why, written to be read by a non-technical stakeholder and a developer alike.
Technical due diligence
A structural read on a system you've inherited or are considering acquiring: where it will stop scaling, what's a real risk, and what a move would cost.
Ends with a working handoff, not a dependency.

Build & Ship

Full ownership from architecture to production, including the parts most teams underestimate: third-party integrations, security, and the messy edge cases real data produces.

Complete product development
Back end, front end, and data model designed together rather than bolted to each other, all the way through deployment. Python and React, in practice.
AI features that read your real data
Assistants that query a user's actual records and answer specific questions about them, with sensible limits and graceful behavior when something is unavailable. Not a chat window bolted onto a marketing page.
Financial data integration
Bank and brokerage connectivity, transaction categorization, statement extraction, and the real-world edge cases that show up the week after you go live with live institutions.
Cloud infrastructure that runs unattended
AWS deployment with encrypted databases, managed secrets, centralized logging, automated deploys, and rollback. Set up so a small team can operate it without a dedicated ops hire.
Automation of work people currently do by hand
Repetitive workflows replaced with pipelines that run reliably and leave a visible trail, including systems that classify incoming work and complete it end to end.
Security handled from day one
Encryption, secrets management, protection against the common attack classes, and automated security tests, built in from the start rather than scheduled as a hardening phase you never get to.
The product works the whole way through, not just at the end.

The work behind the claims.

Each starts with the situation and the result. If you want the engineering detail, it's one click away. If you don't, you can skip it without missing the point.

Flagship build · Fintech SaaS · Solo, end to end

Smata Systems: a production finance platform, built alone

A complete personal-finance and small-business accounting product that I conceived, designed, built, secured, and deployed entirely on my own. It's live, with paying customers and real bank connections.

The situation

For years I exported my own bank transactions and analyzed them by hand to understand my spending while paying down debt. The data was there; the insight wasn't. Most people don't have a data engineer's toolkit, so I built the product I wished existed.

What it does

Gives someone a complete picture of their money across every account: transactions imported automatically or pulled straight from their bank, categorized without manual sorting, then turned into cash flow, spending trends, net worth, taxes, and a debt payoff plan, plus an assistant that answers questions about their own numbers.

Why I lead with it

It wasn't built for a client. There was no team to lean on and no scope handed to me. Every architectural decision, integration, security control, and production cutover was mine, and I've lived with all of them. It's the most honest evidence I can offer of what I can build for you.

Engineering detail
  • A real production deployment, not a demo environment. Containerized services behind a load balancer with HTTPS, an encrypted database, credentials injected from managed secret storage, centralized logging, and an automated build-and-deploy pipeline.
  • Live bank connectivity, hardened against real data. A full sandbox-to-production cutover followed by the edge-case arc you only get with live institutions: pagination fixes to retrieve complete history, per-account separation, merchant name cleanup, fallbacks for masked descriptors, and incremental sync that can safely re-run.
  • Bank credentials encrypted at rest using a managed key service, with a verified end-to-end encrypt and decrypt path.
  • A disciplined refactor under load. A 7,400-line monolith decomposed into a compact entrypoint plus twelve focused feature modules, executed as small shippable migrations that never took the application offline.
  • A staged front-end rewrite. Eleven independent React applications replacing legacy pages one at a time, with a unified light and dark theme and shared data adapters, avoiding a risky big-bang rewrite.
  • Security as a first-class concern. Hardening against the standard attack classes with a dedicated automated security test suite, request forgery protection, content and header policies, rate limiting, and a public transparency page.

Advisory engagement · Sports-education venture · Early stage

Turning a long brainstorm into a system a team could build

The client had a strong concept and a genuinely good idea, but it existed only as a long, unstructured document. They arrived asking "which platform?" before anyone had established what the system actually was.

The situation

An early-stage product concept that existed only as a long, unstructured document. Because it lived as prose, two things were impossible: seeing whether the pieces cohered as a system, and judging what it would take to build. An early implementation had already begun on a platform that was hitting limits the client could feel but not yet name.

What I did

Established what the documents needed to prove before making any of them. A diagram drawn to explain a product and one drawn to select a platform are different artifacts. Then converted the brainstorm into an explicit system map, evaluated the platform question against what the product actually demanded, and produced an architecture with a project structure ready for developer handoff.

Outcome

An undocumented concept became an explicit, reviewable model the client's team could reason about together, surfacing considerations the founder hadn't weighed before, then scoping the best way forward. A platform decision that had been felt as frustration became a documented, defensible choice, with the reasoning preserved for stakeholders who weren't in the room. The two highest-risk parts of the product were identified and bounded before implementation rather than discovered during it.

Engineering detail
  • System modeling. A two-band model (the user journey above, the engine services beneath) with typed edges distinguishing user paths from data reads and writes. Every node carried an explicit list of the platform capabilities it required, which is where the build decision actually lived.
  • The platform constraint was categorical, not effort-based. The incumbent platform is built for publishing; the product is an application whose value sits in its logic. I identified the specific structural failure points and recommended a split that preserves the existing site for marketing, so no prior work was discarded.
  • Target architecture. A layered design in which every component is annotated with the capability it implements, plus an annotated repository tree mapping folders to architecture nodes.
  • Bounding the AI. Personalization designed as three ordered stages (deterministic filtering, then recall, then model reranking of a bounded shortlist), so selection stays explainable, fast enough for a notification tap, and degrades to the deterministic stage on failure. Live personalization was separated from content generation, keeping generated material behind human review given the sensitivity of the audience.
  • Instrumentation strategy. Product-critical data the product's logic depends on belongs in the client's own database; behavioral research tooling is a solved problem worth buying. Mirrored event naming across both, with field-level masking on sensitive input.
  • Stack chosen against real constraints. Selected for the client's existing proficiency rather than theoretical uniformity. A learning curve on the hardest component is a schedule risk, not a virtue. I explicitly declined an extra abstraction layer whose cost exceeded its benefit at that scale.
  • Market position and risk, stated plainly. The points of genuine differentiation, and the corresponding risk named directly: an unoccupied category also means an unvalidated demand curve. I named adjacent wedges with demonstrated willingness to pay as lower-risk entry paths.

Deliverables built as working artifacts: interactive where the content is a graph, printable where it is a document, so they serve review sessions and handoff equally.

Enterprise engineering · Federal agency · Agentic AI in production

An AI system trusted with production access

An autonomous system that watches for incoming engineering requests, works out what each one is, and completes it end to end across multiple categories of routine operations work, with no human in the loop and a full audit trail on every run.

The situation

Several categories of routine engineering work (environment and data staging, deployments, data refreshes, scheduled service changes and more) each required an engineer to hand-run a long, error-prone sequence of remote commands and then watch it. Hours of standing manual toil, repeated indefinitely, in an environment where mistakes are expensive.

What I did

Built a system that classifies each incoming request, routes it to a specialist handler that can only perform that one kind of work, executes it, and records everything it did. Plus the supervision layer the team needed to be comfortable: a live view of what it's doing right now, trend dashboards, and natural-language search across its own history.

Outcome

Removed standing manual toil across every category it covers. What was a multi-hour manual sequence became a single run: faster for the people requesting it, fully auditable for the people responsible for it, and engineers freed for work that actually needed them.

Why this matters if you're considering AI

Most agent work stops at the demo. This one holds production credentials in a regulated enterprise and performs irreversible operations, which means it needed the classification gates, observability, and failure handling that make a team willing to grant that access. If you're trying to move an agent from impressive to deployed, that gap is the whole problem, and it's the part I've actually done.

Engineering detail
  • Three-stage classification before any action. Label detection, then model confirmation, then a language-processing fallback, routing each ticket to a specialized handler for that category. Typing the ticket before a handler runs is what keeps the action space bounded and the behavior auditable: an agent that can do a known set of things is a system; one that can do anything is a liability.
  • Multi-provider model abstraction across three vendors. Switching models is a configuration change, not a rewrite. Given how fast the frontier moves and how often pricing shifts, this is the single decision I'd most defend eighteen months later.
  • The hard one: automated production data loads. Orchestrates a full multi-step pipeline: it refreshes staging from production, remaps and fetches referenced input files from vault storage (with polling, because the transfer is asynchronous), executes each load script while parsing live job status, and chains directly into the code-patch workflow when a request needs both a data load and a deployment.
  • Surgical configuration patching. Rather than flagging a diff for a human to review, the patch handler edits only the affected sections of the target configuration. That's the difference between an assistant that makes work and an agent that finishes it.
  • Scheduling, immediate or future-dated. Backed by a schedule table with its own management page, so time-based operations are queued and visible rather than remembered.
  • Observability built for the humans supervising it. An analytics dashboard for volume and processing-time trends, a live visualization of what the system is doing at that moment, and a retrieval-backed chat interface for natural-language search across historical ticket data.
  • Reliability hardening, the unglamorous half. Race conditions in asynchronous remote file transfers, database reset scripts made non-interactive across nested remote hops, version-control staging edge cases. This is the work that decides whether a team actually lets an agent touch production.

Details generalized. Available in fuller technical depth under NDA.

How I work.

My background is unusual in a way that matters here. I've spent most of my career inside large, high-consequence environments where you don't get to hand-wave the operational questions, and I've also built a complete production platform on my own. I've made the architectural decisions and lived with them afterward, which is why my advice tends to be about constraints rather than preferences.

Structured discovery before modeling

I establish what a document needs to prove before I make it. A diagram drawn to explain a product and one drawn to select a platform are different artifacts.

Every recommendation tied to a named constraint

Not preference, not what I used last time. If I can't name the constraint driving a recommendation, it isn't one yet.

Rejected options recorded alongside chosen ones

Decisions stay legible to people who weren't in the room, and can be revisited on evidence rather than on anxiety.

Ship incrementally

Small, verifiable changes that keep the product working the whole way. It's how I refactored a 7,400-line monolith with no downtime.

Production-minded from day one

Encryption, secrets management, security headers, and automated security tests aren't a hardening phase you schedule later.

Honest about risk

If I think your market is unvalidated or your differentiation is thin, I'll say so in the deliverable. You're paying me for the read, not the reassurance.

One accountable owner

Someone who understands the code and the domain, and can carry a project end to end, without a handoff chain that loses the reasoning along the way.

Engagements that end

Advisory work finishes with artifacts you own and can hand to any developer. The goal is a working handoff, not a retainer you can't leave.

Certifications

AWS Certified Cloud Practitioner

AWS Certified AI Practitioner

Artificial Intelligence and Career Empowerment · University of Maryland, Robert H. Smith School of Business

Education

BS, Computer & Information Sciences · University of Maryland Global Campus

BA, Sociology · University of Pittsburgh

Full technical stack, for technical reviewers
Backend
PythonFastAPIFlaskDjangoGunicornREST / JSON APIsServer-sent eventsJWT & session auth
Frontend
ReactTypeScriptJavaScriptChart.jsLight/dark themingPWA
AI & LLM
OpenAIAnthropic ClaudeAWS BedrockDeepSeekOllamaTool / function callingStreamingMulti-provider abstractionRAG in productionHybrid searchpgvectorChromaDBMCP serversMulti-agent orchestrationToken & cost management
Data
pandasNumPySciPyPostgreSQLMySQLMongoDBOracleSchema designRaw SQL & ORMPDF generation & extraction
Cloud & DevOps
ECS / FargateALBRDSKMSSecrets ManagerCloudWatchECREC2S3IAMRoute 53ACMDockerJenkinsGitHub ActionsCI/CDZero-downtime deploys
Integrations
Plaid (banking & investments, production)Stripe subscription billingPostHogMarket-data APIs
Security
OWASP Top 10 hardeningCSRFCSP & security headersRate limitingEncryption at rest (KMS)Secrets managementAutomated security testing
Automation
APSchedulerJob-status parsingSSH-driven remote executionProgrammatic git workflowsWebhook & polling ingestion
Infrastructure & quality
Linux (RHEL, Ubuntu, CentOS)NGINXApacheBashpytestParallel test executionCoverage reportingCI-gated pipelines

Let's talk about what you're building.

If you're building fintech, data, or AI features, or facing a platform decision you'd rather not make on instinct, I'd like to hear about it. A first conversation costs nothing and usually clarifies more than you'd expect.

LinkedInRob Davis
ResponseWithin 1 business day