Product · Technology · Automation

I build AI tools around how people work.

I’m Mahitha, a Data Science and Business student at Northeastern. I combine product thinking, technical depth, and business context to build experiences people can trust and use.

Portrait of Mahitha Gudipaty
SMBCBank-wideAI intake tool now used across SMBC Americas
SMBC39 → 20Days to review an AI use case
REBA15–20 hrs → 30 minPer-client data validation
REBA44–78 hrsSaved every week across new clients

Selected work

What I've worked on.

  1. 01Company research
  2. 02User journey map
  3. 03Sentiment trends
  4. 04BeReal vs. Locket
  5. 05Feature ideas + RICE
  6. 06PRD-Lite
  7. 07User flow
  8. 08Prototype
  9. 09Focus group
01

Company research

Deliverable

I started by looking at how BeReal makes money and what it needs to grow. Most revenue comes from ads, and you have to post before you can see your friends' feed, so the daily post matters for users and the business. Sources are in the appendix.

BeReal company research summary covering founding, funding, business model, competition, and growth
Open full size ↗
02

User journey map

Deliverable

I mapped BeReal's experience across five stages. The worry "is my moment worth sharing?" shows up from stage 2 onward, which is where I focused.

Five-stage BeReal user journey map with actions, thoughts, and feelings
Open full size ↗
03

Sentiment trends

Deliverable

To check the journey map against real users, I pulled public reviews and comments about BeReal's daily notification and Locket's home-screen widget, grouped them into themes, and scored each one. It's a small sample, so I used it as a gut check.

04

BeReal vs. Locket feature comparison

Deliverable

Both apps are about sharing everyday photos with friends, but BeReal brings you back with a timed notification and Locket with photos on your home screen. None of Locket's top themes involve pressure, which pushed me toward keeping anything new for BeReal optional and low-pressure.

BeReal and Locket feature comparison across five themes
Open full size ↗
05

Feature ideas + RICE

Deliverable

I turned the friction points into 7 ideas, each tied to a problem and a guess for how it could help MAU. Then I scored them with RICE.

Ordinary Moments came out on top. Every user already gets the notification, and it's mostly new copy on screens that exist, so it reaches a lot of people for very little effort. I didn't go after notification reliability even though it was the top complaint, because that's an engineering fix more than a feature. Going into the PRD, I also narrowed the problem from social comparison to posting hesitation, since that happens right when the notification comes in.

06

PRD-Lite

Deliverable
07

User flow

Deliverable

I added the feature into BeReal's existing flow instead of building a separate one, including first-time vs. repeat users, loading, error, and opt-out states.

Ordinary Moments MVP user flow showing first-time, repeat, opt-out, loading, success, and error paths
Open full size ↗
08

Prototype

Deliverable

Built in Canva and used in the focus group.

Scroll left to right to view the full prototype.

Daily Notification (Entry)
01Notification
Camera with the prompt expanded
02Prompt expanded
Camera with the optional prompt collapsed
03Prompt collapsed
Post-Capture Preview
04Post preview
Friends Feed success state
05Friends feed
Error and recovery state
06Error state
09

Focus group

Deliverable
Participants
6
Session
40 minutes
Prototype
Canva
Goal
Is it clear, does it feel like BeReal, would it get people posting?

Warm-up. Participants talked about their current BeReal habits before seeing the prototype. Most were familiar with BeReal, but their posting frequency varied. A common reason for skipping a BeReal was feeling like there was nothing interesting happening at the time.

What I'd build next

Fix the clarity issue first: keep the prompt private, label it "Today's prompt" on every screen, and say on the preview that friends see a normal BeReal. Then run an A/B test against the regular notification, with notification-to-post conversion as the main metric and opt-out rate as a check that prompts aren't annoying people. I'd also try prompts on some days instead of every day, since that's how participants said they'd use it.

A

Appendix · Sources

Deliverable
Sources and research notes for the BeReal company research summary
Open full size ↗

At a glance: Automated a manual AI governance intake process at SMBC using a multi-agent Copilot Studio workflow. Cycle time dropped from ~39 to ~20 days, admin effort per case from ~10 to ~2 hours, and weekly manual workload from 20+ to ~4 hours per person. Now used company-wide, replacing the original intake form entirely.

