Services
Custom software, websites and apps, AI tooling and real-time communications, with the distributed-systems and architecture work that keeps them running. The first thing you see from us is usually a prototype.
Custom software development
Software written for how your business works. Not a product configured to approximate it.
Most companies run on a mix of products they bought and processes those products do not quite fit. The gap gets filled with spreadsheets, manual steps and workarounds. We write the software that closes the gap: line-of-business applications, customer portals, integrations between systems that were never meant to talk, and the back-end services that keep them consistent.
Our stack is .NET and Azure on the server, React and TypeScript in the browser, and native Swift and Kotlin on iOS and Android. We build with operations in mind from the first sprint, so the system tells you when something is wrong before your customers do.
What the work includes
- Line-of-business applications and internal tools that replace spreadsheets and manual process.
- Customer-facing applications with authentication, billing, notifications and the integrations behind them.
- Back-end services and APIs in .NET on Azure: App Service, Container Apps, Functions, Service Bus, Event Grid, SQL and Cosmos DB.
- Native mobile apps for iOS and Android, and the shared back end that serves them and the web.
- Integration with the systems you already run: CRM, ERP, identity, telephony, and the vendor APIs in between.
- Infrastructure as code, CI/CD, and observability with Application Insights and Log Analytics.
- Taking over an existing codebase, stabilizing it, and moving it forward.
Websites and web applications
A site or application that a technical audience takes seriously, built to the standard of the page you are reading.
This site is the portfolio for this service. The opening sequence is a pre-rendered image sequence scrubbed by scroll: the machine is a photoreal still we generated with AI image tooling, the camera move was produced by an AI video model between two locked frames, and the screen corners are tracked in every frame so the text on the glass stays live, indexable HTML. Everything on the page exists without JavaScript, it has a designed reduced-motion version, and it scores 98 or better on Lighthouse for performance, accessibility and search.
We build sites the same way we build software: real content first, then structure, then motion where it earns its place. Web applications get the same attention plus the parts that make them products: authentication, forms that behave, offline tolerance, and integrations to your systems. When the product belongs on a phone, we build the iOS and Android apps too.
What the work includes
- Marketing sites with designed motion, built for performance and search from the first commit.
- Customer-facing web applications in React and TypeScript, with authentication, forms and integrations to your systems.
- iOS and Android apps in Swift and Kotlin, sharing a back end with the web.
- Design systems and component libraries so the second product ships faster than the first.
- Accessibility and performance audits of existing sites, with the fixes rather than a report.
AI tooling and adoption
AI in your product, in your development lifecycle, and in how your organization works, from people who build with it every day.
We build with AI tooling as a matter of course: Claude Code and Claude Design, OpenAI Codex, and xAI Grok. It is how a clickable prototype exists within a day or two of the first conversation, how changes land as fast as we can talk them through, and how an agreed feature can ship the same day. That experience is what we bring to clients, in three forms.
The first is AI inside your product: assistants, summarization, extraction, search and agents built into an existing platform without rebuilding it, with the evaluation and guardrails that make them dependable. The second is AI inside your development lifecycle: tooling, workflow and review practices that let your team ship faster without lowering the bar. The third is the organization itself: advice, training and hands-on help for teams that want to become AI-driven and do not know where to start.
What the work includes
- AI features inside existing products: assistants, summarization, extraction, search and agents, built on Claude, OpenAI or Grok models with evaluation and guardrails.
- Agentic workflows that act on your systems, with the permissions, audit trail and human checkpoints a business needs.
- AI-accelerated development: introducing Claude Code, Codex and similar tooling into your team’s workflow, with the review and quality practices to go with it.
- Rapid prototyping: a clickable proof of concept for a product idea, usually within two days, that you can put in front of customers or a board.
- Advisory and training for leaders and teams on where AI helps, where it does not, and how to adopt it without breaking what works.
- Model, platform and vendor selection across Anthropic, OpenAI and xAI, including cost, latency, data handling and lock-in.
Real-time communications
Voice, video, chat and SMS built into your product or your Microsoft Teams environment, by people who worked on the platform.
Real-time communications is where our custom software work started, and it is still the specialty most firms cannot offer. Before Unifinity, we worked at Microsoft on the Azure Communication Services platform itself, the same platform that powers Teams calling. We know how it behaves, where its edges are, and what the documentation leaves out.
For software companies that means adding calling, video, chat or SMS to a product without hiring a telephony team. For enterprises on Teams it means the integration layer that rollouts stall at: Teams Phone, the contact center, the CRM, and the compliance recording that has to go with it. The hard part is rarely the first call. It is the second thousand: carrier behaviour, media quality on bad networks, recording, retries, and what happens when a server restarts mid-call. We design for that from the start.
What the work includes
- Azure Communication Services: Call Automation for inbound and outbound calling, IVR, transfers, recording, and real-time audio streaming to speech and language services.
- PSTN: Microsoft numbers, direct routing to your own carrier through a certified session border controller, number porting, emergency calling requirements.
- Chat and SMS: threads, receipts and typing indicators; 10DLC, toll-free and short code SMS with the registration and opt-out handling regulators require.
- Identity and access: token issuance from your own backend, mapped to your users, so no client ever holds a connection string.
- Microsoft Teams: Teams Phone with Direct Routing, Operator Connect and Calling Plans; Microsoft Graph cloud communications; bots and message extensions; embedded calling in your own application.
- Contact center integration: connecting your contact center platform to Teams Phone so agents work in one place, including Teams Phone extensibility through Azure Communication Services.
- Compliance recording: policy-based recording bots that join calls automatically, handle media in real time, and hand recordings to your retention platform.
- Calling SDK integration in web and mobile clients, including device handling, network recovery and the parts of the experience that decide whether people trust the feature.
Distributed systems with Akka.NET
For the parts of a system that must stay responsive under load and keep their state straight while they do it.
Real-time systems have a shape that ordinary request-and-response code handles badly: thousands of long-lived things, each with its own state, each changing on its own schedule. Calls, sessions, devices, agents, conversations. Akka.NET models each one as an actor, a small unit that owns its state and talks to others by message. The result is a system that scales out across a cluster, isolates failures, and stays readable as it grows.
We have built production Akka.NET systems for call routing, presence, messaging and telemetry, and we know where the sharp edges are: cluster sharding and rebalancing, persistence and event replay, back-pressure with Akka.Streams, and testing code that is concurrent by design.
What the work includes
- Actor-model design for call routing, presence, session management and messaging.
- Akka.Cluster and cluster sharding for systems that scale out and survive node loss.
- Akka.Persistence and event sourcing where the history is the record.
- Akka.Streams for back-pressured pipelines: media events, telemetry, integration feeds.
- Reviews of existing Akka.NET systems, and help moving a struggling one to a sound topology.
Software architecture
The design and the plan before anyone writes code, or an honest review of what has already been built.
A system that touches identity, networking, media, compliance and at least two vendors is expensive to get wrong, because the mistakes show up in production, under load, in front of customers. We write the design down first: the system, the integration plan, the sequence of work and the risks, costed so you know what you are agreeing to.
We also review systems other people have built: for a company deciding whether to buy one, for a team inheriting one, or for a leader who wants a second opinion before committing more budget.
What the work includes
- System design for custom software and real-time communications: data, call flows, media paths, state, failure modes and the operational model.
- Integration strategy across your product, Microsoft Teams, Azure Communication Services, contact center platforms, CRMs and line-of-business systems.
- Technical due diligence for acquisitions and vendor selection.
- Architecture reviews of existing systems, with findings ranked by risk and a plan you can act on.