Overview

SMBC's AI Governance and Enablement (AIEG) team is the internal review board for every new AI use case at the bank. Before a team can use AI on anything, their request has to go through AIEG for intake, risk review, and sign-off. Before this project, the process was completely manual. A use case submission came in through an intake form roughly 60 questions long, and a team member had to review the entire thing by hand: checking for inconsistencies and missing information, then running downstream clarification with the use case owner over email and calls until the submission was actually complete. Once complete, the reviewer manually emailed the use case details to control groups like compliance and legal for approval, logged each group's “No Objection” in a tracker by hand, and built a presentation slide summary from a template as the last step before sending the case to the second line of approval. The team processes 200+ of these use cases a year this way, and the manual work added 20+ extra hours to each person on the team's workload every week.

FrictionRoot causeImpact
Long, unstructured manual reviewIntake form ran ~60 questions long with no automated pre-check for gaps or inconsistenciesA reviewer had to read every submission in full before even starting clarification, tedious and error-prone at 200+ cases a year
Manual clarification loopMissing/inconsistent answers meant emails and calls back and forth with the use case ownerMultiple rounds per case, adding days to cycle time before a case was even ready for approval routing
Manual control-group routingReviewer manually emailed control groups (e.g., compliance and legal) and logged each “No Objection” in a tracker by handNo shared system of record; status depended on someone remembering to update the tracker
Manual slide creationPresentation summary was built from a template by hand as the last step before second-line approvalRepetitive formatting work added to the ~10 hours of admin time per case
Fragile tracking spreadsheetCase status and control-group responses lived in one large Excel file, edited by multiple people at onceTables and columns regularly collapsed under concurrent edits, and values could be overwritten with no audit trail

Over a 9-week project during my AIEG internship, I automated AIEG's intake system: a multi-agent workflow in Copilot Studio that automates the intake, research, and clarification steps of the process while keeping a human reviewer in the loop for judgment calls. I designed, built, and tested it, then took it through review with my manager, the AIEG team, and IT/security before presenting it to CDAO AI Strategy leadership for final sign-off ahead of company-wide rollout. The project was also featured in SMBC's internal monthly AI newsletter.

After a pilot batch of cases ran through the new system, average cycle time dropped from ~39 days to ~20 days, admin effort per case dropped from ~10 hours to ~2 hours, and case traceability went from roughly half-manual to fully automated. Applying that same roughly 80% cut in admin effort to the 20+ hours a week the manual process added per person, the automated system brought that down to around 4 hours a week per person, a savings of about 16 hours a week per team member.

System flow, intake to approval

Use case owner submits
via Intake Assistant
chatbot
↓
Power Automate creates
row in Microsoft List
↓
Researcher Agent 1:
validates against rules
Incomplete or inconsistent↓
Researcher Agent 2:
drafts clarification email
to Outlook drafts
↓
Human reviewer sends
email
↓
Researcher Agent 3:
monitors reply, auto-
updates datastore
↻
Complete↓
Power Automate: fills
control group template +
drafts routing email
↓
Power Automate:
generates presentation
slide from template
↓
Human reviewer sends
routing email to control
groups
↓
Writer Agent: monitors
inbox for No Objection
replies
↓
Datastore updated with
control group sign-off
↓
Case marked ready for
second-line approval

Discovery

I didn't want to design a solution for a process I only understood on paper. Before touching any automation, I spent time inside the manual process itself because I wanted to actually feel what the use case owners and reviewers were dealing with, not just hear about it secondhand. I shadowed the team as they worked existing intake cases, sat in on client calls where requesters described their AI use case, and eventually ran some of those calls myself so I understood the questions a reviewer actually needs answered, not just the ones on the 60-question intake form. I also worked a set of use cases end-to-end on my own, playing the role of an AIEG team member, because I wanted to find where the manual process actually broke down for the people living in it: which fields requesters always left vague, where clarification emails went back and forth two or three times, and where the reviewer had to go digging for context that should have been captured upfront.

Alongside that, I reviewed the history of past intake tickets to look for patterns across the 200+ case backlog, and stayed in constant back-and-forth with my manager and the rest of the AIEG team as the design took shape, checking my assumptions against how they actually made judgment calls. That input shaped which parts of the process could be automated outright (structured intake, clarification follow-ups, first-pass research) and which needed to stay a human call (risk judgment, edge-case exceptions).

Design decisions

The system, AIEG's AI Business Use Case Intake Automation Platform, is a multi-agent workflow built in Copilot Studio:

  • Intake Assistant — collects the initial use case submission through structured guardrails and conversation flows, and structures it against a JSON schema so every request has the same shape regardless of how it was written. A Power Automate flow takes that output and creates a new row in the Microsoft List, which is what triggers the rest of the system.
  • Researcher Agent 1 (validation) — checks the submission against a set of validation rules I wrote myself, based on what I learned diving into the manual process and talking to stakeholders during the first 2–3 weeks of the project.
  • Researcher Agent 2 (clarification drafting) — takes Agent 1's output and drafts the clarification email, which lands automatically in the AIEG drafts folder in Outlook; a human still reviews and sends it.
  • Researcher Agent 3 (reply monitoring) — watches the inbox for the use case owner's reply and automatically updates the datastore with whatever changed. If someone corrected a field, say switching “third-party data” to “internal data,” that update lands in the record automatically instead of someone re-keying it.
  • Writer Agent — comes in after Power Automate has filled out the control group template, drafted the routing email in Outlook, and created the presentation slide from a template (more on that tradeoff below). The Writer Agent then watches the inbox for control group replies from legal and compliance, and when one comes back with “No Objection,” it records that in the datastore automatically instead of someone logging it in a tracker by hand.

The agents are connected through a JSON schema data layer and orchestrated with Power Automate, with SharePoint and Microsoft Lists for case tracking, Word template automation for the final governance writeup, and Adaptive Cards for reviewer interactions.

Agent architecture

JSON datastore /
Microsoft Lists
Power Automate, not agents
Fill control group
template + draft routing
email
→Generate presentation
slide
Copilot Studio agents
Intake AssistantResearcher Agent 1
Validation
Researcher Agent 2
Clarification drafting
Researcher Agent 3
Reply monitoring
Writer Agent
Control group reply
monitoring

One decision I pushed for and had to defend to leadership: the original design called for two more writer agents, one to fill out the control group template email and one to generate the presentation slide. Partway through, I decided deterministic Power Automate logic was the better choice for both, since they're simple, repeatable formatting steps with no judgment involved, and swapped the agents out for Power Automate flows instead. That's why the final architecture has only one Writer Agent, handling inbox monitoring for control group replies, rather than three. More broadly, for well-defined, rule-based steps I chose reliability and lower maintenance cost over the flexibility of an agent we didn't actually need.

I also chose JSON as the canonical data model on purpose, even though it added upfront schema design work, because AIEG's four-project roadmap includes a future migration to ServiceNow, and a clean, portable data model now saves a much more painful re-architecture later.

I also migrated case tracking off a shared Excel file, where multiple people editing it at once regularly collapsed tables and columns and made it easy to overwrite someone else's entry, into Microsoft Lists, which gave the team real auditability and got rid of those failure modes entirely. While I was at it, I renamed every column: the old spreadsheet used the raw, long-form questions straight off the Microsoft Form (things like “What is the name of your use case?”), so I rewrote them as short, direct labels (“Use Case Name”) and checked every rename with each AIEG team member to make sure it was still intuitive to them before finalizing it.

The Microsoft Form itself no longer exists. It's been fully replaced by the Intake Assistant chatbot, which is now how everyone at SMBC submits an AI use case request.

Column rename, old spreadsheet vs. Microsoft Lists

Old Excel column (raw form question)New Microsoft Lists column
What is the name of your use case?Use Case Name
What type(s) of data will this use case process?Data Types
Who is the business owner of this use case?Business Owner
What types of AI does your use case use?AI Types

Sample clarification email (actual system output, from testing)

This is an actual clarification email the Researcher Agent drafted during testing, addressed automatically to the use case owner by name, pulled straight from the Business Owner field the Intake Assistant captured at submission, no one typed the greeting by hand. It also references the specific case number and the specific gaps it found (a vague use case name, KPI targets that showed no expected improvement over baseline), rather than a generic form email.

Risks & tradeoffs

  • Risk: letting an agent make the actual risk-approval call would remove the accountability the whole governance process exists for. Design choice: agents handle intake, research, and clarification, but a human reviewer always makes the final judgment call and was the one who actually sent every email the agents drafted in Outlook, nothing went out automatically. I followed SMBC's own bank governance policies while building the system itself, since a tool meant to enforce governance has to hold itself to the same standard.
  • Tradeoff: deterministic Power Automate logic vs. an LLM agent for the control-group template email and the presentation slide. Two more writer agents would have been more flexible, but less predictable and harder to debug; for formatting steps with no real judgment involved, I chose reliability and lower maintenance cost over flexibility we didn't actually need.
  • Dependency: the Researcher Agent's usefulness depends on how well-organized AIEG's own historical case data is — messy inputs would have produced weak research output, so part of the build was cleaning up that foundation myself (see the Excel-to-Lists migration above).

Testing

Because I'd already run cases manually myself, I had a working sense of where things would go wrong before I ever tested the system — vague submissions, requests that touched multiple risk categories at once, requesters who didn't answer clarification emails, edge cases the original intake form didn't really account for. I put myself in each type of user's shoes (a first-time requester who doesn't know the process, a reviewer trying to move fast, a requester ignoring a clarification email) and built test cases around each, rather than only testing the happy path.

One concrete example: a use case came in named “Generation Chatbot” with KPI targets left at Baseline: 0, Expected: 0, a vague name and no measurable improvement target. Researcher Agent 1 flagged both as incomplete, and Researcher Agent 2 drafted the clarification email shown earlier under Design Decisions that named the exact problems and gave the owner examples of what a valid answer looked like, instead of a generic “please provide more information” message.

Before rollout, I ran a pilot batch of real cases through the system alongside the existing manual process, so I had a direct before/after comparison on the same kind of caseload rather than a projected estimate. That pilot is where the ~39-to-~20-day cycle time, ~10-to-~2-hour admin effort, and traceability numbers came from.

Results

MetricBeforeAfter (pilot)
Average intake cycle time~39 days~20 days
Admin effort per case~10 hours~2 hours
Case traceability / auditability~50% manual100% automated
Requests in active queue200+(same volume, faster throughput)
Manual workload per person20+ hrs/week~4 hrs/week (~80% cut, ~16 hrs/week saved)
AdoptionManual Microsoft FormForm retired; every AI use case at SMBC is now submitted through the Intake Assistant chatbot

Impact chart

Cycle time: 39 to 20 days. Admin hrs/case: 10 to 2. Weekly workload: 20+ to ~4 hrs/person.

What I'd build next

If I'd kept working on this past the internship, the next thing I'd build is a final Evaluator Agent. It would check the whole use case end to end: confirm the submission was complete, confirm “No Objection” had come back from every control group, confirm the presentation slide was finished, and then mark the case complete so it could move on to the second stage of approval automatically, instead of a person doing that final check by hand.

03 · REBA

Cutting client data validation from 15 hours to 30 minutes

RoleAI Development Intern

Project timelineJune to December 2025

FocusClient data validation automation

PlatformsYardi · Entrata · AppFolio

StackExcel/VBA, Office RibbonX Editor, Python (Pandas, openpyxl), LangChain, packaged executables, Azure OpenAI, SQL Server Analysis Services with Cube-connected PivotTables, JSON, SQL, XML, and DAX

Skills

  • AI workflow optimization
  • Technical judgment on AI use
  • Requirements translation
  • Data-driven decision making
  • Scalability thinking
  • Stakeholder adoption

At a glance: I built an Excel-based tool that automatically checked whether a client's data matched correctly between two systems: REBA's internal database (called the Cube) and reports from the property-management software companies actually used (Yardi, Entrata, or AppFolio). Before this, the team checked these numbers by hand, which took hours per client. My tool cut that manual checking effort by about 97%. As an AI Development Intern, I turned REBA's existing manual process into a set of automated checks, built the tool that ran them, tested it thoroughly, and worked with the team to help them adopt it.

Roughly 44–78 hours saved each week

With three to four new clients each week, validation went from 15–20 hours to about 30 minutes per client.

Estimated from the typical number of new clients and time spent validating each one.
Problem

Before onboarding a client, the implementation team checked Cube values against Box Score, Rent Roll, Traffic Detail, and Lease Expiration exports, metric by metric and property by property. Reports differed in layouts, filenames, and property names. Some metrics had to be calculated from several fields, and systems could define the same metric differently, such as whether a future scheduled move-in counted.

A full manual validation typically took 15 to 20 hours across several days, and the effort grew with each new client. The team usually had three to four new clients each week. The new workflow brought validation to roughly 30 minutes.

Discovery

Before building the validators, I spent time learning how the team did the job. I attended Cube training to learn how REBA organized client data and defined its metrics, watched implementation teammates validate client data in real time, and joined client calls to hear what clients looked for. In Q&A sessions, I worked through unclear metric definitions and edge cases. I used what I learned to set requirements for the workbook and each metric-specific check.

Solution design

Keep it in Excel and automate the repetitive work.

I designed a central Validation Workbook so the team could keep working in Excel. It became a reusable template with prebuilt Excel PivotTables that pulled each metric's data from the Cube, plus a custom Validation ribbon with buttons to run checks. For a new client, the team copied the workbook, entered that client's SQL Server Analysis Services connection details (the link to their Cube data), used Pivot Refresh to update every connected table with the new client's data, set reporting filters, and ran checks from the ribbon. I built its controls in Office RibbonX Editor and connected each button to a VBA macro, a small program that runs inside Excel. All 25 metrics per property-management system were in scope for automation. I started with common Unit Analytics metrics and individual reports before tackling less standardized formats.

Copy, connect, refresh, validate became the repeatable onboarding workflow.

Use AI for ambiguity

Azure OpenAI parsed reports such as Yardi exports, dynamically located headers and values, matched properties, and returned structured JSON.

Use Python for correctness

Python handled numeric conversion, metric formulas, Cube-versus-report comparisons, completeness checks, totals, and the final mismatch classification.

Client Validation Process
Before (manual)After (AI-assisted)
Rebuild workbook per clientCopy the reusable template and enter the new client's connection details
Manually refresh Cube dataOne Pivot Refresh button updates every connected pivot at once
Open property-management reportsPoint the tool to the report folder once
Manually find the right tableAI locates tables and headers across inconsistent layouts
Manually match property namesAI matches Cube properties to filenames or sheet names
Manually copy and compare valuesPython calculates, compares, and checks totals
Hope nothing was missedCheck for missing Cube properties before showing results
Typical workflow

What a typical workflow looked like using the automated system.

  1. Copy the workbook with prebuilt pivot tables
  2. Enter the new client's Cube connection
  3. Click Pivot Refresh to update all pivots
  4. Select the folder with the metric check programs (EXE files) and the client's property report folder
  5. Click the relevant metric validation button
  6. Review Cube vs report values and investigate mismatches
Under the hood
01Workbook

Keep Cube-connected PivotTables and metric sheets in one Excel template

02Ribbon + VBA

Pivot Refresh reconnects the client Cube; metric buttons launch VBA macros

03Metric programs (EXEs)

Each metric's VBA macro runs its own packaged Python program

04Azure OpenAI

Locate headers and source values dynamically in reports such as Yardi exports

05Python + output

Compare source values to Cube values; flag mismatches and log both totals in Excel

The Python tools were packaged as executables, so the implementation team did not need to install Python. Mismatched source values stayed visible in Excel for investigation. The team still decided how to handle competing business definitions.

Example output

A property-level unit count comparison, with mismatches visible alongside the Cube and Yardi values.

Example validation table listing properties with Cube Unit Count and Yardi Unit Count. Maple Ridge Commons and Lakeview Terrace show mismatches; the other property counts match. A Grand Total row shows 37,087 Cube units and 37,041 Yardi units.

Featured iteration: completeness

One Entrata test left out 21 properties.

Entrata supplied one workbook with a sheet per property, unlike the separate property files typical of Yardi. In a stress test, the Cube had 57 properties and the Entrata workbook had 43 sheets. Those counts did not need to match one to one. When I sent the large report to AI in a single prompt of roughly 150,000 characters, it returned results for only 36 of the 57 Cube properties. The total was calculated from those incomplete results, with no warning that 21 properties were missing.

What changed

I moved bulk parsing and calculations into Python and gave AI smaller tasks, such as matching property names and finding headers. Before showing a total, the check now had to account for every Cube property, so an incomplete result could not appear complete.

Featured iteration: reusability

The first run after a client switch mixed old and new data.

Rebuilding pivots for each client was unsustainable. Programmatic field creation sometimes dropped fields; Power Query failed, and a DAX approach made a laptop unresponsive. I kept the existing pivots and refreshed them with a macro, checking field-level output against the testers' manual process.

Testing then revealed that the first validation after a client switch could mix old and new properties, even though the second run was correct. The workbook needed to be saved after its previous output was cleared. I built that save-and-rerun step into the macro so the first run no longer depended on a user remembering it.

Testing and rollout

Before handoff, I ran the team's actual workflow more than 150 times against internal test plans for new clients, all three systems, blank rows, inconsistent filenames, missing properties, and stale client data. I compared results to real customer reports and the two testers' manual process. Afterward, I held weekly working sessions on new clients until the implementation team could copy, connect, refresh, and validate independently.

The implementation stakeholders were nontechnical, so I translated how the automation worked into the decisions they made in Excel. In our working sessions, I explained what happened when they ran a check, why a property might need review, what a mismatch meant, and what to investigate next. Clear folder settings, progress feedback, and outputs helped them use the workbook independently.

Outcome

~97%less manual QA effort, from 15–20 hours to roughly 30 minutes
3property-management systems supported

Faster client delivery: validation was no longer the onboarding bottleneck.

What I'd build next

If I continued working on the workbook, I'd add a summary sheet at the front. The detailed comparisons live on separate metric sheets, so the team has to open them one by one to see how a full validation went. I'd give them one place to answer: Did every Cube property get a result? Which metrics have mismatches? Did any checks fail to run?

Each metric would have a row showing properties checked, matches, mismatches, missing results, and processing errors. The team could start with the exceptions and open the detailed sheet only when they needed to investigate. Keeping missing results separate would also prevent an incomplete run from looking successful. A View details link on each row would take the team to that metric's comparison sheet. I made the example below as my own reflection after the project; it was not part of the workbook I delivered. All figures are illustrative, not client results.

Dashboard concept · illustrative dataAI Validation Summary

Example client: Monmouth Properties

Properties checked62 of 62
Mismatches28
Missing results0
Processing errors0
Illustrative results by metric
MetricProperties checkedMatchesMismatchesMissing / errorAction
Total Unit Count62 of 625930View details →
Availability62 of 625930View details →
Market Rents62 of 626020View details →
Move-Ins62 of 626200View details →
Move-Outs62 of 626110View details →
Lease Expirations62 of 626020View details →
Renewal Options62 of 626200View details →
Occupancy Rate62 of 625840View details →
Vacancy Loss62 of 625930View details →
Delinquency Balance62 of 625750View details →
Rent Roll Total62 of 626020View details →
Unit Mix / Square Footage62 of 626110View details →
Concessions62 of 626020View details →
Tenant Contact Info62 of 626200View details →
Total62 of 62840280

Needs attention

Delinquency Balance5 mismatches
Occupancy Rate4 mismatches
Total Unit Count3 mismatches
Availability3 mismatches
Personal concept for a possible next version, created after the project. All counts are sample data.

I'd also add one button to run every metric's validator, so a full client check would not require launching them separately.

About

A little about me.

I'm a Data Science and Business Administration student at Northeastern, graduating in May 2027. I've built AI tools in banking and real estate, and the part I've come to enjoy most usually happens before I build anything. I like running the process myself first, because that's where I find out what actually slows people down.

That's what pulled me toward product management, especially AI products, where deciding what not to automate matters as much as the build.

Outside of work, I captained NU Rangila, a 40-member competitive Bollywood fusion team, after a year as its finance director. When I'm not working, you'll probably find me on a long walk!

Product discoveryAI product strategyWorkflow automationData analysisStakeholder management